どのXMLファイルを使用しますか? OSGiバンドルにはどこに入れますか (META-INF/spring、OSGi-INF)?これらのプラクティスで、 は、Gemini以外の実装である のBlueprintと組み合わせてバンドルを再利用できますか?
ジェミニ青写真が均等にこれらのディレクトリの両方を扱いますが、OSGI-INF/blueprint/*.xml
は、一般的なOSGiの青写真仕様で指定された唯一のものです。
Aはthe Gemini Blueprint documentationから練習を示唆している:
[...] は練習コンベンションモジュール名-のcontext.xml によって名付けられ、少なくとも2つのファイルにアプリケーションコンテキストのコンフィギュレーション を分割することです提案modulename-osgi-context.xmlがあります。 modulename-context.xmlファイル には、 OSGiの知識とは関係なく、通常のBean定義が含まれています。 modulename-osgi-context.xmlファイルには、OSGiサービスをインポートおよびエクスポートするためのBean の定義が含まれています。 Gemini Blueprint OSGiスキーマを、Spring 'beans'名前空間の代わりにトップレベルの 名前空間として使用することもできます(ただし、これは必須ではありません)。( )
私はこれを試して、うまくいきます。私は自分のプロジェクトの1つにGemini Blueprintを使用しています。私の豆とその関係を定義するファイルMETA-INF/spring/context.xml
と、OSGiサービスとしてどのBeanを公開/インポートするかを定義するMETA-INF/spring/osgi-context.xml
があります。context.xml
は
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="myOrdinarySpringBean" class="com.acme.impl.Foo"/>
</beans>
のように見え、まったく青写真/ OSGiの構成との定期的な普通のSpringアプリケーションコンテキストです。それを動作させるための<osgi:service .../>
:あなたは、もちろん、ここにも<beans>
名前空間とルート要素を使用することができますが、あなたはそうのようなサービスをxmlns:osgi
を定義し、接頭辞する必要があると思います
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<service id="myOsgiService" ref="myOrdinarySpringBean" interface="com.acme.Foo"/>
</blueprint>
よう
osgi-context.xml
が見えます。私の場合、ジェミニ独自の青写真のものは必要ないので、この青写真の一般的な設定に満足しています。同様に、私は
<blueprint>
ネームスペースを
context.xml
にも使用できますが、この特定のアプリケーションは古いものでOSGiに移植されています。
順番に別のアプリケーションが
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<reference id="myOrdinarySpringBeanImportedFromOsgi" interface="com.acme.Foo" availability="mandatory"/>
</blueprint>
ようosgi-context.xml
独自のを持っており、この時点ではない、しかし、独自のcontext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="myOrdinaryOtherSpringBean" class="com.acme.impl.Bar">
<property name="foo" ref="myOrdinarySpringBeanImportedFromOsgi"/>
</bean>
</beans>
などを持っている可能性があり、実際にはあまり気にしませんでした
myOrdinarySpringBeanImportedFromOsgi
がOSGiサービスからインポートされるか、同じアプリケーションコンテキスト内の通常の通常のSpring Beanとして定義されます。
私は双子座の青写真の実装から自分を切り離すにしたい場合は、これらのMETA-INF/osgi-context.xml
構成は自明OSGI-INF/blueprint/
に移動することができますが、時間のために、私は、ディレクトリ構造の混乱を避けるために、同じ場所で二つの半分を維持することを好むされています。
JBoss Fuseでは動作しないと思います。 Aries OSGi xmlでインポートされたサービスは、Spring DM xmlでは認識できません。 – sancho21
同じバンドルからサービスを公開して使用することはできないと思います。これは青写真/春の相互運用性の問題ではありません。同様の問題は、春や単なる青写真でも起こります。 – mjmeno