Configure persistence units to be available in several jars of an ear

蹲街弑〆低调 提交于 2019-12-04 01:56:23

问题


In a .ear file, my EJBs are copied in several jar and war for some technical constraints. And only one of these jar contains the persistence.xml file where I have configured several persistence units.

myear.ear
|---- myjar1.jar
|-------- META-INF/persistence.xml
|---- myjar2.jar
|---- mywar.war

The problem is Jboss cannot find the persistence configuration for the classes within the jar "myjar2" and the war :

Could not get class configuration for ....EjbA.class due to the following errors: Can't find a deployment unit named xxxxx at subdeployment "jar2.jar" of deployment "myear.ear"

To resolve that, I tried to create a new jar containing only the persistence.xml file but it doesn't work.

Any idea of how I could share my persistence.xml file to every jar without reorganising all my ear archive?


回答1:


As per the JPA spec, it should be possible for you to define a persistence unit at the EAR level that is visible to all the submodules that you define in the same .ear:

8.2.2 Persistence Unit Scope

...

A persistence unit that is defined at the level of the EAR is generally visible to all components in the application. However, if a persistence unit of the same name is defined by an EJB-JAR, WAR, or application jar file within the EAR, the persistence unit of that name defined at EAR level will not be visible to the components defined by that EJB-JAR, WAR, or application jar file unless the persistence unit reference uses the persistence unit name # syntax to specify a path name to disambiguate the reference.

However, in section 8:

NOTE: Java Persistence 1.0 supported use of a jar file in the root of the EAR as the root of a persistence unit. This use is no longer supported. Portable applications should use the EAR library directory for this case instead. See [9].

So I would try to place the jar in the lib folder. If you need that module to be a EJB one, it must be in the root of the ear, so you can create a separate jar with the persistence.xml file.



来源:https://stackoverflow.com/questions/8370043/configure-persistence-units-to-be-available-in-several-jars-of-an-ear

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!