OSGi如何从远程机器安装捆绑包?

时间:2013-05-04 01:18:14

标签: java osgi bundle fuseesb

我有一个包:

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

以前,bundle和OSGi容器(FUSE ESB Enterprise)位于同一台机器上。我使用以下命令从本地maven存储库安装它:

FuseESB:karaf@root> install file:/home/li/.m2/repository/com/helloworld/Helloworld/1.0.0-SNAPSHOT/Helloworld-1.0.0-SNAPSHOT.jar

现在bundle和OSGi容器位于不同的机器上:

在IP为192.168.122.22的机器中捆绑

如何远程安装此捆绑包?

2 个答案:

答案 0 :(得分:1)

请注意install命令的参数是一个URL。因此,您可以从任何可用URL处理程序的URL进行安装。例如:

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

答案 1 :(得分:1)

对于Fuse ESB或更常见的基于Apache Karaf的服务器,您拥有pax url mvn uri prefix。这允许从mvn存储库安装捆绑包。我建议总是使用这个uri而不是文件。 在您的情况下,命令将是:

安装mvn:com.helloworld / Helloworld / 1.0.0-SNAPSHOT

这个uri甚至比基于文件的uri小一点。但最大的优点是你可以获得完整的mvn分辨率。因此,上面的url将适用于来自本地maven repo的捆绑包,也适用于maven central。

当然,您通常不会将自己的工件部署到maven central。因此,如果您想在公司内部使用此功能,则应设置像Nexus或Archiva这样的maven存储库。然后使用mvn clean deploy将您自己的软件包部署到公司仓库中。当然,这需要你正确设置你的pom,但无论如何你都需要这个项目。

然后,最后一步是设置您的Fuse ESB / Karaf以使用您的公司回购。这是通过将repo uri添加到文件etc / org.ops4j.pax.url.mvn.cfg来完成的。

当然,这比Neil提出的http网址要多得多。这样做的好处是,它可以很好地与你的maven构建过程集成,它将使你的捆绑包mvn uris独立于你的maven repo的位置。当您开始使用功能组合它们时,它还允许您混合自己的包和开源包。