我需要從我的EJB3應用程序連接到運行在glassfish 3.0.1上的MongoDB實例。 Mongo項目提供了一組驅動程序,我可以在獨立的Java應用程序中使用它們。如何在glassfish中使用第三方庫?
我將如何在Java EE應用程序中使用它們?或者更好的措辭:當我的應用程序運行在EJB容器中時,如何使第三方庫可用?
目前,我得到部署時java.lang.NoClassDefFoundError一個bean是 ,嘗試從庫中導入:
[#|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,啓用'Package'),我也嘗試手動將jar文件複製到$ GF_HOME/glassfish/domains/domain1/lib(其中mysql連接器已駐留)。
我是否需要在容器中「註冊」庫?通過註釋引用它?擴展容器的類路徑以包含庫?
@帕斯卡爾:謝謝!我以爲我也嘗試過這個。無論如何,它就像一種魅力。這是一個好方法嗎?這不應該是部署的一部分嗎? – Hank 2010-03-25 17:39:47
@Hank我不知道如何使用MongoDB驅動程序,但如果容器未使用它(如JDBC驅動程序將創建連接池),也不在域的應用程序之間共享,那麼您應該可能打包它在你的應用程序中。 – 2010-03-25 18:45:06