我想在 OSGi 容器中安装两个相同的包或相同的包两次。我使用的 OSGi 容器是 FUSE ESB。这是捆绑包信息:
pom.xml:
<groupId>com.helloworldbundle</groupId>
<artifactId>HelloWorldBundle</artifactId>
<version>1.0.0-SNAPSHOT</version>
蓝图:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="helloworldbundlecopybean"
class="com.helloworldbundle.HelloWorld"
init-method="init" destroy-method="destroy">
</bean>
</blueprint>
第一次安装成功。当我尝试再次安装它时,它失败了。然后我复制项目并修改它:
将项目文件夹名称更改为 HelloWorldBundleCopy
将工件更改为
<artifactId>HelloWorldBundleCopy</artifactId>
将 bean id 更改为
<bean id="helloworldbundlecopybeancopy"
但我仍然无法安装修改后的捆绑包:
Error executing command: Error installing bundles:
Unable to install bundle /home/li/Documents/Java/HelloWorldBundleCopy/target/HelloWorldBundleCpoy-1.0.0-SNAPSHOT.jar
更新我的问题:
这是我的场景:
我有三台主机:Host1、Host2 和 Host3
FUSE ESB OSGi 容器安装在 Host3 中。我需要在 Host1 和 Host2 上运行一个服务,例如 HelloWorld。该服务在 Host3 上的 FUSE ESB 上注册。
这就是为什么我需要用 FUSE ESB 注册同一个包两次。
这是我的问题:
是否可以在容器外运行捆绑包,例如在一台主机上运行 HelloWorld 捆绑包,但将其注册到另一台主机上的 FUSE ESB?怎么做?我之前做过的实验是通过以下方式在同一台机器上注册一个服务包到 FUSE ESB:
FuseESB:karaf@root> 安装文件:/home/li/Documents/Java/HelloWorldBundle/target/HelloWorldBundle-1.0.0-SNAPSHOT.jar
2.如何修改现有的maven项目,重新安装而不创建新的maven项目?