sql >> データベース >  >> NoSQL >> MongoDB

リバティを実行しているWAB内のMongoDBのJNDIルックアップ中のClassCastException

    現在、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がすでに存在する場合は賛成票を投じます)。




    1. 複数のフィールドでのNode.jsとMongooseの正規表現クエリ

    2. ServiceStackエンティティIDフィールド名

    3. モンゴ-ルビー接続の問題

    4. レコードを月ごとにグループ化し、カウントします-Mongoose、nodeJs、mongoDb