0

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 回登録する必要があります。

これが私の質問です:

  1. あるホストで HelloWorld バンドルを実行し、それを別のホストの FUSE ESB に登録するなど、コンテナーの外部でバンドルを実行することは可能ですか? そして、それを行う方法は?私が以前に行った実験は、サービス バンドルを同じマシン上の FUSE ESB に登録することでした。

    FuseESB:karaf@root> インストール ファイル:/home/li/Documents/Java/HelloWorldBundle/target/HelloWorldBundle-1.0.0-SNAPSHOT.jar

2.既存のmavenプロジェクトを変更して、新しいmavenプロジェクトを作成せずに再度インストールできるようにする方法は?

4

1 に答える 1