Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGi如何从远程机器安装捆绑包?_Java_Osgi_Bundle_Fuseesb - Fatal编程技术网

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

Java OSGi如何从远程机器安装捆绑包?,java,osgi,bundle,fuseesb,Java,Osgi,Bundle,Fuseesb,我有一个包裹: <groupId>com.helloworld</groupId> <artifactId>Helloworld</artifactId> <version>1.0.0-SNAPSHOT</version> 现在,捆绑包和OSGi容器位于不同的计算机上: 捆绑在IP为192.168.122.22的机器中 如何远程安装此捆绑包?请注意,install命令的参数是URL。因此,您可以从具有URL处理程序的任何U

我有一个包裹:

<groupId>com.helloworld</groupId>
<artifactId>Helloworld</artifactId>
<version>1.0.0-SNAPSHOT</version>
现在,捆绑包和OSGi容器位于不同的计算机上:

捆绑在IP为192.168.122.22的机器中


如何远程安装此捆绑包?

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


安装http://www.example.com/helloworld-1.0.jar

对于Fuse ESB或更通用的基于Apache Karaf的服务器,您拥有。这允许从mvn存储库安装捆绑包。我建议总是使用这个uri而不是文件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将您自己的捆绑包部署到您的公司repo中。当然,这将要求您正确设置pom,但对于任何较大的项目,您都需要这样做

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


当然,这比Neil提出的http url要多做一些工作。其优点是,这将与maven构建过程很好地集成,并使捆绑包mvn URI独立于maven repo的位置。它还允许您在开始使用功能组合自己的捆绑包和开源捆绑包时混合使用

+1,如果使用maven,我建议使用这种方法。在我看来,“安装文件://”应该限制在开发环境中。@如果从远程存储库安装捆绑包,Fuse ESB是否先下载它,然后在本地安装?不知道Fuse ESB在那里是否不同。我只能解释阿帕奇·卡拉夫是如何做到这一点的。在ApacheKaraf2.x中,从repo加载的包不会在本地缓存。即将推出的Apache Karaf 3将使用您的本地maven存储库作为缓存。@ChristianSchneider您的意思是从远程存储库安装的捆绑包将在与运行Karaf的主机不同的主机上运行?当然,捆绑包在本地Karaf容器中运行。我只是指缓存。因此,在2.x中,每当您在Karaf 3中缓存捆绑包时,必须从远程存储库中加载捆绑包。我更新了我的问题。可以在容器外运行捆绑包吗?
FuseESB:karaf@root> install file:/home/li/.m2/repository/com/helloworld/Helloworld/1.0.0-SNAPSHOT/Helloworld-1.0.0-SNAPSHOT.jar