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).