OSGi コンテナーに 2 つの同一のバンドルまたは同じバンドルを 2 回インストールしたいと考えています。私が使用している 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>
ビーン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 の 3 つのホストがあります。
FUSE ESB OSGi コンテナーは Host3 にインストールされます。Host1 と Host2 の両方で HelloWorld などのサービスを実行する必要があります。そして、このサービスは Host3 にある FUSE ESB に登録されます。
そのため、同じバンドルを FUSE ESB に 2 回登録する必要があります。
これが私の質問です:
あるホストで HelloWorld バンドルを実行し、それを別のホストの FUSE ESB に登録するなど、コンテナーの外部でバンドルを実行することは可能ですか? そして、それを行う方法は?私が以前に行った実験は、サービス バンドルを同じマシン上の FUSE ESB に登録することでした。
FuseESB:karaf@root> インストール ファイル:/home/li/Documents/Java/HelloWorldBundle/target/HelloWorldBundle-1.0.0-SNAPSHOT.jar
2.既存のmavenプロジェクトを変更して、新しいmavenプロジェクトを作成せずに再度インストールできるようにする方法は?