ラベル OSGi の投稿を表示しています。 すべての投稿を表示
ラベル OSGi の投稿を表示しています。 すべての投稿を表示

2010年9月24日金曜日

OSGi環境におけるgetResourceAsStream

OSGi環境では、あるバンドルに含まれるリソースのURLを取得(getURL)すると、正しくImport/Exportの設定がされていれば
bundle://11.0:1/jp/sample/service/resources/jaxb.index
のようなURLで表現される。
したがって、他のバンドルからリソースにアクセスしようとした場合でも、Import/Exportの設定さえ正しければ取得することができる。

OSGi環境におけるLinkageError

OSGi環境でWebサービスを構築している際、以下のようなエラーメッセージが発生した。
java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "javax/xml/namespace/QName"
JDKで提供されているはずのjavax.xml.namespace.QNameが異なる??
googleで調べてみると、以下のような解説を発見。
http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html
JDKで提供されているようなクラスであっても、ライブラリ?(OSGiの場合はバンドル)ごとに参照先が異なると発生しうる現象のよう。
で、自分の環境をよくよくみてみると、ひとつのバンドルのPrivate-Packageにjavax.xml.namespaceを含んでしまっていることが判明。これをImport-Packageに変更することで解決された。