वर्तमान में 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
सुविधा com.mongodb कक्षाओं को लोड करने के लिए लिबर्टी से एक क्लासलोडर का उपयोग करेगी, और एक OSGi एप्लिकेशन com.mongodb कक्षाओं को लोड करने के लिए एक अलग क्लासलोडर का उपयोग करेगा, चाहे आप चीजों को कैसे भी कॉन्फ़िगर करें।
सामान्य जावा ईई अनुप्रयोग इस तरह से काम कर सकते हैं:
<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 पहले से मौजूद होने पर अपवोट करना है)।