2013-05-04 108 views
0

我有一個束:OSGi如何從遠程機器安裝捆綁軟件?

<groupId>com.helloworld</groupId> 
<artifactId>Helloworld</artifactId> 
<version>1.0.0-SNAPSHOT</version> 

以前,束和OSGi容器(FUSE ESB企業)處於相同的機器。我用下面的命令從本地的倉庫安裝它:

FuseESB:[email protected]> install file:/home/li/.m2/repository/com/helloworld/Helloworld/1.0.0-SNAPSHOT/Helloworld-1.0.0-SNAPSHOT.jar 

現在的包和OSGi容器在不同的機器:

在一臺機器

捆綁其中IP爲192.168.122.22

如何我可以遠程安裝這個軟件包嗎?

回答

1

請注意,install命令的參數是一個URL。因此,您可以從任何您可以使用URL處理程序的URL進行安裝。例如:

install http://www.example.com/helloworld-1.0.jar

+0

我已更新我的問題。是否可以在容器外運行一個包? – 2013-05-30 17:11:02

1

保險絲ESB或更一般的Apache Karaf的服務器你有pax url mvn uri prefix。這允許從mvn存儲庫安裝捆綁軟件。我建議總是使用這個uri而不是文件。 在你的情況下,命令將是:

安裝MVN:com.helloworld /的Helloworld/1.0.0-SNAPSHOT

這個URI甚至比基於文件小一點的。然而,最大的好處是你可以獲得完整的mvn分辨率。所以這個上面的url將適用於你本地maven repo的捆綁包,也可以來自maven central。

當然,您通常不會將自己的工件部署到maven中心。所以如果你想在公司內部使用這個,你應該建立一個像Nexus或Archiva這樣的Maven倉庫。然後,使用mvn clean deploy將您自己的捆綁包部署到您的公司庫存中。當然這需要你正確設置你的pom,但是對於任何大型項目你都需要這個。

然後,最後一步需要設置您的Fuse ESB/Karaf以使用您的公司回購。這是通過將repo uri添加到文件etc/org.ops4j.pax.url.mvn.cfg中完成的。

當然這比Neil提出的http url要多一點點。這樣做的好處是,這將與你的Maven構建過程很好地結合在一起,它將使你的bundle mvn uris獨立於你的maven repo的位置。當您開始使用功能進行組合時,它還將允許您混用自己的軟件包和開源軟件包。

+0

+1,如果使用maven,我推薦這種方法。在我看來,「安裝文件://」應該僅限於開發環境。 – techuser 2013-05-06 03:15:04

+0

@Christian如果從遠程存儲庫安裝捆綁軟件,Fuse ESB是否先下載它然後在本地安裝它? – 2013-05-30 06:36:41

+0

不知道保險絲ESB在那裏是不同的。我只能解釋Apache Karaf是如何做到的。在Apache Karaf 2.x中,您從回購站加載的軟件包不會在本地緩存。即將推出的Apache Karaf 3將使用您的本地Maven存儲庫作爲緩存。 – 2013-05-30 07:24:29