私はfelix osgi + ds + weld cdi + pax cdiを使用しています。私は、これはDSのxmlファイルを生成する近代的な方法である知っているように、私はMavenのバンドル・プラグインを使用ds.xmlファイルを生成するにはOSGI DS:xmlファイルなしの宣言型サービス
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ServiceScope;
@Component(
immediate = false,
property={"label=stub"},
scope=ServiceScope.PROTOTYPE
)
public class ServiceImpl implements ServiceI{
@Override
public String getMyString() {
Component t=null;
return "This is my string:"+t;
}
}
:だから私は、次のサービスがあります。だからすべてがうまくいくようです。 Ds xmlファイルはmavenプラグインによって生成され、OSGI-INFに入れられます。このds.xmlファイルを削除すると、felixの動作を確認することにしました。だから私はこのXMLファイルを削除し、osgiキャッシュをきれいにしました。私は結果に非常に驚いていました。サービスはまだ機能し、正常に注入されます。私はただメッセージを受け取る:コンポーネント記述子エントリ 'OSGI-INF/.... xml'が見つかりません。私は@Componentアノテーションがコンパイル後に削除されると思った。だから私はosgiにorg.osgi.service.componentバンドルをインストールしなかったのです。しかし、すべて正常に動作し、すべてのバンドルが解決されます。
ので質問 -
- はなぜDSサービスがxmlファイルなしで動作しますか?
- なぜ私のosgiフレームワークは
org.osgi.service.component.annotations.Component
を必要としませんか?フェリックスバンドルはパッケージですが、org.osgi.service.component.annotations.Component
アノテーションはありません。
ありがとうございます。私は3回チェックした!私は瓶の中で削除しました。証拠は非常に簡単です - osgiフレームワークは私に警告を与えました。あなたは自分で試すことができます。 –
私は2004年からOSGiを使っていますが、私は試してみる必要はありません。正確に何が間違っているのかわかりませんが、私はDSがXMLなしでは動作しないことを保証します。 –
OSGIが私にそのメッセージを伝えているのはなぜですか? –