我想将EM注入Servlet,持久性单元在EJB JAR中声明。我有一个带有EJB JAR和WAR的EAR。
问题是我收到了这个错误:
无法解析与之对应的持久性单元 persistence-context-ref-name [cvu.JpaServlet / em]的范围 名为
的模块
如果我将persistence.xml放在WAR中它可以正常工作,但我不想这样做。
我可以从EJB JAR中声明的PersistenceUnit(persistence.xml)获取EntityManager吗?
答案 0 :(得分:0)
我认为你需要将ejb jar添加到你的战争类路径中。
通常,您应该将EntityManagerFacotry注入Servlet,而不是EntityManager,因为Servlet是共享的。
您还可以使用SessionBeans包装持久性。
答案 1 :(得分:0)
我移动了所有的持久性课程&将persistence.xml转换为persist.jar
,并将其放入ear/lib
。现在它可以从EJB和WAR中运行。如果您将persistence.xml
放在name.war/WEB-INF/classes/META-INF/persistence.xml
中,那么您将无法在EJB中使用它。如果将它放在EJB中,则无法在WAR中使用@PersistenceUnit EntityManagerFactory
。要在WAR中访问它,您也可以将它放在WEB-INF/lib/persist.jar/META-INF/persistence.xml
中。但更好的是在EAR。