現在、mongodb-2.0
を使用する方法はありません OSGiアプリケーションの機能。
com.mongodb.DB
を検索する リソースはDBApiLayer
のインスタンスを返します 、しかしそれは問題ではありません(DBApiLayer
以降) DB
を拡張します )。これを行った場合でも、ClassCastExceptionが発生します:
DBApiLayer db = (DBApiLayer) new InitialContext().lookup("java:comp/env/mongodb");
投げる:
java.lang.ClassCastException: com.mongodb.DBApiLayer incompatible with com.mongodb.DBApiLayer
この制限の理由は、mongodb-2.0
機能は、LibertyのClassloaderを使用してcom.mongodbクラスをロードし、OSGiアプリケーションは、構成方法に関係なく、別のClassloaderを使用してcom.mongodbクラスをロードします。
通常のJavaEEアプリケーションは、次のようなことを実行できます。
<library id="MongoLib">
<file name="${server.config.dir}/lib/mongo-java-driver-2.11.4.jar"/>
</library>
<application name="myApp">
<classloader commonLibraryRef="MongoLib"/>
</application>
ただし、<osgiApplication>
要素にはその機能がありません。残念ながら、ここでの唯一の解決策は、IBMでRFEを開くことです(または、RFEがすでに存在する場合は賛成票を投じます)。