문제

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?

도움이 되었습니까?

해결책

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top