MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

ClassCastException podczas wyszukiwania JNDI dla MongoDB, wewnątrz WAB, z uruchomionym Liberty

Obecnie nie ma możliwości użycia mongodb-2.0 funkcja z aplikacją OSGi.

Wyszukiwanie com.mongodb.DB zasób zwróci ci instancję DBApiLayer , ale to nie problem (ponieważ DBApiLayer rozszerza DB ). Nadal otrzymasz wyjątek ClassCastException, nawet jeśli to zrobisz:

DBApiLayer db = (DBApiLayer) new InitialContext().lookup("java:comp/env/mongodb");

Rzuciłby:

java.lang.ClassCastException: com.mongodb.DBApiLayer incompatible with com.mongodb.DBApiLayer

Powodem tego ograniczenia jest to, że mongodb-2.0 funkcja użyje Classloader firmy Liberty do ładowania klas com.mongodb, a aplikacja OSGi użyje oddzielnego Classloader do ładowania klas com.mongodb, bez względu na to, jak wszystko skonfigurujesz.

Zwykłe aplikacje Java EE mogą robić takie rzeczy:

<library id="MongoLib">
    <file name="${server.config.dir}/lib/mongo-java-driver-2.11.4.jar"/>
</library>

<application name="myApp">
    <classloader commonLibraryRef="MongoLib"/>
</application>

Jednak <osgiApplication> elementy nie mają takiej możliwości. Niestety jedynym rozwiązaniem jest tutaj otwarcie RFE z IBM (lub zagłosowanie na jedną, jeśli RFE już istnieje).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mangusta (mongodb) Alias ​​_id pole

  2. MongoError:getaddrinfo ENOTFOUND undefined undefined:27017

  3. Fragmenty MongoDB i serwery konfiguracyjne na tym samym serwerze?

  4. Modelowanie aplikacji NoSQL Forum za pomocą C# / ASP.net MVC

  5. Jak warunkowo zrestartować łańcuch obietnic od początku?