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

回到顶部