MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

ClassCastException по време на JNDI търсене за MongoDB, вътре в WAB, изпълняващ Liberty

В момента няма начин да използвате 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 функцията ще използва Classloader от Liberty за зареждане на класове com.mongodb, а OSGi приложение ще използва отделен Classloader за зареждане на класове com.mongodb, без значение как конфигурирате нещата.

Нормалните Java EE приложения могат да правят неща като това:

<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> елементите нямат тази способност. За съжаление, единственото решение тук е да отворите RFE с IBM (или да гласувате за такъв, ако вече съществува RFE за това).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Схема и поддокументи в mongoose.js

  2. Вземете и добавете/актуализирайте многостепенен вграден/вложен MongoDB документ с помощта на C#

  3. Как да изчислим полето средно на ден с помощта на MongoDB?

  4. Приложете за всички класове BsonIgnoreExtraElements

  5. Филтриране на стойности в долари с mongodb