sql >> Database teknologi >  >> NoSQL >> MongoDB

ClassCastException under JNDI-opslag til MongoDB, inde i WAB, der kører Liberty

I øjeblikket er der ingen måde at bruge mongodb-2.0 funktion med en OSGi-applikation.

Søger en com.mongodb.DB ressource vil returnere dig en forekomst af DBApiLayer , men det er ikke problemet (da DBApiLayer udvider DB ). Du ville stadig få en ClassCastException, selvom du gjorde dette:

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

Ville smide:

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

Årsagen til denne begrænsning er, at mongodb-2.0 funktion vil bruge en Classloader fra Liberty til at indlæse com.mongodb-klasser, og en OSGi-applikation vil bruge en separat Classloader til at indlæse com.mongodb-klasser, uanset hvordan du konfigurerer tingene.

Normale Java EE-applikationer kan gøre ting som dette:

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

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

Dog <osgiApplication> elementer har ikke den evne. Desværre er den eneste løsning her at åbne en RFE med IBM (eller stemme op, hvis der allerede findes en RFE for dette).




  1. Hvordan kan jeg få de laveste værdier i en MongoDB-samling?

  2. node.js kan ikke finde modulet 'mongodb'

  3. Fungerer indsættelse af flere dokumenter i en Meteor Collection det samme som ren mongodb?

  4. MongoDB Collection Structure Performance