3

私はJBossAS7を使用しています。私のアプリケーションには、いくつかのOSGIモジュールとOSGI以外の大きな部分があります。JNDIを介して非osgiサブシステムでosgiサービスをルックアップしようとしましたが、JNDIコンテキストに存在しません。JBOSS 7でも同様の問題が見つかりました-OsgiバンドルはJNDITREEに存在しませんが、解決策は見つかりませんでした。JBossチームがこの機能をまだ実装していない場合、どうすればこの問題を解決できますか?

サービスをJNDIコンテキストに手動で追加しようとしましたが、JNDIコンテキストが読み取り専用であるため、例外が発生しました(https://issues.jboss.org/browse/AS7-421による)

4

1 に答える 1

6

まだ完全には統合されていません(ステータスを確認するためにJBOSGI-81を監視します)が、Apache AriesJNDIOSGiバンドルを取得してJBossAS7にデプロイすることでこれを機能させることができると思います。

これを行うには、デプロイして開始します

JNDIバンドルは、NamingManagerで一部の統計を設定できないと文句を言いますが、AS7 JNDIがそれを処理するため、無視できます。上記のバンドルをインストールすると、次のことができるようになります。

osgi:service/org.foo.SomeInterface

osgi:servicelist 

タイプルックアップ...たとえば、フレームワークによって登録されているスタートレベルサービスをルックアップするために、次のことを試すことができます。

osgi:service/org.osgi.service.startlevel.StartLevel

AS7 7.1.2で試してみましたが、うまくいきました...

探しているエンティティが別のAS7/MSCモジュールまたはOSGiバンドルで定義されたインターフェースを実装している場合、このインターフェースにキャストできるようにするには、コンシューマーがそれを可視化できるようにする必要があります。OSGiの世界では、パッケージをインポートするだけですが、AS7モジュール(warファイルなど)では、Dependenciesマニフェストヘッダーを追加することでこれを実現できます。

于 2012-05-10T16:04:19.450 に答える