我有两个位于[WAR] / WEB-INF / lib中的ejb-jar的项目。两个ejb-jar都使用JPA并包含带注释的类@Entity
。但是我在打包和部署方面遇到了问题(Glassfish 4)。如果我的两个jar都包含persistence.xml,那么我会在delpoyment上看到Exception
java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [...] in the scope of the module called [...]. Please verify your application.
我已将persistence.xml
放入WAR / META-INF并从ejb-jars中删除persistence.xml
。部署成功,但我在运行时获得了异常
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Problem compiling [SELECT ...].
[14, 18] The abstract schema type 'MyClass' is unknown.
MyClass
是来自ejb-jar之一的@Entity
类。我认为这个ejb-jar中缺少问题persistence.xml
。
最后我尝试将persistence.xml
放在WAR和ejb-jars中,但我又得到了
java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [...] in the scope of the module called [...]. Please verify your application.
放置persistence.xml
的适当位置是什么?打包此类应用程序的正确方法是什么?
答案 0 :(得分:0)
尝试将所有实体从ejb项目和persistence.xml中提取到简单的jar文件中,然后将该jar文件放到WEB-INF / lib中(我没有使用该配置,所以它可能不起作用,肯定它适用于EAR包装 - 意思是EAR,有3个模块,web和2个ejbs,以及ear / lib文件夹中的实体jar。)