war,ejb-jar和persistence.xml

时间:2014-10-21 08:28:46

标签: java-ee jpa war packaging persistence.xml

我有两个位于[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的适当位置是什么?打包此类应用程序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试将所有实体从ejb项目和persistence.xml中提取到简单的jar文件中,然后将该jar文件放到WEB-INF / lib中(我没有使用该配置,所以它可能不起作用,肯定它适用于EAR包装 - 意思是EAR,有3个模块,web和2个ejbs,以及ear / lib文件夹中的实体jar。)