MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

ClassCastException selama pencarian JNDI untuk MongoDB, di dalam WAB, menjalankan Liberty

Saat ini tidak ada cara untuk menggunakan mongodb-2.0 fitur dengan aplikasi OSGi.

Mencari com.mongodb.DB resource akan mengembalikan Anda sebuah instance dari DBApiLayer , tapi bukan itu masalahnya (karena DBApiLayer memperluas DB ). Anda masih akan mendapatkan ClassCastException bahkan jika Anda melakukan ini:

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

Akan melempar:

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

Alasan pembatasan ini adalah karena mongodb-2.0 fitur akan menggunakan Classloader dari Liberty untuk memuat kelas com.mongodb, dan aplikasi OSGi akan menggunakan Classloader terpisah untuk memuat kelas com.mongodb, tidak peduli bagaimana Anda mengonfigurasinya.

Aplikasi Java EE normal dapat melakukan hal-hal seperti ini:

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

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

Namun, <osgiApplication> elemen tidak memiliki kemampuan itu. Sayangnya, satu-satunya solusi di sini adalah membuka RFE dengan IBM (atau memilih salah satu jika RFE sudah ada untuk ini).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Temukan nilai yang diteruskan yang tidak cocok

  2. Spring Data - pengindeksan MongoDB DBRef

  3. Pengecualian Mongodb, MongoCursorException' dengan pesan '$ operator membuat objek terlalu besar Apa artinya?

  4. Kueri grup luwak di node.js / rute ekspres

  5. Menemukan nilai tertinggi dari sub-array dalam dokumen