Hi Oliver,
In OpenEJB 3.0, each module (ejb-jar) that we discovered in the
classpath was treated as if it had been deployed individually as a
standalone app. This put the restriction in there that any
persistence units you referenced had to be in the same app (ejb-jar
module) and were not visible in other apps.
In OpenEJB 3.1, each module (ejb-jar, persistence archive, or resource
arcive) that we discover in the classpath will be treated by default
as if it had been deployed together as an ear. This allows for a more
straight forward way of sharing persistence units across all modules.
So persistence units can be reused without the need to redeclare them.
As well, they can be in a module all by itself, no ejbs or ejb-jar.xml
required.
To get OpenEJB 3.1 to act like OpenEJB 3.0 in this regard, set the new
"openejb.deployments.classpath.ear" property to "false". That will
get everything working as it did in 3.0 and you can explore new
options with a functioning build.
With the new functionality some of those options would be to only
declare the persistence.xml in either t4-core-utils or t4-core-commons
and have it reused in both, or move it it to third module say t4-core-
persistence and reuse it in both. Seems the t4Seam unit in t4-core-
commons and t4-core-utils aren't exactly the same, so not sure which
would be the one you reuse and which you delete.
Another clever approach might be to put the persistence.xml files in
the maven test-classes/ directory where maven will ensure it's only
visible when the tests for that module are run (using the <jar-file>
element where needed).
Hope this helps and hope you find the new options useful.
-David
On Nov 10, 2008, at 5:05 AM, chawax wrote:
Hi,
I used OpenEJB 3.0 as embedded EJB3 container for unit tests in a
Maven
project. Now I try to upgrade to OpenEJB 3.1 but I encounter
problems I had
not seen before. Actually for some development organization reasons,
my EJB3
entities are in many Maven projects, each one having its
persistence.xml
file with the same persistence unit. There are dependencies between
these
projects.
For example I have two projects : t4-core-utils and t4-core-commons.
The
second one depends on the first one. So in the persistence.xml for
t4-core-commons, I use jar-file tag.
The persistence.xml file for t4-core-commons is like this :
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="t4Seam">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jdbc/t4Seam</jta-data-source>
<jar-file>../test-classes/lib/t4-core-utils-core.jar</jar-file>
<mapping-file>META-INF/orm-commons.xml</mapping-file>
<mapping-file>META-INF/orm-utils.xml</mapping-file>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="false"/>
</properties>
</persistence-unit>
</persistence>
And the persistence.xml file for t4-core-utils is like this :
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="t4Seam">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jdbc/t4Seam</jta-data-source>
<mapping-file>META-INF/orm-utils.xml</mapping-file>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="false"/>
</properties>
</persistence-unit>
</persistence>
But when my app starts, I have errors using @PersistenceContext
annotation
in my EJB3 session beans.
For example :
ERROR - FAIL ... EmployeeDaoImpl: @PersistenceContext unitName has
multiple
matches: unitName "t4Seam" has 2 possible matches.
What has changed about this from 3.0 to 3.1 ? And what should I do
to make
it work as it used to work ?
Thanks in advance,
Olivier
--
View this message in context:
http://www.nabble.com/PersistenceContext-problems-after-upgrade-to-3.1-tp20419521p20419521.html
Sent from the OpenEJB User mailing list archive at Nabble.com.