2011-12-21 6 views
4

OSGi宣言型サービスを使用してフラグメント内にコンポーネントを作成すると、このコンポーネントはアクティブにならず、ホストバンドルのコンポーネントがアクティブになります。 何か不足していますか?私のフラグメントには、ホストバンドルのシンボリック名のための適切なmeta-infファイルエントリがあります。フラグメント内のコンポーネントがアクティブ化されていない

私は、このようにCompoNetを宣言

バンドルフラグメントが開始されることはありませんので
@Component(immediate = true) 
+0

私はまた、断片中componetsを指定bnd.bdnを有します。私はbndファイルの断片compnentsのために何かを指定する必要がありますか? – Questionevrything

答えて

6

、彼らの唯一の解決、宣言型サービスコンポーネントが有効化されることはありません。この仕様では、特に、(アノテーションが変換される)Service-Componentヘッダがフラグメントで無視されることが記述されています。

宣言型サービスはフラグメントで機能するようにすることができますが、フラグメント内のXMLファイルをホストのService-Componentヘッダーから参照することによってのみ行うことができます。ホストバンドルにフラグメントの内容を伝えることは、残念なことに、あなたが後にしていたアーキテクチャーパターンの逆である可能性があります。 SCRアノテーションを使用してそのような配置が可能かどうかはわかりません。 1つの選択肢は、青写真を使ってフラグメントからサービスを宣言的に登録することです。 http://aries.apache.org/documentation/tutorials/blueprinthelloworldtutorial.htmlにある青写真のチュートリアルがあります。

-

Enterprise OSGi in Action: www.manning.com/cummins

+0

ご返信ありがとうございます。私は、サービスコンポーネントを断片化しておくことで正しいデザインをしていないと思います。 – Questionevrything

+0

最初にフラグメントでこれをしようとしている理由を理解すると役に立ちます。フラグメントには非常に限られたユースケースしかありません。そのため、使用の道を導いた元の問題を説明する質問を投稿するほうがよいでしょう。多分もっと良い解決策を見つけることができます。 –

関連する問題