我想在 WAB/OSGi 中使用 JNDI 查找 MongoDB,运行 Liberty Profile。
import com.mongodb.DB;
@WebServlet("/MongoServlet")
public class MongoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
DB db = (DB) new InitialContext().lookup("java:comp/env/mongodb");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
JNDI 查找给出以下异常。
[ERROR ] SRVE0777E: Exception thrown by application class 'com.osgi.jndi.web.MongoServlet.doGet:57'
java.lang.ClassCastException: com.mongodb.DBApiLayer incompatible with com.mongodb.DB
com.mongodb.DBApiLayer is subclass of com.mongodb.DB.
我相信 ClassCastException 是因为我的应用程序和 OSGi 引导类加载器使用了不同的类加载器。但是,我不知道如何解决它。