2013-05-04 70 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