我需要从我的 EJB3 应用程序连接到一个 MongoDB 实例,该应用程序在 glassfish 3.0.1 上运行。 Mongo 项目提供了一组驱动程序,我可以在独立的 Java 应用程序中使用它们。
如何在 Java EE 应用程序中使用它们?或者更好的措辞:当我的应用程序在 EJB 容器中运行时,我如何让第 3 方库可用?
目前,我在部署一个 bean 时遇到 java.lang.NoClassDefFoundError 尝试从库中导入:
[#|2010-03-24T11:42:15.164+0100|SEVERE|glassfishv3.0|global|_ThreadID=28;_ThreadName=Thread-1;|Class [ com/mongodb/DBObject ] not found. Error while loading [ class mvs.core.LocationCacheService ]|#]
[#|2010-03-24T11:42:15.164+0100|WARNING|glassfishv3.0|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=28;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: com/mongodb/DBObject|#]
[#|2010-03-24T11:42:15.259+0100|SEVERE|glassfishv3.0|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=28;_ThreadName=Thread-1;|Exception while loading the app
org.glassfish.deployment.common.DeploymentException: java.lang.NoClassDefFoundError: com/mongodb/DBObject
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:171)
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
我尝试将其添加到 NetBeans 项目(属性 -> 库 -> 编译 -> 添加 Jar,启用“包”),我还尝试手动将 jar 文件复制到 $GF_HOME/glassfish/domains/domain1/lib (mysql-connector 已经存在的地方)。
我需要向容器“注册”库吗?通过注释引用它?扩展容器的类路径以包含库?
最佳答案
嗯...你不应该把这个“驱动程序”放在 glassfishv3/glassfish/domains/domain1/lib/ext
中吗?
关于mongodb - 如何在 glassfish 中使用 3rd 方库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507099/