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.

Reply via email to