Thomas,
did you try something like that ?
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>myJar.jar#mypackage.MyManager</ejb-name>
<ejb-class>mypackage.impl.MyManagerImpl</ejb-class>
<persistence-context-ref>
<persistence-context-ref-name>mypackage.impl.MyManagerImpl/em</persistence-context-ref-name>
<persistence-unit-name>PU</persistence-unit-name>
</persistence-context-ref>
</session>
</enterprise-beans>
</ejb-jar>
Regards,
Jean-Louis
Thomas.TH.Hamacher wrote:
>
> David,
>
> any information on this?
>
> Thomas
>
> -----Ursprüngliche Nachricht-----
> Von: [email protected]
> [mailto:[email protected]]
> Gesendet: Montag, 23. Februar 2009 13:11
> An: [email protected]
> Betreff: AW: Override PersistenceContext
>
> David,
>
> thanks so far. I tried the same thing and set up a simple test-project to
> play with the ejb-jar.xml My result is as follows:
>
> Everything works as expected if I override the settings within the same
> jar. If I try to override the settings from the referenced jar, it does
> not work.
> Do you have any idea about this?
>
> I had to adjust the ejb-jar.xml as follows, so that the entityManager is
> injected correctly.
> I use the ejb-jar.xml within my original project. The referenced jar only
> has an ejb-jar with an empty <ejb-jar />-tag
>
> ----------------------------------------------------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
> version="3.0"
> metadata-complete="true" >
>
> <enterprise-beans>
> <session>
> <ejb-name>CustomerManager2Impl</ejb-name>
>
> <business-local>company.CustomerManager2</business-local>
>
> <ejb-class>company.CustomerManager2Impl</ejb-class>
> <session-type>Stateless</session-type>
> <persistence-context-ref>
>
> <persistence-context-ref-name>em2</persistence-context-ref-name>
>
> <persistence-unit-name>IisTestPU2</persistence-unit-name>
> <injection-target>
>
> <injection-target-class>company.CustomerManager2Impl</injection-target-class>
>
> <injection-target-name>em</injection-target-name>
> </injection-target>
> </persistence-context-ref>
> </session>
>
> <session>
> <ejb-name>CustomerManagerImpl</ejb-name>
>
> <business-local>company.CustomerManager</business-local>
> <ejb-class>company.CustomerManagerImpl</ejb-class>
> <session-type>Stateless</session-type>
> <persistence-context-ref>
>
> <persistence-context-ref-name>em</persistence-context-ref-name>
>
> <persistence-unit-name>IisTestPU</persistence-unit-name>
> <injection-target>
>
> <injection-target-class>company.CustomerManagerImpl</injection-target-class>
>
> <injection-target-name>em</injection-target-name>
> </injection-target>
> </persistence-context-ref>
> </session>
>
> </enterprise-beans>
> </ejb-jar>
> ----------------------------------------------------------------
>
> So if I copy the CustomerManager2Impl into the same jar, everything works
> fine, but as soon as I copy this into another jar and reference this jar,
> the deployment does not work anymore.
>
> Here comes the output:
> ----------------------------------------------------------------
> 2009-02-23 12:58:10,141 INFO OpenEJB.startup:70 - openejb.home =
> C:\01-development\06-workspace\simpleEjbTest
> 2009-02-23 12:58:10,141 INFO OpenEJB.startup:70 - openejb.base =
> C:\01-development\06-workspace\simpleEjbTest
> 2009-02-23 12:58:10,141 DEBUG OpenEJB.startup:82 - Instantiating assembler
> class org.apache.openejb.assembler.classic.Assembler
> 2009-02-23 12:58:10,953 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=Default Security Service, type=SecurityService,
> provider-id=Default Security Service)
> 2009-02-23 12:58:10,969 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=Default Transaction Manager, type=TransactionManager,
> provider-id=Default Transaction Manager)
> 2009-02-23 12:58:10,969 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My DataSource, type=Resource, provider-id=Default JDBC
> Database)
> 2009-02-23 12:58:10,969 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My Unmanaged DataSource, type=Resource, provider-id=Default
> JDBC Database)
> 2009-02-23 12:58:10,969 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My JMS Resource Adapter, type=Resource, provider-id=Default JMS
> Resource Adapter)
> 2009-02-23 12:58:10,969 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My JMS Connection Factory, type=Resource, provider-id=Default
> JMS Connection Factory)
> 2009-02-23 12:58:10,984 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=gerdaDatabaseUnmanaged, type=Resource, provider-id=Default JDBC
> Database)
> 2009-02-23 12:58:10,984 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=gerdaDatabase, type=Resource, provider-id=Default JDBC
> Database)
> 2009-02-23 12:58:10,984 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My CMP Container, type=Container, provider-id=Default CMP
> Container)
> 2009-02-23 12:58:10,984 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My BMP Container, type=Container, provider-id=Default BMP
> Container)
> 2009-02-23 12:58:10,984 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My Stateful Container, type=Container, provider-id=Default
> Stateful Container)
> 2009-02-23 12:58:11,000 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My Stateless Container, type=Container, provider-id=Default
> Stateless Container)
> 2009-02-23 12:58:11,000 INFO OpenEJB.startup.config:70 - Configuring
> Service(id=My MDB Container , type=Container, provider-id=Default MDB
> Container)
> 2009-02-23 12:58:11,000 DEBUG OpenEJB.startup.config:82 - Using
> openejb.deployments.classpath.include ''
> 2009-02-23 12:58:11,000 DEBUG OpenEJB.startup.config:82 - Using
> openejb.deployments.classpath.exclude '.*'
> 2009-02-23 12:58:11,000 DEBUG OpenEJB.startup.config:82 - Using
> openejb.deployments.classpath.filter.systemapps 'true'
> 2009-02-23 12:58:11,000 DEBUG OpenEJB.startup.config:82 - Using
> openejb.deployments.classpath.filter.descriptors 'false'
> 2009-02-23 12:58:11,000 DEBUG OpenEJB.startup.config:82 - Using
> openejb.deployments.classpath.require.descriptor 'false'
> 2009-02-23 12:58:11,109 DEBUG OpenEJB.startup.config:82 - Inspecting
> classpath for applications: 0 urls.
> 2009-02-23 12:58:11,234 INFO OpenEJB.startup.config:70 - Found EjbModule
> in classpath: C:\01-development\06-workspace\simpleEjbTest\target\classes
> 2009-02-23 12:58:11,344 INFO OpenEJB.startup.config:70 - Found EjbModule
> in classpath:
> C:\m2repo/test/1.0.0-SNAPSHOT/CustomerManager2Impl-1.0.0-SNAPSHOT.jar
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - URLs after
> filtering: 021
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> file:/C:/01-development/06-workspace/simpleEjbTest/target/test-classes/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/org/testng/testng/5.8/testng-5.8-jdk15.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/slf4j/slf4j-log4j12/1.5.3/slf4j-log4j12-1.5.3.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: file:/C:/01-development/06-workspace/simpleEjbTest/target/classes/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/antlr/antlr/2.7.6/antlr-2.7.6.jar!/
> 2009-02-23 12:58:11,359 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/org/slf4j/slf4j-api/1.5.3/slf4j-api-1.5.3.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/apache/openejb/asm-finder/3.1/asm-finder-3.1.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/javassist/javassist/3.4.GA/javassist-3.4.GA.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path: jar:file:/C:/m2repo/oro/oro/2.0.8/oro-2.0.8.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/apache/openejb/commons-dbcp-all/1.3-r699049/commons-dbcp-all-1.3-r699049.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/apache/maven/surefire/surefire-api/2.4.3/surefire-api-2.4.3.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/org/apache/maven/surefire/surefire-booter/2.4.3/surefire-booter-2.4.3.jar!/
> 2009-02-23 12:58:11,375 DEBUG OpenEJB.startup.config:82 - Descriptors
> path:
> jar:file:/C:/m2repo/test/1.0.0-SNAPSHOT/CustomerManager2Impl-1.0.0-SNAPSHOT.jar!/
> 2009-02-23 12:58:11,375 INFO OpenEJB.startup.config:70 - Beginning load:
> C:\01-development\06-workspace\simpleEjbTest\target\classes
> 2009-02-23 12:58:11,391 DEBUG OpenEJB:82 - Deleted file
> C:\01-development\06-workspace\simpleEjbTest\temp\AppModule-49923
> 2009-02-23 12:58:11,391 DEBUG OpenEJB:82 - Deleted file
> C:\01-development\06-workspace\simpleEjbTest\temp\CustomerManager2Impl-1.0.0-SNAPSHOT-49922.jar
> 2009-02-23 12:58:11,391 DEBUG OpenEJB:82 - Deleted file
> C:\01-development\06-workspace\simpleEjbTest\temp
> 2009-02-23 12:58:11,391 INFO OpenEJB:70 - AntiJarLocking enabled. Using
> URL cache dir C:\01-development\06-workspace\simpleEjbTest\temp
> 2009-02-23 12:58:12,203 DEBUG OpenEJB:82 - Destroying classLoader
> urlclassloa...@7461949
> 2009-02-23 12:58:12,234 INFO OpenEJB.startup.config:70 - Beginning load:
> C:\m2repo/test/1.0.0-SNAPSHOT/CustomerManager2Impl-1.0.0-SNAPSHOT.jar
> 2009-02-23 12:58:12,266 DEBUG OpenEJB:82 - Coppied jar file to
> C:\01-development\06-workspace\simpleEjbTest\temp\CustomerManager2Impl-1.0.0-SNAPSHOT-38725.jar
> 2009-02-23 12:58:12,281 DEBUG OpenEJB:82 - Destroying classLoader
> urlclassloa...@6427893
> 2009-02-23 12:58:12,281 INFO OpenEJB.startup.config:70 - Configuring
> enterprise application: classpath.ear
> 2009-02-23 12:58:12,687 INFO OpenEJB:70 - Auto-deploying ejb
> CustomerManager2Impl: EjbDeployment(deployment-id=CustomerManager2Impl)
> 2009-02-23 12:58:12,687 INFO OpenEJB:70 - Auto-deploying ejb
> CustomerManagerImpl: EjbDeployment(deployment-id=CustomerManagerImpl)
> 2009-02-23 12:58:12,687 INFO OpenEJB:70 - Auto-deploying ejb
> CustomerManager2Impl: EjbDeployment(deployment-id=CustomerManager2Impl)
> 2009-02-23 12:58:12,703 INFO OpenEJB.startup.config:70 - Configuring
> PersistenceUnit(name=IisTestPU,
> provider=org.hibernate.ejb.HibernatePersistence)
> 2009-02-23 12:58:12,703 INFO OpenEJB.startup.config:70 - Configuring
> PersistenceUnit(name=IisTestPU2,
> provider=org.hibernate.ejb.HibernatePersistence)
> 2009-02-23 12:58:12,719 DEBUG OpenEJB.startup.config:82 - Adjusting
> PersistenceUnit(name=IisTestPU) property to
> hibernate.transaction.manager_lookup_class=org.apache.openejb.hibernate.TransactionManagerLookup
> 2009-02-23 12:58:12,719 DEBUG OpenEJB.startup.config:82 - Adjusting
> PersistenceUnit(name=IisTestPU2) property to
> hibernate.transaction.manager_lookup_class=org.apache.openejb.hibernate.TransactionManagerLookup
> 2009-02-23 12:58:12,734 ERROR OpenEJB.startup.validation:46 - FAIL ...
> CustomerManager2Impl: Persistence unit not found for
> @PersistenceContext(name="em", unitName=""). Available units [IisTestPU,
> IisTestPU2]
> ----------------------------------------------------------------
>
>
> So do you have any idea what to do or what I missed here?
>
> Thanks in advance
>
> Thomas
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: David Blevins [mailto:[email protected]]
> Gesendet: Freitag, 20. Februar 2009 08:46
> An: [email protected]
> Betreff: Re: Override PersistenceContext
>
>
> On Feb 16, 2009, at 5:13 AM, <[email protected]>
> <[email protected]
> > wrote:
>
>> Hi @all,
>>
>> I´d like to override the settings for the PersistenceContext, but
>> somehow it does not work.
>> My Scenario is as follows: I´ve got a REFERENCED JAR and my local
>> project. The referenced jar contains some stateless services, with an
>> annotated EntityManager pointing to the default PersistenceContext
>> without declaring a unitName.
>>
>> Then I´ve got my project, which also has it´s own persistence.xml and
>> some services. As there are 2 persistence-units-defintions now, the
>> services from the referenced as well as those from my local project
>> fail to start, because injection does not work anymore. So far so
>> good! So I decided to override the persistenceUnit from the services
>> in the referencedJar and point them to a specific
>> persistence-unit-name.
>>
>
> The override looks perfect and I hacked up a test case to verify the
> overriding occurs as expected and all was fine. So there must be
> something else going on here.
>
> When we process annotations we actually update the descriptor that comes
> with the application and it is possible to set a flag so that it will be
> written back to disk allowing you to see the final and definitive set of
> metadata. Set the 'openejb.descriptors.output' flag to 'true' and scan
> the log output for the paths to the update ejb- jar.xml file(s).
>
> If what is going on doesn't become obvious, post the log output as well as
> the generated ejb-jar.xml.
>
> -David
>
>
>>
>> This is my business class from the referenced jar (where
>> CustomerManager is it´s local interface annotated with @Local):
>> ----------------------------------------------------------------------
>> -------
>> package company;
>>
>> @Stateless
>> public class CustomerManagerImpl implements CustomerManager {
>>
>> ...
>> @PersistenceContext
>> private EntityManager entityManager; ...
>> }
>>
>> ----------------------------------------------------------------------
>> -------
>>
>> Now I included an ejb-jar.xml in my /classes/META-INF directory within
>> my local project and redefined the EntityManager as follows:
>>
>>
>> ----------------------------------------------------------------------
>> ------- <?xml version="1.0" encoding="UTF-8"?> <ejb-jar
>> xmlns="http://java.sun.com/xml/ns/javaee"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>> http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
>> "
>> version="3.0"
>> metadata-complete="true" >
>> <enterprise-beans>
>> <session>
>> <ejb-name>CustomerManagerImpl</ejb-name>
>> <business-local>company.CustomerManager</
>> business-local>
>> <ejb-class>company.CustomerManagerImpl</ejb-
>> class>
>> <session-type>Stateless</session-type>
>> <persistence-context-ref>
>> <persistence-context-ref-
>> name>company.CustomerManagerImpl/entityManager</persistence-context-
>> ref-name>
>> <persistence-unit-name>IisTestPU</
>> persistence-unit-name>
>> </persistence-context-ref>
>> </session>
>> </enterprise-beans>
>> </ejb-jar>
>> ----------------------------------------------------------------------
>> -------
>>
>> If I put anything wrong in this ejb-jar.xml I always receive an error.
>> So I assume, that the ejb-jar is interpreted correctly, but anyways I
>> receive an error when booting openEJB.
>>
>> ERROR - FAIL ... CustomerManagerImpl: The persistence unit "" does
>> not exist. Update the "entityManager" PersistenceContext ref to one
>> of the avail able units [CleoServicePU, IisTestPU] or declare the unit
>> in a persistence.xml like the following:<persistence
>> xmlns="http://java.sun.com/xml/ns/persi
>> stence" version="1.0"><persistence-unit name=""><jta-data-
>> source>java:openejb/Resource/myDataSource</jta-data-source><non-jta-
>> data-source>java:openejb
>> /Resource/myUnmanagedDataSource</non-jta-data-
>> source><properties><property name="openjpa.jdbc.SynchronizeMappings"
>> value="buildSchema(ForeignKeys=true
>> )"/></properties></persistence-unit></persistence>
>>
>>
>> Did I miss anything?
>>
>> Thomas
>>
>
>
>
>
>
--
View this message in context:
http://www.nabble.com/How-to-enable-disable-Hibernate-EntityManager-tp21869752p22288917.html
Sent from the OpenEJB User mailing list archive at Nabble.com.