[jboss-jira] [JBoss JIRA] Created: (JBAS-9155) jboss processes only one persistence.xml file per war file

Vincent A (JIRA) jira-events at lists.jboss.org
Mon Mar 28 00:55:37 EDT 2011


 jboss processes only one persistence.xml file per war file
-----------------------------------------------------------

                 Key: JBAS-9155
                 URL: https://issues.jboss.org/browse/JBAS-9155
             Project: JBoss Application Server
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: JPA / Hibernate
    Affects Versions: 6.0.0.Final
            Reporter: Vincent A
            Assignee: Scott Marlow


If a war file contains several Persistence Archive jars, JBoss starts only the persitence unit(s) defined in the first jar it scans, ignoring the remaining ones.
For instance, given the following war file:

{code}
my-war
  +-- WEB-INF
     +-- lib
        +-- pu1.jar
           +-- META-INF
              + persistence.xml   // <persistence-unit name="pu1" >...</persistence-unit>
        +-- pu2.jar
           +-- META-INF
              + persistence.xml   // <persistence-unit name="pu2" >...</persistence-unit>}}
{code}
Jboss will only starts the pu1 persistence unit.

And if the war file has the following structure:

{code}
my-war
  +-- WEB-INF
     +-- classes
        +-- META-INF
           + persistence.xml     // <persistence-unit name="pu0" >...</persistence-unit>
     +-- lib
        +-- pu1.jar
           +-- META-INF
              + persistence.xml   // <persistence-unit name="pu1" >...</persistence-unit>
        +-- pu2.jar
           +-- META-INF
              + persistence.xml   // <persistence-unit name="pu2" >...</persistence-unit>
{code}

Jboss starts pu0, and skips the PU's defined in pu1.jar and pu2.jar.

This behaviour is non-compliant. Section 6.2 of the spec states that:

{quote}
A persistence unit may be packaged within one or more jar files 
contained within a WAR or EAR, as a set of classes within an 
EJB-JAR file or in the WAR classes directory, or as a combination 
of these as defined below.
{quote}
[...]
{quote}
It is not required that an EJB-JAR or WAR containing a persistence
 unit be packaged in an EAR unless the persistence unit contains 
persistence classes in addition to those contained in the EJB-JAR 
or WAR. 
{quote}

And from section 7:
{quote}
7.1.1    Responsibilities of the Container
At deployment time the container is responsible for scanning the 
locations specified in Section 6.2 and discovering the persistence.xml 
files and processing them.

When the container finds a persistence.xml file, it processes the 
persistence unit definitions that it contains.
{quote}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list