5

bundle-context.xml ファイルを使用して Bean を初期化する OSGi バンドルがあります。

<bean id="myBean" class="test.MyClass">
    <property name="output" value="test"/>
</bean>

Bean インスタンスを取得する必要があるファクトリ クラスがあります。非 OSGI の世界では、コンテキストを初期化し、Bean へのハンドルを取得するために、常に次のようにしています...

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bundle-context.xml");
MyClass bean = (MyClass) applicationContext.getBean("myBean");

ただし、OSGI (FuseESB 4.2、Servicemix4) では、コンテナーが bundle-context.xml ファイルを自動的に読み込み、Spring コンテキストを初期化します。(上記のコードを使用して) コンテキストを明示的に読み込むと、2 つのコンテキストが作成されます (これは悪いことです)。では、同じコンテキスト/Bean へのハンドルを取得する適切な方法は何ですか?

4

1 に答える 1

4

コンテキストをロードするのはSpring Dynamic Modulesだと思います-したがって、これを自分で行うべきではありません。Spring DM のドキュメントを見てください。これは役に立ちます。

Spring DM は、アプリケーション コンテキストを OSGi サービスとして公開します。ここの説明を見て、推奨事項に従ってください。

以下の私のコメントも参照してください。

于 2010-09-27T14:39:14.473 に答える