MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

ClassCastException trong khi tra cứu JNDI cho MongoDB, bên trong WAB, chạy Liberty

Hiện tại không có cách nào để sử dụng mongodb-2.0 tính năng với một ứng dụng OSGi.

Tìm kiếm com.mongodb.DB tài nguyên sẽ trả lại cho bạn một phiên bản của DBApiLayer , nhưng đó không phải là vấn đề (vì DBApiLayer mở rộng DB ). Bạn vẫn sẽ nhận được ClassCastException ngay cả khi bạn đã làm điều này:

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

Sẽ ném:

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

Lý do cho hạn chế này là mongodb-2.0 tính năng sẽ sử dụng Classloader từ Liberty để tải các lớp com.mongodb và ứng dụng OSGi sẽ sử dụng một Classloader riêng để tải các lớp com.mongodb, bất kể bạn định cấu hình mọi thứ như thế nào.

Các ứng dụng Java EE bình thường có thể làm những việc như sau:

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

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

Tuy nhiên, <osgiApplication> các phần tử không có khả năng đó. Thật không may, giải pháp duy nhất ở đây là mở một RFE với IBM (hoặc ủng hộ một RFE nếu đã tồn tại một RFE cho việc này).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách viết truy vấn union trong mongoDB

  2. Cách giới hạn số lượng tài liệu lồng nhau được hiển thị trong MongoDB

  3. Có tùy chọn nào để giới hạn việc sử dụng bộ nhớ mongodb không?

  4. cách thêm ng-model vào các trường văn bản đầu vào được tạo động

  5. Cách trừ hai ngày giờ trong mongodb