0

我想将 EM 注入 Servlet,持久性单元在 EJB JAR 中声明。我有一个带有 EJB JAR 和 WAR 的 EAR。
问题是我收到此错误:

无法解析与调用的模块范围内的 persistence-context-ref-name [cvu.JpaServlet/em] 对应的持久性单元

如果我将persistence.xml 放在WAR 中它可以正常工作,但我不想这样做。

我可以从 EJB JAR 中声明的 PersistenceUnit (persistence.xml) 中获取 EntityManager 吗?

4

2 回答 2

0

我将我所有的持久性类和持久性.xml 移动到一个persist.jar. ear/lib现在它适用于 EJB 和 WAR。如果你把persistence.xmljust 放在你的里面,name.war/WEB-INF/classes/META-INF/persistence.xml你将无法在 EJB 中使用它。如果你把它放在 EJB 中,你将无法@PersistenceUnit EntityManagerFactory在 WAR 中使用。为了让您在 WAR 中访问它,您也可以将它放在WEB-INF/lib/persist.jar/META-INF/persistence.xml. 但更好的是在 EAR 中。

于 2012-05-17T08:53:01.773 回答
0

我认为您需要将 ejb jar 添加到您的战争类路径中。

通常,您应该将 EntityManagerFacotry 注入 Servlet,而不是 EntityManager,因为 Servlet 是共享的。

您还可以使用 SessionBeans 包装您的持久性。

于 2012-05-16T14:34:39.787 回答