GWT與JPAGWT與JPA - 沒有持續性提供
有我在Eclipse工作區的兩個項目,讓他們的名字:
-JPAProject -GWTProject
JPAProject包含JPA配置的東西(持久性.xml,實體類等)。 GWTProject是一個示例GWT項目(取自官方的GWT教程)。
兩個項目都單獨運作良好。也就是說,我可以在JPAProject中創建EMF(EntityManagerFactory)並從數據庫中獲取實體。 GWTProject也能正常運行,我可以運行它,在瀏覽器中填充字段文本並獲得響應。
我的目標是從GWTProject調用JPAProject來獲取實體。但問題是,調用DAO的時候,我得到以下異常:
[WARN] Server class 'com.emergit.service.dao.profile.ProfileDaoService' could not be found in the web app, but was found on the system classpath
[WARN] Adding classpath entry 'file:/home/maliniak/workspace/emergit/build/classes/' to the web app classpath for this session
[WARN] /gwttest/greet
javax.persistence.PersistenceException: No Persistence provider for EntityManager named emergitPU
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)
at com.emergit.service.dao.profile.JpaProfileDaoService.<init>(JpaProfileDaoService.java:19)
at pl.maliniak.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:21)
...
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
[ERROR] 500 - POST /gwttest/greet (127.0.0.1) 3812 bytes
我想,在一開始的警告可現在被省略。
你有什麼想法嗎?我想我錯過了一些基本觀點。所有提示都非常感謝。
更新:我的持久性提供良好定義的,JPA項目本身運作良好。
我想這也是類路徑相關的問題。在運行GWT項目時,WEB-INF/lib
中只有gwt-servlet.jar
。
您是否認爲使用自定義Ant文件構建整個事物是唯一的解決方案(即,將JPA項目製作成jar並將其複製到WEB-INF/lib
)?或者是否有任何Eclipse解決方案,所以我可以正確設置GWT項目屬性,以便GWT項目知道包含persistence.xml
文件?
更新:好的,我得到了它的工作。我試圖把persitence.xml放在war/WEB-INF的任何地方,但是一直存在'沒有持久性提供者'的錯誤。事實證明,這不是關於persistence.xml。我沒有將eclipselink jar複製到WEB-INF/lib中,因此無法找到在persistence.xml中定義的提供程序類。複製所有罐子做了這件事。
非常感謝帕斯卡爾。
你確認你沒有意外啓用Google App Engine嗎? GAE不允許你連接數據庫,並且是一個非常常見的初學者錯誤。 – 2010-05-16 20:35:58