異なるOSGiバンドルにJSFカスタムコンポーネントを含めることはできますか?
質問
OSGiとJSFを一緒に使用した人はいますか?
JSFは、クラスローダーマジックを使用してカスタムコンポーネントを見つけるためです。チュートリアル(エンファシスマイニング)から:
この構成ファイルは終了します META-INF / faces-config.xmlである これを表す.jarファイル 成分。 JSFはそのようなものを探します 各.jarファイルのファイル名 実行時にロードされる( .warファイル用のWEB-INF / libディレクトリ) そして、それらのそれぞれを使用して 構成。このようにして、複数の コンポーネントの.jarファイルを結合できます 1つのWebアプリケーションに、そしてすべての 各.jarに記述されているコンポーネント アプリケーションで利用可能になります。
JSFカスタムコンポーネントをOSGiバンドルとして(つまり、カスタムコンポーネントがJSFランタイムとは異なるOSGiバンドルに含まれているように)、JSFが実行時にこれらを見つけることができるようにしたい
誰かが似たようなことをしましたか?
解決
次の方法で可能です:
- Web osgiバンドルには「Require-Bundle」が必要です。コンポーネントを含むバンドルを指すMANIFEST.MFで
- コンポーネントjarには、META-INFおよびJSF関連ファイル(およびコンポーネントの標準パッケージ)があるMETA-INFのサブパッケージを含むExport-Packageが必要です。例:Export-Package:META-INF、META-INF.resources ...
maven-bundleプラグインを使用する場合は、META-INFおよびサブパッケージをエクスポートするためにアポストロフィと同等のものを使用する必要があります。例:
<Export-Package>
a.b.c,
'=META-INF',
'=META-INF.resources',
...
</Export-Package>
JSF Spec 2.2では、JSF-OSGI関係に関する部分があるかもしれません。進行状況を確認するには、 http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942
他のヒント
それがあなたの問題に正確に答えているかどうかはわかりませんが、春とosgi の相互作用、特にこの具体的な回答では、依存関係とクラスパスはMANIFEST.MFにバンドルされています。
このスレッドは、 OSGiのSpring Dynamic Modules(DM)に関するチュートリアルの更新にもつながります。サービスプラットフォームも興味深いかもしれません。