GWT与JPA - 没有持续性提供
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中定义的提供程序类。复制所有罐子做了这件事。
非常感谢帕斯卡尔。
回答:
您是否在persistence.xml
中声明了持久性提供程序?像这样的东西(我使用Hibernate的在这里,它适应任何持久性提供你正在使用):
<persistence <persistence-unit name="emergitPU" transaction-type="...">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...
</persistence-unit>
</persistence>
如果你这样做的话,我怀疑是类路径的问题。您是否正确地将JPA项目打包在webapp中,即WEB-INF/lib
?
回答:
用相同的错误消息挣扎了很多,我解决了复制所有jar的问题(eclipselink.jar,eclipselink-jpa-modelgen_2.1.0.v20100614-r7608.jar,javax.persistence_1.0.0.jar,javax。 persistence_2.0.1.v201006031150.jar)从EclipseLink zip复制到我的GWT项目的.../war/WEB-INF/lib文件夹中,以在托管模式下为Jetty提供一切可用。 正如您从文件列表中可以看到的,我使用的是EclipseLink 2.1。如有必要,请将此列表适应您的JPA实施。
希望,这也可以帮助你。
以上是 GWT与JPA - 没有持续性提供 的全部内容, 来源链接: utcz.com/qa/264616.html