私は現在、JBoss 7.1 上の JavaEE 6.0 に基づくサーバー部分と Eclipse RCP 3.7 に基づくクライアントを持つアプリケーションを開発しています。
共有 API 用の単純な OSGi パッケージの場合、バージョンと依存関係の違いにより、すでに問題が発生しています。この APIには、バンドル アクティベーター用に「org.osgi.framework.」が必要であり、slf4j ロギング API 用に「org.slf4j.」が必要です。
現在、私のクライアントは非常にうまく機能していますが、JBoss は OSGi インポートの期待されるバージョンと slf4j のインポートが適合しないことを教えてくれます...
Eclipse と JBoss の間で OSGi バンドルを共有するためのベスト プラクティスはありますか? 単純なインポートおよびエクスポート宣言に戻る必要がありますか?それとも Require-Bundle を使用できますか? JBoss を実行するには、JBoss 用の互換性バンドルを作成する必要がありますか? ここで進める最善の方法は何ですか?
更新 Import-Package のみを使用して問題を解決しました。org.osgi.framework のような依存関係については、それが問題ではないことを説明するために version="0.0" を使用します。:-( あまり安全ではありませんが、現在、別のオプションが見つかりません。より良い方法はありますか?
UPDATE 2 OSGi フレームワークの正しいバージョンを実装するためにも注意を払う必要があります。JBoss 7.1.x には OSGi 4.2 のみが実装されており、タイプセーフなサービス取得はサポートされていません。