You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Hans J. Prueller" <ha...@gmx.net> on 2007/02/05 21:05:56 UTC

Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Hi there,

 

I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications persistence to
openJPA. Currently I got stuck when 

trying to configure OpenJPA persistence, when creating the
EntityManagerFactory and the EntityManager instance,

I get the following error:

 

<4|true|0.9.6-incubating>
org.apache.openjpa.persistence.InvalidStateException:

Could not perform automatic lookup of EJB container's
javax.transaction.Transact

ionManager implementation. Please ensure that you are running the
application fr

om within an EJB 1.1 compliant EJB container, and then set the
org.apache.openjp

a.ManagedRuntime property to the appropriate value to obtain the
TransactionMana

ger.

        at
org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A

utomaticManagedRuntime.java:180)

        at
org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa

ction(AbstractBrokerFactory.java:598)

        at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)

        at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro

kerFactory.java:165)

        at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin

gBrokerFactory.java:139)

        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM

anager(EntityManagerFactoryImpl.java:187)

 

 

Currently I'm running the application within the JOnAS 4.8.3 J2EE Server.
How can I configure open JPA to 

use the provided managed Transactions of JOnAS? (this works also with
Hibernate 2.x so I assume it should

somehow be possible with openJPA?)

 

any help appreciated!

 

regards,

HANS

 

=========================== 
virtually hanzz...

 

 <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
 <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
(research)

 


Re: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by "Sreedhar.sirigiri" <sr...@gmail.com>.
Hello Sahoo,

Thanks for the reply. 

UserDAOImpl.java

public class UserDAOImpl implements UserDAO {
    private static Logger logger = Logger.getLogger(UserDAOImpl.class);
    private static AuditLogger auditLogger = LoggerUtil.getAuditLogger();
    
    public void create(SsContext context, User user) throws DaoException {
    	
    	EntityManager session = null;
    	String errCode = null;
        try {
        	logger.info("Inside UserDAOImpl class ...");
            session =
ServiceLocator.getOpenJPASession(ServiceLocator.OPENJPA_SESSION_FACTORY);
            logger.info("Calling OPENJPA_SESSION_FACTORY ...");
            //beginning the OpenJPA transaction.
            session.getTransaction().begin();
            
            UserDTO userDTO = new UserDTO(user);
            logger.info("Persisting USERDTO ...");
            //Persisting the Object into the database using EntityManager.
           
            session.persist(userDTO);
            
            //Commiting the OpenJPA persistent transaction.            
            session.getTransaction().commit();
            String auditCode = DaoConstants.USER_ADDED;
            
            String auditMsg =
AuditMessage.getAuditMessage(DaoException.fBundleName, auditCode,
context.getUserName(), userDTO.getName());
            auditLogger.audit("I", auditCode, auditMsg);
            logger.debug(auditMsg);
        } catch(AuditLoggerException e){
            logger.error("Exception while Logging Audit Message during
createUser invocation: " + e.getMessage());
}

ServiceLocator.java

public class ServiceLocator {

    public static final String OPENJPA_SESSION_FACTORY = "host";

    private ServiceLocator() {}

    public static OpenJPAEntityManagerFactory
getOpenJPASessionFactory(String jndiSessionFactoryName) throws DaoException
{
    	
    	OpenJPAEntityManagerFactory emFactory = null;
    	try{
    		EntityManagerFactory emf =
Persistence.createEntityManagerFactory(jndiSessionFactoryName);
    		emFactory=OpenJPAPersistence.cast(emf);

    		    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return emFactory;
    }

    public static OpenJPAEntityManager getOpenJPASession(String
jndiSessionFactoryName) throws DaoException {
    	OpenJPAEntityManager session = null;
    	try{
    		session =
getOpenJPASessionFactory(jndiSessionFactoryName).createEntityManager();

    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	return session;
    }

}

persistence.xml
    <persistence-unit name="host" transaction-type="JTA">
    	<provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
		
         <jta-data-source>java:/DS</jta-data-source>
	        <class>com.....UserDTO</class>
        <properties>
	        <property name="openjpa.ConnectionURL" value="jdbc:db2:CDB"/>
			<property name="openjpa.ConnectionDriverName"
value="COM.ibm.db2.jdbc.DB2DataSource"/>
			<property name="openjpa.ConnectionProperties"
value="DatabaseName=CGSSDB"></property>
		  	<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
			<property name="openjpa.TransactionMode" value="local"/>
			<property name="openjpa.ManagedRuntime"
value="jndi(TransactionManagerName=java:/TransactionManager)"/>
			
			<property name="openjpa.ConnectionDriverName"
value="COM.ibm.db2.jdbc.app.DB2Driver"/>
			<!-- TODO: Commented out TRACE levels to reduce level of logs -->
			<property name="openjpa.RetryClassRegistration" value="true"/>
			<property name="openjpa.jdbc.DBDictionary" value="db2"/>
			<property name="openjpa.Log" value="DefaultLevel=WARN, SQL=WARN,
Runtime=INFO, Tool=INFO" />
		</properties>
    </persistence-unit> 


Regards,
Sreedhar


Sahoo wrote:
> 
> Hi Sreedhar,
> 
> I think there is a misunderstanding about "container managed 
> transaction(CMT)." In a pure Java EE (true for all previous J2EE 
> containers as well), only *EJBs* are allowed to use container managed 
> transaction feature. It saves the EJB programmer from marking 
> transaction boundaries explicitly; each business method is implicitly 
> used as a transaction boundary. There is no such facility for non-EJB 
> components in a Java EE container. So, a programmer has to specify the 
> transaction boundary explicitly. *javax.transaction.UserTransaction*[1], 
> which is part of JTA, is the API that is typically used to do this. 
> Since Java Persistence API can be used in environment where JTA may not 
> be supported, it also supports an alternative API, called 
> *EntityTransaction*[2], to control transactions. This API does not have 
> to be used in a container environment which supports JTA. /In fact, the 
> method EntityManager.getTransaction() which gives you access to the 
> EntityTransaction object should not be even called for an EntityManager 
> with transaction-type JTA [3]/. By now it should be clear as to why that 
> exception was thrown by OpenJPA. As Marc suggested, you should *stop* 
> using getTransaction() as  you have configured persistence.xml to JTA 
> transaction-type.
> 
> There is another concept that can play a role here for a JTA 
> transaction-type entity manager. There is another classification of 
> entity managers. Depending on how an entity manager is obtained in code, 
> it can be either be *application managed* or *container managed* entity 
> manager. I see the subject line saying "J2EE1.4", so I am assuming that 
> you can't use container managed entity manager. It is very likely that 
> you are using *EntityManagerFactory.createEntityManager()* to get hold 
> of an entity manager. Let us know if you are not using such an API. Such 
> an entity manager is of type application managed. Such an entity manager 
> does not *automatically* participate in a transaction which begins 
> *after* the entity manager is created. One needs to call 
> *EntityManager.joinTransaction()*. You may *not* be doing this in your 
> code. Please check this.
> 
> I don't know your code well, so I don't know if you are using 
> EntityManager in an EJB with container managed transaction or not. If 
> yes, see if you need to use joinTransaction(). If *not*, then you should 
> code something like this:
> 
> //Get hold of UserTransaction object. In Java EE 5, you can use 
> injection to avoid JNDI lookup. See [4]
> UserTransaction utx = UserTransaction.class.cast(new 
> InitialContext().lookup("java:comp/TransactionManager"));
> utx.begin();
> entityManager.joinTransaction();
> entityManager.persist...
> utx.commit();
> 
> If this does not help, you have to provide more specific code that shows 
> how you create and use EntityManager.
> 
> Thanks,
> Sahoo
> 
> [1] 
> http://java.sun.com/javaee/5/docs/api/javax/transaction/UserTransaction.html
> [2] 
> http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityTransaction.html
> [3] 
> http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#getTransaction()
> [4] 
> http://weblogs.java.net/blog/ss141213/examples/blog1/web-app1/src/example/RegistrationServlet.java
> 
> Sreedhar.sirigiri wrote:
>> Hello Patrick,
>>
>> When I specify the following properties in persistence.xml, I get the
>> following exception. 
>> "You cannot access the EntityTransaction when using managed transactions"
>>
>> persistence.xml
>> <persistence-unit name="audit" transaction-type="JTA">
>>     	<provider>
>>             org.apache.openjpa.persistence.PersistenceProviderImpl
>>         </provider>
>>         
>> 	<jta-data-source>java:/AuditDS</jta-data-source>       
>>
>>         <class>com.vormetric.server.dao.audit.MessageDTO</class>
>>         <properties>
>> 	        <property name="openjpa.ConnectionURL" value="jdbc:db2:LOGDB"/>
>> 		<property name="openjpa.ConnectionProperties"
>> value="DatabaseName=LOGDB"></property>
>>  		<property name="openjpa.ConnectionDriverName"
>> value="COM.ibm.db2.jdbc.DB2DataSource"/>
>>  		<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
>> 		<property name="openjpa.TransactionMode" value="managed"/>
>> 		<property name="openjpa.ManagedRuntime"
>> value="jndi(TransactionManagerName=java:/TransactionManager)"/>
>> 		
>> 		<!-- TODO: Commented out TRACE levels to reduce level of logs -->
>> <!--		<property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE"
>> /> 
>> --> 
>> 		<property name="openjpa.RetryClassRegistration" value="true"/>			
>> 		<property name="openjpa.jdbc.DBDictionary" value="db2"/>
>> 	</properties>
>> </persistence-unit>
>>
>> In my DAOImpl.java I'm explicitly handling transactions by calling
>> session.getTransaction().begin() and session.getTransaction().commit(); 
>> When the trasaction-type is JTA and TransactionMode="managed" why do we
>> need
>> to handle the transactions programatically?? Do I need to do something
>> else
>> for the container to handle transactions?
>>
>> When I modify the TransactionMode="local" and call the begin & commit
>> methods, I'm able to update/insert/delete. Kindly help. How can we use
>> container managed transactions in OpenJPA. I'm not using any EJB's in my
>> project.
>>
>> Sreedhar
>>
>>
>>
>>
>> Patrick Linskey wrote:
>>   
>>> Looking at the trace, it looks like OpenJPA is being deployed correctly
>>> when you used java:comp/UserTransaction:
>>>
>>>     
>>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
>>>> Starting OpenJPA 0.9.6-incubating
>>>>       
>>> This means that OpenJPA loaded the configuration and initialized.
>>>
>>>     
>>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>>> OpenJPA will now connect to the database to attempt to determine 
>>>> what type of database dictionary to use.  To prevent this connection 
>>>> in the future, set your openjpa.jdbc.DBDictionary configuration 
>>>> property to the appropriate value for your database (see the 
>>>> documentation for available values).
>>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>>> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" 
>>>> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
>>>> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $, 
>>>> $Revision: 5908 $ )).
>>>>       
>>> This means that we were able to connect to the database and figure out
>>> that you're using MySQL.
>>>
>>>     
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>> You cannot access the EntityTransaction when using managed
>>>> transactions.
>>>>        at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:360)
>>>>        at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.java:1102)
>>>>        at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061)
>>>>        at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
>>>>       
>>> 4)
>>>
>>> It looks like IMSSystemBean.initializeJPA() is trying to invoked
>>> EntityManager.getTransaction(). Since you're using JTA, you're not
>>> allowed
>>> to use getTransaction(); all transaction management must happen through
>>> container-managed transactions or bean-managed transaction code.
>>>
>>> -Patrick
>>>
>>> -- 
>>> Patrick Linskey
>>> BEA Systems, Inc. 
>>>
>>> _______________________________________________________________________
>>> Notice:  This email message, together with any attachments, may contain
>>> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
>>> entities,  that may be confidential,  proprietary,  copyrighted  and/or
>>> legally privileged, and is intended solely for the use of the individual
>>> or entity named in this message. If you are not the intended recipient,
>>> and have received this message in error, please immediately return this
>>> by email and then delete it. 
>>>
>>>     
>>>> -----Original Message-----
>>>> From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
>>>> Sent: Monday, February 05, 2007 12:54 PM
>>>> To: open-jpa-dev@incubator.apache.org
>>>> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container 
>>>> with managed transactions?
>>>>
>>>>       
>>>>>> If that doesn't work, can you post the complete stack trace?
>>>>>>           
>>>> Thank you for your help. Unfortunately it did NOT work. I'm 
>>>> not sure what
>>>> the exact problem is, here are the strack-traces:
>>>>
>>>> first case: 
>>>> ====================================================================
>>>> openjpa.ManagedRuntime:
>>>> jndi(TransactionManagerName=java:comp/UserTransaction)
>>>>
>>>> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : 
>>>> initializing JPA
>>>> persist
>>>> ence.
>>>> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
>>>> persistence
>>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.Runtime - Starting
>>>> OpenJ
>>>> PA 0.9.6-incubating
>>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.jdbc.JDBC - OpenJPA
>>>> will
>>>>  now connect to the database to attempt to determine what 
>>>> type of database
>>>> dicti
>>>> onary to use.  To prevent this connection in the future, set your
>>>> openjpa.jdbc.D
>>>> BDictionary configuration property to the appropriate value for your
>>>> database (s
>>>> ee the documentation for available values).
>>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.jdbc.JDBC - Using
>>>> dictio
>>>> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
>>>> 5.0.27-community
>>>> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 
>>>> 2006-10-19
>>>> 17:47:4
>>>> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
>>>> 812  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Found 1
>>>> class
>>>> es with metadata in 15 milliseconds.
>>>> 844  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Found 1
>>>> class
>>>> es with metadata in 0 milliseconds.
>>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Parsing
>>>> clas
>>>> s "com.lbslogics.ims.util.JPATestObject".
>>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Parsing
>>>> pack
>>>> age "com.lbslogics.ims.util.JPATestObject".
>>>> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>>> Reading t
>>>> able information for schema name "null", table name "JPATestObject".
>>>> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>>> Reading s
>>>> equence information for schema "null", sequence name "null".
>>>> <4|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>  You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>>> yManagerImpl.java:360)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>>> n.java:1102)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>>> :1061)
>>>>         at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>>> Remote.java:23
>>>> 4)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>> java:39)
>>>>         at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>> sorImpl.java:25)
>>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>>         at
>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>>         at
>>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>>> stServerRef.java:143)
>>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>>> 66)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>>> .java:707)
>>>>         at java.lang.Thread.run(Thread.java:595)
>>>> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while 
>>>> initializing
>>>> JPA:
>>>> You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>
>>>>
>>>> second case: 
>>>> ====================================================================
>>>> openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
>>>>
>>>> <0|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.PersistenceException:
>>>> /UserTransaction
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>> ction(AbstractBrokerFactory.java:633)
>>>>         at
>>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>>> kerFactory.java:165)
>>>>         at
>>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>>> gBrokerFactory.java:139)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:140)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:52)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>>> n.java:1099)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>>> :1061)
>>>>         at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>>> Remote.java:23
>>>> 4)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>> java:39)
>>>>         at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>> sorImpl.java:25)
>>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>>         at
>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>>         at
>>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>>> stServerRef.java:143)
>>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>>> 66)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>>> .java:707)
>>>>         at java.lang.Thread.run(Thread.java:595)
>>>> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>>>>         at
>>>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
>>>> :95)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:355)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
>>>> 8)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>>         at
>>>> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
>>>> nagedRuntime.java:51)
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>> ction(AbstractBrokerFactory.java:598)
>>>>         ... 21 more
>>>> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while 
>>>> initializing
>>>> JPA:
>>>> /UserTransaction
>>>>
>>>> *************************************************
>>>>
>>>>
>>>> From my understanding it seems that there is a fatal error in 
>>>> the second 
>>>> case, like openJPA was not able to even lookup JOnAS' 
>>>> transaction manager.
>>>> It seems to me that in the first case, the transaction 
>>>> manager lookup worked
>>>> but there is another subsequent error? 
>>>>
>>>> <4|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>  You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>>> yManagerImpl.java:360)
>>>>
>>>> Can you explain what this message means exactly?
>>>>
>>>> thank you in advance,
>>>> HANS
>>>>
>>>>
>>>>       
>>>>> -----Ursprüngliche Nachricht-----
>>>>> Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] 
>>>>>         
>>>> Im Auftrag von
>>>>       
>>>>> Marc Prud'hommeaux
>>>>> Gesendet: Montag, 05. Februar 2007 21:19
>>>>> An: open-jpa-dev@incubator.apache.org
>>>>> Betreff: Re: Using OpenJPA within an "old" J2EE1.4 
>>>>>         
>>>> container with managed
>>>>       
>>>>> transactions?
>>>>>
>>>>> Hans-
>>>>>
>>>>> We might not have Jonas' TransactionManager location configured in
>>>>> the automatic TM lookup in OpenJPA. Can you try to manually specify
>>>>> it with the following property:
>>>>>
>>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
>>>>> UserTransaction)
>>>>>
>>>>> if that doesn't work, try:
>>>>>
>>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
>>>>> UserTransaction)
>>>>>
>>>>> (apparently, Jonas' UserTransaction implementation is also their
>>>>> TransactionManager implementation)
>>>>>
>>>>> If that doesn't work, can you post the complete stack trace?
>>>>>
>>>>> If it does work, please let us know so we can add it to the list of
>>>>> auto-discovered transaction managers.
>>>>>
>>>>>
>>>>>
>>>>> On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
>>>>>
>>>>>         
>>>>>> Hi there,
>>>>>>
>>>>>>
>>>>>>
>>>>>> I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
>>>>>> persistence to
>>>>>> openJPA. Currently I got stuck when
>>>>>>
>>>>>> trying to configure OpenJPA persistence, when creating the
>>>>>> EntityManagerFactory and the EntityManager instance,
>>>>>>
>>>>>> I get the following error:
>>>>>>
>>>>>>
>>>>>>
>>>>>> <4|true|0.9.6-incubating>
>>>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>>>
>>>>>> Could not perform automatic lookup of EJB container's
>>>>>> javax.transaction.Transact
>>>>>>
>>>>>> ionManager implementation. Please ensure that you are running the
>>>>>> application fr
>>>>>>
>>>>>> om within an EJB 1.1 compliant EJB container, and then set the
>>>>>> org.apache.openjp
>>>>>>
>>>>>> a.ManagedRuntime property to the appropriate value to obtain the
>>>>>> TransactionMana
>>>>>>
>>>>>> ger.
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
>>>>       
>>>>>> utomaticManagedRuntime.java:180)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>>       
>>>>>> ction(AbstractBrokerFactory.java:598)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>>       
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>>>       
>>>>>> kerFactory.java:165)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>>>       
>>>>>> gBrokerFactory.java:139)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>>       
>>>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Currently I'm running the application within the JOnAS 4.8.3 J2EE
>>>>>> Server.
>>>>>> How can I configure open JPA to
>>>>>>
>>>>>> use the provided managed Transactions of JOnAS? (this 
>>>>>>           
>>>> works also with
>>>>       
>>>>>> Hibernate 2.x so I assume it should
>>>>>>
>>>>>> somehow be possible with openJPA?)
>>>>>>
>>>>>>
>>>>>>
>>>>>> any help appreciated!
>>>>>>
>>>>>>
>>>>>>
>>>>>> regards,
>>>>>>
>>>>>> HANS
>>>>>>
>>>>>>
>>>>>>
>>>>>> ===========================
>>>>>> virtually hanzz...
>>>>>>
>>>>>>
>>>>>>
>>>>>>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>>>>>>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
>>>>>> (research)
>>>>>>
>>>>>>
>>>>>>
>>>>>>           
>>>>       
>>>     
>>
>>   
> 
> 

-- 
View this message in context: http://www.nabble.com/Using-OpenJPA-within-an-%22old%22-J2EE1.4-container-with-managed-transactions--tf3176559.html#a11324698
Sent from the OpenJPA Developers mailing list archive at Nabble.com.


Re: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by "Sreedhar.sirigiri" <sr...@gmail.com>.
Hi Sahoo,

I could not test with your comments yesterday as I had to leave early. I
modified the code accordingly.

There is a small change in the code snippet. instead of TransactionManager I
used UserTransaction and it worked.

UserTransaction utx = UserTransaction.class.cast(new
              InitialContext().lookup("java:comp/UserTransaction"));

Thanks a lot for the help.

Sreedhar


Sahoo wrote:
> 
> Hi Sreedhar,
> 
> I think there is a misunderstanding about "container managed 
> transaction(CMT)." In a pure Java EE (true for all previous J2EE 
> containers as well), only *EJBs* are allowed to use container managed 
> transaction feature. It saves the EJB programmer from marking 
> transaction boundaries explicitly; each business method is implicitly 
> used as a transaction boundary. There is no such facility for non-EJB 
> components in a Java EE container. So, a programmer has to specify the 
> transaction boundary explicitly. *javax.transaction.UserTransaction*[1], 
> which is part of JTA, is the API that is typically used to do this. 
> Since Java Persistence API can be used in environment where JTA may not 
> be supported, it also supports an alternative API, called 
> *EntityTransaction*[2], to control transactions. This API does not have 
> to be used in a container environment which supports JTA. /In fact, the 
> method EntityManager.getTransaction() which gives you access to the 
> EntityTransaction object should not be even called for an EntityManager 
> with transaction-type JTA [3]/. By now it should be clear as to why that 
> exception was thrown by OpenJPA. As Marc suggested, you should *stop* 
> using getTransaction() as  you have configured persistence.xml to JTA 
> transaction-type.
> 
> There is another concept that can play a role here for a JTA 
> transaction-type entity manager. There is another classification of 
> entity managers. Depending on how an entity manager is obtained in code, 
> it can be either be *application managed* or *container managed* entity 
> manager. I see the subject line saying "J2EE1.4", so I am assuming that 
> you can't use container managed entity manager. It is very likely that 
> you are using *EntityManagerFactory.createEntityManager()* to get hold 
> of an entity manager. Let us know if you are not using such an API. Such 
> an entity manager is of type application managed. Such an entity manager 
> does not *automatically* participate in a transaction which begins 
> *after* the entity manager is created. One needs to call 
> *EntityManager.joinTransaction()*. You may *not* be doing this in your 
> code. Please check this.
> 
> I don't know your code well, so I don't know if you are using 
> EntityManager in an EJB with container managed transaction or not. If 
> yes, see if you need to use joinTransaction(). If *not*, then you should 
> code something like this:
> 
> //Get hold of UserTransaction object. In Java EE 5, you can use 
> injection to avoid JNDI lookup. See [4]
> UserTransaction utx = UserTransaction.class.cast(new 
> InitialContext().lookup("java:comp/TransactionManager"));
> utx.begin();
> entityManager.joinTransaction();
> entityManager.persist...
> utx.commit();
> 
> If this does not help, you have to provide more specific code that shows 
> how you create and use EntityManager.
> 
> Thanks,
> Sahoo
> 
> [1] 
> http://java.sun.com/javaee/5/docs/api/javax/transaction/UserTransaction.html
> [2] 
> http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityTransaction.html
> [3] 
> http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#getTransaction()
> [4] 
> http://weblogs.java.net/blog/ss141213/examples/blog1/web-app1/src/example/RegistrationServlet.java
> 
> Sreedhar.sirigiri wrote:
>> Hello Patrick,
>>
>> When I specify the following properties in persistence.xml, I get the
>> following exception. 
>> "You cannot access the EntityTransaction when using managed transactions"
>>
>> persistence.xml
>> <persistence-unit name="audit" transaction-type="JTA">
>>     	<provider>
>>             org.apache.openjpa.persistence.PersistenceProviderImpl
>>         </provider>
>>         
>> 	<jta-data-source>java:/AuditDS</jta-data-source>       
>>
>>         <class>com.vormetric.server.dao.audit.MessageDTO</class>
>>         <properties>
>> 	        <property name="openjpa.ConnectionURL" value="jdbc:db2:LOGDB"/>
>> 		<property name="openjpa.ConnectionProperties"
>> value="DatabaseName=LOGDB"></property>
>>  		<property name="openjpa.ConnectionDriverName"
>> value="COM.ibm.db2.jdbc.DB2DataSource"/>
>>  		<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
>> 		<property name="openjpa.TransactionMode" value="managed"/>
>> 		<property name="openjpa.ManagedRuntime"
>> value="jndi(TransactionManagerName=java:/TransactionManager)"/>
>> 		
>> 		<!-- TODO: Commented out TRACE levels to reduce level of logs -->
>> <!--		<property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE"
>> /> 
>> --> 
>> 		<property name="openjpa.RetryClassRegistration" value="true"/>			
>> 		<property name="openjpa.jdbc.DBDictionary" value="db2"/>
>> 	</properties>
>> </persistence-unit>
>>
>> In my DAOImpl.java I'm explicitly handling transactions by calling
>> session.getTransaction().begin() and session.getTransaction().commit(); 
>> When the trasaction-type is JTA and TransactionMode="managed" why do we
>> need
>> to handle the transactions programatically?? Do I need to do something
>> else
>> for the container to handle transactions?
>>
>> When I modify the TransactionMode="local" and call the begin & commit
>> methods, I'm able to update/insert/delete. Kindly help. How can we use
>> container managed transactions in OpenJPA. I'm not using any EJB's in my
>> project.
>>
>> Sreedhar
>>
>>
>>
>>
>> Patrick Linskey wrote:
>>   
>>> Looking at the trace, it looks like OpenJPA is being deployed correctly
>>> when you used java:comp/UserTransaction:
>>>
>>>     
>>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
>>>> Starting OpenJPA 0.9.6-incubating
>>>>       
>>> This means that OpenJPA loaded the configuration and initialized.
>>>
>>>     
>>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>>> OpenJPA will now connect to the database to attempt to determine 
>>>> what type of database dictionary to use.  To prevent this connection 
>>>> in the future, set your openjpa.jdbc.DBDictionary configuration 
>>>> property to the appropriate value for your database (see the 
>>>> documentation for available values).
>>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>>> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" 
>>>> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
>>>> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $, 
>>>> $Revision: 5908 $ )).
>>>>       
>>> This means that we were able to connect to the database and figure out
>>> that you're using MySQL.
>>>
>>>     
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>> You cannot access the EntityTransaction when using managed
>>>> transactions.
>>>>        at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:360)
>>>>        at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.java:1102)
>>>>        at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061)
>>>>        at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
>>>>       
>>> 4)
>>>
>>> It looks like IMSSystemBean.initializeJPA() is trying to invoked
>>> EntityManager.getTransaction(). Since you're using JTA, you're not
>>> allowed
>>> to use getTransaction(); all transaction management must happen through
>>> container-managed transactions or bean-managed transaction code.
>>>
>>> -Patrick
>>>
>>> -- 
>>> Patrick Linskey
>>> BEA Systems, Inc. 
>>>
>>> _______________________________________________________________________
>>> Notice:  This email message, together with any attachments, may contain
>>> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
>>> entities,  that may be confidential,  proprietary,  copyrighted  and/or
>>> legally privileged, and is intended solely for the use of the individual
>>> or entity named in this message. If you are not the intended recipient,
>>> and have received this message in error, please immediately return this
>>> by email and then delete it. 
>>>
>>>     
>>>> -----Original Message-----
>>>> From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
>>>> Sent: Monday, February 05, 2007 12:54 PM
>>>> To: open-jpa-dev@incubator.apache.org
>>>> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container 
>>>> with managed transactions?
>>>>
>>>>       
>>>>>> If that doesn't work, can you post the complete stack trace?
>>>>>>           
>>>> Thank you for your help. Unfortunately it did NOT work. I'm 
>>>> not sure what
>>>> the exact problem is, here are the strack-traces:
>>>>
>>>> first case: 
>>>> ====================================================================
>>>> openjpa.ManagedRuntime:
>>>> jndi(TransactionManagerName=java:comp/UserTransaction)
>>>>
>>>> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : 
>>>> initializing JPA
>>>> persist
>>>> ence.
>>>> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
>>>> persistence
>>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.Runtime - Starting
>>>> OpenJ
>>>> PA 0.9.6-incubating
>>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.jdbc.JDBC - OpenJPA
>>>> will
>>>>  now connect to the database to attempt to determine what 
>>>> type of database
>>>> dicti
>>>> onary to use.  To prevent this connection in the future, set your
>>>> openjpa.jdbc.D
>>>> BDictionary configuration property to the appropriate value for your
>>>> database (s
>>>> ee the documentation for available values).
>>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.jdbc.JDBC - Using
>>>> dictio
>>>> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
>>>> 5.0.27-community
>>>> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 
>>>> 2006-10-19
>>>> 17:47:4
>>>> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
>>>> 812  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Found 1
>>>> class
>>>> es with metadata in 15 milliseconds.
>>>> 844  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Found 1
>>>> class
>>>> es with metadata in 0 milliseconds.
>>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Parsing
>>>> clas
>>>> s "com.lbslogics.ims.util.JPATestObject".
>>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>>> openjpa.MetaData - Parsing
>>>> pack
>>>> age "com.lbslogics.ims.util.JPATestObject".
>>>> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>>> Reading t
>>>> able information for schema name "null", table name "JPATestObject".
>>>> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>>> Reading s
>>>> equence information for schema "null", sequence name "null".
>>>> <4|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>  You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>>> yManagerImpl.java:360)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>>> n.java:1102)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>>> :1061)
>>>>         at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>>> Remote.java:23
>>>> 4)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>> java:39)
>>>>         at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>> sorImpl.java:25)
>>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>>         at
>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>>         at
>>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>>> stServerRef.java:143)
>>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>>> 66)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>>> .java:707)
>>>>         at java.lang.Thread.run(Thread.java:595)
>>>> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while 
>>>> initializing
>>>> JPA:
>>>> You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>
>>>>
>>>> second case: 
>>>> ====================================================================
>>>> openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
>>>>
>>>> <0|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.PersistenceException:
>>>> /UserTransaction
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>> ction(AbstractBrokerFactory.java:633)
>>>>         at
>>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>>> kerFactory.java:165)
>>>>         at
>>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>>> gBrokerFactory.java:139)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:140)
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>> anager(EntityManagerFactoryImpl.java:52)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>>> n.java:1099)
>>>>         at
>>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>>> :1061)
>>>>         at
>>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>>> Remote.java:23
>>>> 4)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>> java:39)
>>>>         at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>> sorImpl.java:25)
>>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>>         at
>>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>>         at
>>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>>> stServerRef.java:143)
>>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>>> 66)
>>>>         at
>>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>>> .java:707)
>>>>         at java.lang.Thread.run(Thread.java:595)
>>>> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>>>>         at
>>>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
>>>> :95)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:355)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>>         at
>>>> org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
>>>> 8)
>>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>>         at
>>>> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
>>>> nagedRuntime.java:51)
>>>>         at
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>> ction(AbstractBrokerFactory.java:598)
>>>>         ... 21 more
>>>> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while 
>>>> initializing
>>>> JPA:
>>>> /UserTransaction
>>>>
>>>> *************************************************
>>>>
>>>>
>>>> From my understanding it seems that there is a fatal error in 
>>>> the second 
>>>> case, like openJPA was not able to even lookup JOnAS' 
>>>> transaction manager.
>>>> It seems to me that in the first case, the transaction 
>>>> manager lookup worked
>>>> but there is another subsequent error? 
>>>>
>>>> <4|false|0.9.6-incubating>
>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>  You cannot access the EntityTransaction when using managed 
>>>> transactions.
>>>>         at
>>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>>> yManagerImpl.java:360)
>>>>
>>>> Can you explain what this message means exactly?
>>>>
>>>> thank you in advance,
>>>> HANS
>>>>
>>>>
>>>>       
>>>>> -----Ursprüngliche Nachricht-----
>>>>> Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] 
>>>>>         
>>>> Im Auftrag von
>>>>       
>>>>> Marc Prud'hommeaux
>>>>> Gesendet: Montag, 05. Februar 2007 21:19
>>>>> An: open-jpa-dev@incubator.apache.org
>>>>> Betreff: Re: Using OpenJPA within an "old" J2EE1.4 
>>>>>         
>>>> container with managed
>>>>       
>>>>> transactions?
>>>>>
>>>>> Hans-
>>>>>
>>>>> We might not have Jonas' TransactionManager location configured in
>>>>> the automatic TM lookup in OpenJPA. Can you try to manually specify
>>>>> it with the following property:
>>>>>
>>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
>>>>> UserTransaction)
>>>>>
>>>>> if that doesn't work, try:
>>>>>
>>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
>>>>> UserTransaction)
>>>>>
>>>>> (apparently, Jonas' UserTransaction implementation is also their
>>>>> TransactionManager implementation)
>>>>>
>>>>> If that doesn't work, can you post the complete stack trace?
>>>>>
>>>>> If it does work, please let us know so we can add it to the list of
>>>>> auto-discovered transaction managers.
>>>>>
>>>>>
>>>>>
>>>>> On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
>>>>>
>>>>>         
>>>>>> Hi there,
>>>>>>
>>>>>>
>>>>>>
>>>>>> I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
>>>>>> persistence to
>>>>>> openJPA. Currently I got stuck when
>>>>>>
>>>>>> trying to configure OpenJPA persistence, when creating the
>>>>>> EntityManagerFactory and the EntityManager instance,
>>>>>>
>>>>>> I get the following error:
>>>>>>
>>>>>>
>>>>>>
>>>>>> <4|true|0.9.6-incubating>
>>>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>>>
>>>>>> Could not perform automatic lookup of EJB container's
>>>>>> javax.transaction.Transact
>>>>>>
>>>>>> ionManager implementation. Please ensure that you are running the
>>>>>> application fr
>>>>>>
>>>>>> om within an EJB 1.1 compliant EJB container, and then set the
>>>>>> org.apache.openjp
>>>>>>
>>>>>> a.ManagedRuntime property to the appropriate value to obtain the
>>>>>> TransactionMana
>>>>>>
>>>>>> ger.
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
>>>>       
>>>>>> utomaticManagedRuntime.java:180)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>>       
>>>>>> ction(AbstractBrokerFactory.java:598)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>>       
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>>>       
>>>>>> kerFactory.java:165)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>>>       
>>>>>> gBrokerFactory.java:139)
>>>>>>
>>>>>>         at
>>>>>>
>>>>>>           
>>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>>       
>>>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Currently I'm running the application within the JOnAS 4.8.3 J2EE
>>>>>> Server.
>>>>>> How can I configure open JPA to
>>>>>>
>>>>>> use the provided managed Transactions of JOnAS? (this 
>>>>>>           
>>>> works also with
>>>>       
>>>>>> Hibernate 2.x so I assume it should
>>>>>>
>>>>>> somehow be possible with openJPA?)
>>>>>>
>>>>>>
>>>>>>
>>>>>> any help appreciated!
>>>>>>
>>>>>>
>>>>>>
>>>>>> regards,
>>>>>>
>>>>>> HANS
>>>>>>
>>>>>>
>>>>>>
>>>>>> ===========================
>>>>>> virtually hanzz...
>>>>>>
>>>>>>
>>>>>>
>>>>>>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>>>>>>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
>>>>>> (research)
>>>>>>
>>>>>>
>>>>>>
>>>>>>           
>>>>       
>>>     
>>
>>   
> 
> 

-- 
View this message in context: http://www.nabble.com/Using-OpenJPA-within-an-%22old%22-J2EE1.4-container-with-managed-transactions--tf3176559.html#a11341475
Sent from the OpenJPA Developers mailing list archive at Nabble.com.


Re: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by Sahoo <Sa...@Sun.COM>.
Hi Sreedhar,

I think there is a misunderstanding about "container managed 
transaction(CMT)." In a pure Java EE (true for all previous J2EE 
containers as well), only *EJBs* are allowed to use container managed 
transaction feature. It saves the EJB programmer from marking 
transaction boundaries explicitly; each business method is implicitly 
used as a transaction boundary. There is no such facility for non-EJB 
components in a Java EE container. So, a programmer has to specify the 
transaction boundary explicitly. *javax.transaction.UserTransaction*[1], 
which is part of JTA, is the API that is typically used to do this. 
Since Java Persistence API can be used in environment where JTA may not 
be supported, it also supports an alternative API, called 
*EntityTransaction*[2], to control transactions. This API does not have 
to be used in a container environment which supports JTA. /In fact, the 
method EntityManager.getTransaction() which gives you access to the 
EntityTransaction object should not be even called for an EntityManager 
with transaction-type JTA [3]/. By now it should be clear as to why that 
exception was thrown by OpenJPA. As Marc suggested, you should *stop* 
using getTransaction() as  you have configured persistence.xml to JTA 
transaction-type.

There is another concept that can play a role here for a JTA 
transaction-type entity manager. There is another classification of 
entity managers. Depending on how an entity manager is obtained in code, 
it can be either be *application managed* or *container managed* entity 
manager. I see the subject line saying "J2EE1.4", so I am assuming that 
you can't use container managed entity manager. It is very likely that 
you are using *EntityManagerFactory.createEntityManager()* to get hold 
of an entity manager. Let us know if you are not using such an API. Such 
an entity manager is of type application managed. Such an entity manager 
does not *automatically* participate in a transaction which begins 
*after* the entity manager is created. One needs to call 
*EntityManager.joinTransaction()*. You may *not* be doing this in your 
code. Please check this.

I don't know your code well, so I don't know if you are using 
EntityManager in an EJB with container managed transaction or not. If 
yes, see if you need to use joinTransaction(). If *not*, then you should 
code something like this:

//Get hold of UserTransaction object. In Java EE 5, you can use 
injection to avoid JNDI lookup. See [4]
UserTransaction utx = UserTransaction.class.cast(new 
InitialContext().lookup("java:comp/TransactionManager"));
utx.begin();
entityManager.joinTransaction();
entityManager.persist...
utx.commit();

If this does not help, you have to provide more specific code that shows 
how you create and use EntityManager.

Thanks,
Sahoo

[1] 
http://java.sun.com/javaee/5/docs/api/javax/transaction/UserTransaction.html
[2] 
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityTransaction.html
[3] 
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#getTransaction()
[4] 
http://weblogs.java.net/blog/ss141213/examples/blog1/web-app1/src/example/RegistrationServlet.java

Sreedhar.sirigiri wrote:
> Hello Patrick,
>
> When I specify the following properties in persistence.xml, I get the
> following exception. 
> "You cannot access the EntityTransaction when using managed transactions"
>
> persistence.xml
> <persistence-unit name="audit" transaction-type="JTA">
>     	<provider>
>             org.apache.openjpa.persistence.PersistenceProviderImpl
>         </provider>
>         
> 	<jta-data-source>java:/AuditDS</jta-data-source>       
>
>         <class>com.vormetric.server.dao.audit.MessageDTO</class>
>         <properties>
> 	        <property name="openjpa.ConnectionURL" value="jdbc:db2:LOGDB"/>
> 		<property name="openjpa.ConnectionProperties"
> value="DatabaseName=LOGDB"></property>
>  		<property name="openjpa.ConnectionDriverName"
> value="COM.ibm.db2.jdbc.DB2DataSource"/>
>  		<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
> 		<property name="openjpa.TransactionMode" value="managed"/>
> 		<property name="openjpa.ManagedRuntime"
> value="jndi(TransactionManagerName=java:/TransactionManager)"/>
> 		
> 		<!-- TODO: Commented out TRACE levels to reduce level of logs -->
> <!--		<property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE" /> 
> --> 
> 		<property name="openjpa.RetryClassRegistration" value="true"/>			
> 		<property name="openjpa.jdbc.DBDictionary" value="db2"/>
> 	</properties>
> </persistence-unit>
>
> In my DAOImpl.java I'm explicitly handling transactions by calling
> session.getTransaction().begin() and session.getTransaction().commit(); 
> When the trasaction-type is JTA and TransactionMode="managed" why do we need
> to handle the transactions programatically?? Do I need to do something else
> for the container to handle transactions?
>
> When I modify the TransactionMode="local" and call the begin & commit
> methods, I'm able to update/insert/delete. Kindly help. How can we use
> container managed transactions in OpenJPA. I'm not using any EJB's in my
> project.
>
> Sreedhar
>
>
>
>
> Patrick Linskey wrote:
>   
>> Looking at the trace, it looks like OpenJPA is being deployed correctly
>> when you used java:comp/UserTransaction:
>>
>>     
>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
>>> Starting OpenJPA 0.9.6-incubating
>>>       
>> This means that OpenJPA loaded the configuration and initialized.
>>
>>     
>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>> OpenJPA will now connect to the database to attempt to determine 
>>> what type of database dictionary to use.  To prevent this connection 
>>> in the future, set your openjpa.jdbc.DBDictionary configuration 
>>> property to the appropriate value for your database (see the 
>>> documentation for available values).
>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>>> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" 
>>> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
>>> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $, 
>>> $Revision: 5908 $ )).
>>>       
>> This means that we were able to connect to the database and figure out
>> that you're using MySQL.
>>
>>     
>>> org.apache.openjpa.persistence.InvalidStateException:
>>> You cannot access the EntityTransaction when using managed transactions.
>>>        at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:360)
>>>        at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.java:1102)
>>>        at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061)
>>>        at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
>>>       
>> 4)
>>
>> It looks like IMSSystemBean.initializeJPA() is trying to invoked
>> EntityManager.getTransaction(). Since you're using JTA, you're not allowed
>> to use getTransaction(); all transaction management must happen through
>> container-managed transactions or bean-managed transaction code.
>>
>> -Patrick
>>
>> -- 
>> Patrick Linskey
>> BEA Systems, Inc. 
>>
>> _______________________________________________________________________
>> Notice:  This email message, together with any attachments, may contain
>> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
>> entities,  that may be confidential,  proprietary,  copyrighted  and/or
>> legally privileged, and is intended solely for the use of the individual
>> or entity named in this message. If you are not the intended recipient,
>> and have received this message in error, please immediately return this
>> by email and then delete it. 
>>
>>     
>>> -----Original Message-----
>>> From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
>>> Sent: Monday, February 05, 2007 12:54 PM
>>> To: open-jpa-dev@incubator.apache.org
>>> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container 
>>> with managed transactions?
>>>
>>>       
>>>>> If that doesn't work, can you post the complete stack trace?
>>>>>           
>>> Thank you for your help. Unfortunately it did NOT work. I'm 
>>> not sure what
>>> the exact problem is, here are the strack-traces:
>>>
>>> first case: 
>>> ====================================================================
>>> openjpa.ManagedRuntime:
>>> jndi(TransactionManagerName=java:comp/UserTransaction)
>>>
>>> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : 
>>> initializing JPA
>>> persist
>>> ence.
>>> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
>>> persistence
>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.Runtime - Starting
>>> OpenJ
>>> PA 0.9.6-incubating
>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.jdbc.JDBC - OpenJPA
>>> will
>>>  now connect to the database to attempt to determine what 
>>> type of database
>>> dicti
>>> onary to use.  To prevent this connection in the future, set your
>>> openjpa.jdbc.D
>>> BDictionary configuration property to the appropriate value for your
>>> database (s
>>> ee the documentation for available values).
>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.jdbc.JDBC - Using
>>> dictio
>>> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
>>> 5.0.27-community
>>> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 
>>> 2006-10-19
>>> 17:47:4
>>> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
>>> 812  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.MetaData - Found 1
>>> class
>>> es with metadata in 15 milliseconds.
>>> 844  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.MetaData - Found 1
>>> class
>>> es with metadata in 0 milliseconds.
>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.MetaData - Parsing
>>> clas
>>> s "com.lbslogics.ims.util.JPATestObject".
>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>>> openjpa.MetaData - Parsing
>>> pack
>>> age "com.lbslogics.ims.util.JPATestObject".
>>> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>> Reading t
>>> able information for schema name "null", table name "JPATestObject".
>>> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>>> Reading s
>>> equence information for schema "null", sequence name "null".
>>> <4|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.InvalidStateException:
>>>  You cannot access the EntityTransaction when using managed 
>>> transactions.
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>> yManagerImpl.java:360)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>> n.java:1102)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>> :1061)
>>>         at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>> Remote.java:23
>>> 4)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>> java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>> sorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>         at
>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>         at
>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>> stServerRef.java:143)
>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>> 66)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>> .java:707)
>>>         at java.lang.Thread.run(Thread.java:595)
>>> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while 
>>> initializing
>>> JPA:
>>> You cannot access the EntityTransaction when using managed 
>>> transactions.
>>>
>>>
>>> second case: 
>>> ====================================================================
>>> openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
>>>
>>> <0|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.PersistenceException:
>>> /UserTransaction
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>> ction(AbstractBrokerFactory.java:633)
>>>         at
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>> kerFactory.java:165)
>>>         at
>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>> gBrokerFactory.java:139)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>> anager(EntityManagerFactoryImpl.java:187)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>> anager(EntityManagerFactoryImpl.java:140)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>> anager(EntityManagerFactoryImpl.java:52)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>>> n.java:1099)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>>> :1061)
>>>         at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>> Remote.java:23
>>> 4)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>> java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>> sorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>         at
>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>         at
>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>>> stServerRef.java:143)
>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>>> 66)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>>> .java:707)
>>>         at java.lang.Thread.run(Thread.java:595)
>>> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>>>         at
>>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
>>> :95)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java:355)
>>>         at
>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>>>         at
>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>         at
>>> org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
>>> 8)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>>         at
>>> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
>>> nagedRuntime.java:51)
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>> ction(AbstractBrokerFactory.java:598)
>>>         ... 21 more
>>> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while 
>>> initializing
>>> JPA:
>>> /UserTransaction
>>>
>>> *************************************************
>>>
>>>
>>> From my understanding it seems that there is a fatal error in 
>>> the second 
>>> case, like openJPA was not able to even lookup JOnAS' 
>>> transaction manager.
>>> It seems to me that in the first case, the transaction 
>>> manager lookup worked
>>> but there is another subsequent error? 
>>>
>>> <4|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.InvalidStateException:
>>>  You cannot access the EntityTransaction when using managed 
>>> transactions.
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>>> yManagerImpl.java:360)
>>>
>>> Can you explain what this message means exactly?
>>>
>>> thank you in advance,
>>> HANS
>>>
>>>
>>>       
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] 
>>>>         
>>> Im Auftrag von
>>>       
>>>> Marc Prud'hommeaux
>>>> Gesendet: Montag, 05. Februar 2007 21:19
>>>> An: open-jpa-dev@incubator.apache.org
>>>> Betreff: Re: Using OpenJPA within an "old" J2EE1.4 
>>>>         
>>> container with managed
>>>       
>>>> transactions?
>>>>
>>>> Hans-
>>>>
>>>> We might not have Jonas' TransactionManager location configured in
>>>> the automatic TM lookup in OpenJPA. Can you try to manually specify
>>>> it with the following property:
>>>>
>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
>>>> UserTransaction)
>>>>
>>>> if that doesn't work, try:
>>>>
>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
>>>> UserTransaction)
>>>>
>>>> (apparently, Jonas' UserTransaction implementation is also their
>>>> TransactionManager implementation)
>>>>
>>>> If that doesn't work, can you post the complete stack trace?
>>>>
>>>> If it does work, please let us know so we can add it to the list of
>>>> auto-discovered transaction managers.
>>>>
>>>>
>>>>
>>>> On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
>>>>
>>>>         
>>>>> Hi there,
>>>>>
>>>>>
>>>>>
>>>>> I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
>>>>> persistence to
>>>>> openJPA. Currently I got stuck when
>>>>>
>>>>> trying to configure OpenJPA persistence, when creating the
>>>>> EntityManagerFactory and the EntityManager instance,
>>>>>
>>>>> I get the following error:
>>>>>
>>>>>
>>>>>
>>>>> <4|true|0.9.6-incubating>
>>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>>
>>>>> Could not perform automatic lookup of EJB container's
>>>>> javax.transaction.Transact
>>>>>
>>>>> ionManager implementation. Please ensure that you are running the
>>>>> application fr
>>>>>
>>>>> om within an EJB 1.1 compliant EJB container, and then set the
>>>>> org.apache.openjp
>>>>>
>>>>> a.ManagedRuntime property to the appropriate value to obtain the
>>>>> TransactionMana
>>>>>
>>>>> ger.
>>>>>
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
>>>       
>>>>> utomaticManagedRuntime.java:180)
>>>>>
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>>>       
>>>>> ction(AbstractBrokerFactory.java:598)
>>>>>
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>       
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>>>       
>>>>> kerFactory.java:165)
>>>>>
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>>>       
>>>>> gBrokerFactory.java:139)
>>>>>
>>>>>         at
>>>>>
>>>>>           
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>>>       
>>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Currently I'm running the application within the JOnAS 4.8.3 J2EE
>>>>> Server.
>>>>> How can I configure open JPA to
>>>>>
>>>>> use the provided managed Transactions of JOnAS? (this 
>>>>>           
>>> works also with
>>>       
>>>>> Hibernate 2.x so I assume it should
>>>>>
>>>>> somehow be possible with openJPA?)
>>>>>
>>>>>
>>>>>
>>>>> any help appreciated!
>>>>>
>>>>>
>>>>>
>>>>> regards,
>>>>>
>>>>> HANS
>>>>>
>>>>>
>>>>>
>>>>> ===========================
>>>>> virtually hanzz...
>>>>>
>>>>>
>>>>>
>>>>>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>>>>>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
>>>>> (research)
>>>>>
>>>>>
>>>>>
>>>>>           
>>>       
>>     
>
>   

Re: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by Marc Prud'hommeaux <mp...@apache.org>.
Why is com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA()  
calling EntityManager.getTransaction()? This is not legal when you  
are trying to use container managed transactions, and it shouldn't be  
necessary.

If you remove the call to EntityManager.getTransaction() from that  
method, do you still get an error?



On Jun 25, 2007, at 11:27 PM, Sreedhar.sirigiri wrote:

>
> Hello Patrick,
>
> When I specify the following properties in persistence.xml, I get the
> following exception.
> "You cannot access the EntityTransaction when using managed  
> transactions"
>
> persistence.xml
> <persistence-unit name="audit" transaction-type="JTA">
>     	<provider>
>             org.apache.openjpa.persistence.PersistenceProviderImpl
>         </provider>
>
> 	<jta-data-source>java:/AuditDS</jta-data-source>
>
>         <class>com.vormetric.server.dao.audit.MessageDTO</class>
>         <properties>
> 	        <property name="openjpa.ConnectionURL"  
> value="jdbc:db2:LOGDB"/>
> 		<property name="openjpa.ConnectionProperties"
> value="DatabaseName=LOGDB"></property>
>  		<property name="openjpa.ConnectionDriverName"
> value="COM.ibm.db2.jdbc.DB2DataSource"/>
>  		<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
> 		<property name="openjpa.TransactionMode" value="managed"/>
> 		<property name="openjpa.ManagedRuntime"
> value="jndi(TransactionManagerName=java:/TransactionManager)"/>
> 		
> 		<!-- TODO: Commented out TRACE levels to reduce level of logs -->
> <!--		<property name="openjpa.Log"  
> value="DefaultLevel=TRACE,SQL=TRACE" />
> -->
> 		<property name="openjpa.RetryClassRegistration" value="true"/>			
> 		<property name="openjpa.jdbc.DBDictionary" value="db2"/>
> 	</properties>
> </persistence-unit>
>
> In my DAOImpl.java I'm explicitly handling transactions by calling
> session.getTransaction().begin() and session.getTransaction().commit 
> ();
> When the trasaction-type is JTA and TransactionMode="managed" why  
> do we need
> to handle the transactions programatically?? Do I need to do  
> something else
> for the container to handle transactions?
>
> When I modify the TransactionMode="local" and call the begin & commit
> methods, I'm able to update/insert/delete. Kindly help. How can we use
> container managed transactions in OpenJPA. I'm not using any EJB's  
> in my
> project.
>
> Sreedhar
>
>
>
>
> Patrick Linskey wrote:
>>
>> Looking at the trace, it looks like OpenJPA is being deployed  
>> correctly
>> when you used java:comp/UserTransaction:
>>
>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
>>> Starting OpenJPA 0.9.6-incubating
>>
>> This means that OpenJPA loaded the configuration and initialized.
>>
>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC -
>>> OpenJPA will now connect to the database to attempt to determine
>>> what type of database dictionary to use.  To prevent this connection
>>> in the future, set your openjpa.jdbc.DBDictionary configuration
>>> property to the appropriate value for your database (see the
>>> documentation for available values).
>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC -
>>> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary"
>>> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
>>> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $,
>>> $Revision: 5908 $ )).
>>
>> This means that we were able to connect to the database and figure  
>> out
>> that you're using MySQL.
>>
>>> org.apache.openjpa.persistence.InvalidStateException:
>>> You cannot access the EntityTransaction when using managed  
>>> transactions.
>>>        at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction 
>>> (EntityManagerImpl.java:360)
>>>        at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA 
>>> (IMSSystemBean.java:1102)
>>>        at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup 
>>> (IMSSystemBean.java:1061)
>>>        at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMS 
>>> SystemBean2005147373Remote.startup 
>>> (JOnASIMSSystemBean2005147373Remote.java:23
>> 4)
>>
>> It looks like IMSSystemBean.initializeJPA() is trying to invoked
>> EntityManager.getTransaction(). Since you're using JTA, you're not  
>> allowed
>> to use getTransaction(); all transaction management must happen  
>> through
>> container-managed transactions or bean-managed transaction code.
>>
>> -Patrick
>>
>> -- 
>> Patrick Linskey
>> BEA Systems, Inc.
>>
>> _____________________________________________________________________ 
>> __
>> Notice:  This email message, together with any attachments, may  
>> contain
>> information  of  BEA Systems,  Inc.,  its subsidiaries  and   
>> affiliated
>> entities,  that may be confidential,  proprietary,  copyrighted   
>> and/or
>> legally privileged, and is intended solely for the use of the  
>> individual
>> or entity named in this message. If you are not the intended  
>> recipient,
>> and have received this message in error, please immediately return  
>> this
>> by email and then delete it.
>>
>>> -----Original Message-----
>>> From: Hans J. Prueller [mailto:hans.prueller@gmx.net]
>>> Sent: Monday, February 05, 2007 12:54 PM
>>> To: open-jpa-dev@incubator.apache.org
>>> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container
>>> with managed transactions?
>>>
>>>>> If that doesn't work, can you post the complete stack trace?
>>>
>>> Thank you for your help. Unfortunately it did NOT work. I'm
>>> not sure what
>>> the exact problem is, here are the strack-traces:
>>>
>>> first case:
>>> ====================================================================
>>> openjpa.ManagedRuntime:
>>> jndi(TransactionManagerName=java:comp/UserTransaction)
>>>
>>> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA :
>>> initializing JPA
>>> persist
>>> ence.
>>> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
>>> persistence
>>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.Runtime - Starting
>>> OpenJ
>>> PA 0.9.6-incubating
>>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.jdbc.JDBC - OpenJPA
>>> will
>>>  now connect to the database to attempt to determine what
>>> type of database
>>> dicti
>>> onary to use.  To prevent this connection in the future, set your
>>> openjpa.jdbc.D
>>> BDictionary configuration property to the appropriate value for your
>>> database (s
>>> ee the documentation for available values).
>>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.jdbc.JDBC - Using
>>> dictio
>>> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
>>> 5.0.27-community
>>> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date:
>>> 2006-10-19
>>> 17:47:4
>>> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
>>> 812  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.MetaData - Found 1
>>> class
>>> es with metadata in 15 milliseconds.
>>> 844  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.MetaData - Found 1
>>> class
>>> es with metadata in 0 milliseconds.
>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.MetaData - Parsing
>>> clas
>>> s "com.lbslogics.ims.util.JPATestObject".
>>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6]
>>> openjpa.MetaData - Parsing
>>> pack
>>> age "com.lbslogics.ims.util.JPATestObject".
>>> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6]  
>>> openjpa.jdbc.Schema -
>>> Reading t
>>> able information for schema name "null", table name "JPATestObject".
>>> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6]  
>>> openjpa.jdbc.Schema -
>>> Reading s
>>> equence information for schema "null", sequence name "null".
>>> <4|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.InvalidStateException:
>>>  You cannot access the EntityTransaction when using managed
>>> transactions.
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction 
>>> (Entit
>>> yManagerImpl.java:360)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA 
>>> (IMSSystemBea
>>> n.java:1102)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup 
>>> (IMSSystemBean.java
>>> :1061)
>>>         at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMS 
>>> S
>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>> Remote.java:23
>>> 4)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native  
>>> Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke 
>>> (NativeMethodAccessorImpl.
>>> java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke 
>>> (DelegatingMethodAcces
>>> sorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>         at
>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>         at
>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch 
>>> (JUnica
>>> stServerRef.java:143)
>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>         at java.security.AccessController.doPrivileged(Native  
>>> Method)
>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java: 
>>> 149)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages 
>>> (TCPTransport.java:4
>>> 66)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run 
>>> (TCPTransport
>>> .java:707)
>>>         at java.lang.Thread.run(Thread.java:595)
>>> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while
>>> initializing
>>> JPA:
>>> You cannot access the EntityTransaction when using managed
>>> transactions.
>>>
>>>
>>> second case:
>>> ====================================================================
>>> openjpa.ManagedRuntime: jndi(TransactionManagerName=/ 
>>> UserTransaction)
>>>
>>> <0|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.PersistenceException:
>>> /UserTransaction
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTrans 
>>> a
>>> ction(AbstractBrokerFactory.java:633)
>>>         at
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker 
>>> (AbstractBro
>>> kerFactory.java:165)
>>>         at
>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker 
>>> (Delegatin
>>> gBrokerFactory.java:139)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntity 
>>> M
>>> anager(EntityManagerFactoryImpl.java:187)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntity 
>>> M
>>> anager(EntityManagerFactoryImpl.java:140)
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntity 
>>> M
>>> anager(EntityManagerFactoryImpl.java:52)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA 
>>> (IMSSystemBea
>>> n.java:1099)
>>>         at
>>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup 
>>> (IMSSystemBean.java
>>> :1061)
>>>         at
>>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMS 
>>> S
>>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>>> Remote.java:23
>>> 4)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native  
>>> Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke 
>>> (NativeMethodAccessorImpl.
>>> java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke 
>>> (DelegatingMethodAcces
>>> sorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>>         at
>>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>>         at
>>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch 
>>> (JUnica
>>> stServerRef.java:143)
>>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>>         at java.security.AccessController.doPrivileged(Native  
>>> Method)
>>>         at sun.rmi.transport.Transport.serviceCall(Transport.java: 
>>> 149)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport.handleMessages 
>>> (TCPTransport.java:4
>>> 66)
>>>         at
>>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run 
>>> (TCPTransport
>>> .java:707)
>>>         at java.lang.Thread.run(Thread.java:595)
>>> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>>>         at
>>> com.sun.jndi.rmi.registry.RegistryContext.lookup 
>>> (RegistryContext.java
>>> :95)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java: 
>>> 355)
>>>         at
>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>>>         at
>>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java: 
>>> 351)
>>>         at
>>> org.objectweb.carol.jndi.spi.MultiContext.lookup 
>>> (MultiContext.java:11
>>> 8)
>>>         at javax.naming.InitialContext.lookup(InitialContext.java: 
>>> 351)
>>>         at
>>> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager 
>>> (JNDIMa
>>> nagedRuntime.java:51)
>>>         at
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTrans 
>>> a
>>> ction(AbstractBrokerFactory.java:598)
>>>         ... 21 more
>>> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while
>>> initializing
>>> JPA:
>>> /UserTransaction
>>>
>>> *************************************************
>>>
>>>
>>> From my understanding it seems that there is a fatal error in
>>> the second
>>> case, like openJPA was not able to even lookup JOnAS'
>>> transaction manager.
>>> It seems to me that in the first case, the transaction
>>> manager lookup worked
>>> but there is another subsequent error?
>>>
>>> <4|false|0.9.6-incubating>
>>> org.apache.openjpa.persistence.InvalidStateException:
>>>  You cannot access the EntityTransaction when using managed
>>> transactions.
>>>         at
>>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction 
>>> (Entit
>>> yManagerImpl.java:360)
>>>
>>> Can you explain what this message means exactly?
>>>
>>> thank you in advance,
>>> HANS
>>>
>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com]
>>> Im Auftrag von
>>>> Marc Prud'hommeaux
>>>> Gesendet: Montag, 05. Februar 2007 21:19
>>>> An: open-jpa-dev@incubator.apache.org
>>>> Betreff: Re: Using OpenJPA within an "old" J2EE1.4
>>> container with managed
>>>> transactions?
>>>>
>>>> Hans-
>>>>
>>>> We might not have Jonas' TransactionManager location configured in
>>>> the automatic TM lookup in OpenJPA. Can you try to manually specify
>>>> it with the following property:
>>>>
>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
>>>> UserTransaction)
>>>>
>>>> if that doesn't work, try:
>>>>
>>>>     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
>>>> UserTransaction)
>>>>
>>>> (apparently, Jonas' UserTransaction implementation is also their
>>>> TransactionManager implementation)
>>>>
>>>> If that doesn't work, can you post the complete stack trace?
>>>>
>>>> If it does work, please let us know so we can add it to the list of
>>>> auto-discovered transaction managers.
>>>>
>>>>
>>>>
>>>> On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
>>>>
>>>>> Hi there,
>>>>>
>>>>>
>>>>>
>>>>> I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
>>>>> persistence to
>>>>> openJPA. Currently I got stuck when
>>>>>
>>>>> trying to configure OpenJPA persistence, when creating the
>>>>> EntityManagerFactory and the EntityManager instance,
>>>>>
>>>>> I get the following error:
>>>>>
>>>>>
>>>>>
>>>>> <4|true|0.9.6-incubating>
>>>>> org.apache.openjpa.persistence.InvalidStateException:
>>>>>
>>>>> Could not perform automatic lookup of EJB container's
>>>>> javax.transaction.Transact
>>>>>
>>>>> ionManager implementation. Please ensure that you are running the
>>>>> application fr
>>>>>
>>>>> om within an EJB 1.1 compliant EJB container, and then set the
>>>>> org.apache.openjp
>>>>>
>>>>> a.ManagedRuntime property to the appropriate value to obtain the
>>>>> TransactionMana
>>>>>
>>>>> ger.
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager( 
>>> A
>>>>>
>>>>> utomaticManagedRuntime.java:180)
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTrans 
>>> a
>>>>>
>>>>> ction(AbstractBrokerFactory.java:598)
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker 
>>> (AbstractBro
>>>>>
>>>>> kerFactory.java:165)
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker 
>>> (Delegatin
>>>>>
>>>>> gBrokerFactory.java:139)
>>>>>
>>>>>         at
>>>>>
>>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntity 
>>> M
>>>>>
>>>>> anager(EntityManagerFactoryImpl.java:187)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Currently I'm running the application within the JOnAS 4.8.3 J2EE
>>>>> Server.
>>>>> How can I configure open JPA to
>>>>>
>>>>> use the provided managed Transactions of JOnAS? (this
>>> works also with
>>>>> Hibernate 2.x so I assume it should
>>>>>
>>>>> somehow be possible with openJPA?)
>>>>>
>>>>>
>>>>>
>>>>> any help appreciated!
>>>>>
>>>>>
>>>>>
>>>>> regards,
>>>>>
>>>>> HANS
>>>>>
>>>>>
>>>>>
>>>>> ===========================
>>>>> virtually hanzz...
>>>>>
>>>>>
>>>>>
>>>>>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>>>>>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
>>>>> (research)
>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/Using-OpenJPA- 
> within-an-%22old%22-J2EE1.4-container-with-managed-transactions-- 
> tf3176559.html#a11300537
> Sent from the OpenJPA Developers mailing list archive at Nabble.com.
>


RE: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by "Sreedhar.sirigiri" <sr...@gmail.com>.
Hello Patrick,

When I specify the following properties in persistence.xml, I get the
following exception. 
"You cannot access the EntityTransaction when using managed transactions"

persistence.xml
<persistence-unit name="audit" transaction-type="JTA">
    	<provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
        
	<jta-data-source>java:/AuditDS</jta-data-source>       

        <class>com.vormetric.server.dao.audit.MessageDTO</class>
        <properties>
	        <property name="openjpa.ConnectionURL" value="jdbc:db2:LOGDB"/>
		<property name="openjpa.ConnectionProperties"
value="DatabaseName=LOGDB"></property>
 		<property name="openjpa.ConnectionDriverName"
value="COM.ibm.db2.jdbc.DB2DataSource"/>
 		<property name="openjpa.ConnectionFactoryMode"  value="managed"/>
		<property name="openjpa.TransactionMode" value="managed"/>
		<property name="openjpa.ManagedRuntime"
value="jndi(TransactionManagerName=java:/TransactionManager)"/>
		
		<!-- TODO: Commented out TRACE levels to reduce level of logs -->
<!--		<property name="openjpa.Log" value="DefaultLevel=TRACE,SQL=TRACE" /> 
--> 
		<property name="openjpa.RetryClassRegistration" value="true"/>			
		<property name="openjpa.jdbc.DBDictionary" value="db2"/>
	</properties>
</persistence-unit>

In my DAOImpl.java I'm explicitly handling transactions by calling
session.getTransaction().begin() and session.getTransaction().commit(); 
When the trasaction-type is JTA and TransactionMode="managed" why do we need
to handle the transactions programatically?? Do I need to do something else
for the container to handle transactions?

When I modify the TransactionMode="local" and call the begin & commit
methods, I'm able to update/insert/delete. Kindly help. How can we use
container managed transactions in OpenJPA. I'm not using any EJB's in my
project.

Sreedhar




Patrick Linskey wrote:
> 
> Looking at the trace, it looks like OpenJPA is being deployed correctly
> when you used java:comp/UserTransaction:
> 
>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
>> Starting OpenJPA 0.9.6-incubating
> 
> This means that OpenJPA loaded the configuration and initialized.
> 
>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>> OpenJPA will now connect to the database to attempt to determine 
>> what type of database dictionary to use.  To prevent this connection 
>> in the future, set your openjpa.jdbc.DBDictionary configuration 
>> property to the appropriate value for your database (see the 
>> documentation for available values).
>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
>> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" 
>> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
>> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $, 
>> $Revision: 5908 $ )).
> 
> This means that we were able to connect to the database and figure out
> that you're using MySQL.
> 
>> org.apache.openjpa.persistence.InvalidStateException:
>> You cannot access the EntityTransaction when using managed transactions.
>>        at
>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:360)
>>        at
>>com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.java:1102)
>>        at
>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061)
>>        at
>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
> 4)
> 
> It looks like IMSSystemBean.initializeJPA() is trying to invoked
> EntityManager.getTransaction(). Since you're using JTA, you're not allowed
> to use getTransaction(); all transaction management must happen through
> container-managed transactions or bean-managed transaction code.
> 
> -Patrick
> 
> -- 
> Patrick Linskey
> BEA Systems, Inc. 
> 
> _______________________________________________________________________
> Notice:  This email message, together with any attachments, may contain
> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
> entities,  that may be confidential,  proprietary,  copyrighted  and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it. 
> 
>> -----Original Message-----
>> From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
>> Sent: Monday, February 05, 2007 12:54 PM
>> To: open-jpa-dev@incubator.apache.org
>> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container 
>> with managed transactions?
>> 
>> >> If that doesn't work, can you post the complete stack trace?
>> 
>> Thank you for your help. Unfortunately it did NOT work. I'm 
>> not sure what
>> the exact problem is, here are the strack-traces:
>> 
>> first case: 
>> ====================================================================
>> openjpa.ManagedRuntime:
>> jndi(TransactionManagerName=java:comp/UserTransaction)
>> 
>> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : 
>> initializing JPA
>> persist
>> ence.
>> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
>> persistence
>> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.Runtime - Starting
>> OpenJ
>> PA 0.9.6-incubating
>> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.jdbc.JDBC - OpenJPA
>> will
>>  now connect to the database to attempt to determine what 
>> type of database
>> dicti
>> onary to use.  To prevent this connection in the future, set your
>> openjpa.jdbc.D
>> BDictionary configuration property to the appropriate value for your
>> database (s
>> ee the documentation for available values).
>> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.jdbc.JDBC - Using
>> dictio
>> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
>> 5.0.27-community
>> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 
>> 2006-10-19
>> 17:47:4
>> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
>> 812  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.MetaData - Found 1
>> class
>> es with metadata in 15 milliseconds.
>> 844  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.MetaData - Found 1
>> class
>> es with metadata in 0 milliseconds.
>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.MetaData - Parsing
>> clas
>> s "com.lbslogics.ims.util.JPATestObject".
>> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
>> openjpa.MetaData - Parsing
>> pack
>> age "com.lbslogics.ims.util.JPATestObject".
>> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>> Reading t
>> able information for schema name "null", table name "JPATestObject".
>> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
>> Reading s
>> equence information for schema "null", sequence name "null".
>> <4|false|0.9.6-incubating>
>> org.apache.openjpa.persistence.InvalidStateException:
>>  You cannot access the EntityTransaction when using managed 
>> transactions.
>>         at
>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>> yManagerImpl.java:360)
>>         at
>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>> n.java:1102)
>>         at
>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>> :1061)
>>         at
>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>> Remote.java:23
>> 4)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>> java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>> sorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>         at
>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>         at
>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>> stServerRef.java:143)
>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>         at java.security.AccessController.doPrivileged(Native Method)
>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>         at
>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>> 66)
>>         at
>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>> .java:707)
>>         at java.lang.Thread.run(Thread.java:595)
>> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while 
>> initializing
>> JPA:
>> You cannot access the EntityTransaction when using managed 
>> transactions.
>> 
>> 
>> second case: 
>> ====================================================================
>> openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
>> 
>> <0|false|0.9.6-incubating>
>> org.apache.openjpa.persistence.PersistenceException:
>> /UserTransaction
>>         at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>> ction(AbstractBrokerFactory.java:633)
>>         at
>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>>         at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>> kerFactory.java:165)
>>         at
>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>> gBrokerFactory.java:139)
>>         at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>> anager(EntityManagerFactoryImpl.java:187)
>>         at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>> anager(EntityManagerFactoryImpl.java:140)
>>         at
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>> anager(EntityManagerFactoryImpl.java:52)
>>         at
>> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
>> n.java:1099)
>>         at
>> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
>> :1061)
>>         at
>> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
>> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
>> Remote.java:23
>> 4)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>> java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>> sorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:585)
>>         at
>> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>>         at
>> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
>> stServerRef.java:143)
>>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>>         at java.security.AccessController.doPrivileged(Native Method)
>>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>>         at
>> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
>> 66)
>>         at
>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
>> .java:707)
>>         at java.lang.Thread.run(Thread.java:595)
>> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>>         at
>> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
>> :95)
>>         at javax.naming.InitialContext.lookup(InitialContext.java:355)
>>         at
>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>>         at
>> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>         at
>> org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
>> 8)
>>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>         at
>> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
>> nagedRuntime.java:51)
>>         at
>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>> ction(AbstractBrokerFactory.java:598)
>>         ... 21 more
>> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while 
>> initializing
>> JPA:
>> /UserTransaction
>> 
>> *************************************************
>> 
>> 
>> From my understanding it seems that there is a fatal error in 
>> the second 
>> case, like openJPA was not able to even lookup JOnAS' 
>> transaction manager.
>> It seems to me that in the first case, the transaction 
>> manager lookup worked
>> but there is another subsequent error? 
>> 
>> <4|false|0.9.6-incubating>
>> org.apache.openjpa.persistence.InvalidStateException:
>>  You cannot access the EntityTransaction when using managed 
>> transactions.
>>         at
>> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
>> yManagerImpl.java:360)
>> 
>> Can you explain what this message means exactly?
>> 
>> thank you in advance,
>> HANS
>> 
>> 
>> > -----Ursprüngliche Nachricht-----
>> > Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] 
>> Im Auftrag von
>> > Marc Prud'hommeaux
>> > Gesendet: Montag, 05. Februar 2007 21:19
>> > An: open-jpa-dev@incubator.apache.org
>> > Betreff: Re: Using OpenJPA within an "old" J2EE1.4 
>> container with managed
>> > transactions?
>> > 
>> > Hans-
>> > 
>> > We might not have Jonas' TransactionManager location configured in
>> > the automatic TM lookup in OpenJPA. Can you try to manually specify
>> > it with the following property:
>> > 
>> >     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
>> > UserTransaction)
>> > 
>> > if that doesn't work, try:
>> > 
>> >     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
>> > UserTransaction)
>> > 
>> > (apparently, Jonas' UserTransaction implementation is also their
>> > TransactionManager implementation)
>> > 
>> > If that doesn't work, can you post the complete stack trace?
>> > 
>> > If it does work, please let us know so we can add it to the list of
>> > auto-discovered transaction managers.
>> > 
>> > 
>> > 
>> > On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
>> > 
>> > > Hi there,
>> > >
>> > >
>> > >
>> > > I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
>> > > persistence to
>> > > openJPA. Currently I got stuck when
>> > >
>> > > trying to configure OpenJPA persistence, when creating the
>> > > EntityManagerFactory and the EntityManager instance,
>> > >
>> > > I get the following error:
>> > >
>> > >
>> > >
>> > > <4|true|0.9.6-incubating>
>> > > org.apache.openjpa.persistence.InvalidStateException:
>> > >
>> > > Could not perform automatic lookup of EJB container's
>> > > javax.transaction.Transact
>> > >
>> > > ionManager implementation. Please ensure that you are running the
>> > > application fr
>> > >
>> > > om within an EJB 1.1 compliant EJB container, and then set the
>> > > org.apache.openjp
>> > >
>> > > a.ManagedRuntime property to the appropriate value to obtain the
>> > > TransactionMana
>> > >
>> > > ger.
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
>> > >
>> > > utomaticManagedRuntime.java:180)
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>> > >
>> > > ction(AbstractBrokerFactory.java:598)
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>> > >
>> > > kerFactory.java:165)
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>> > >
>> > > gBrokerFactory.java:139)
>> > >
>> > >         at
>> > > 
>> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>> > >
>> > > anager(EntityManagerFactoryImpl.java:187)
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > Currently I'm running the application within the JOnAS 4.8.3 J2EE
>> > > Server.
>> > > How can I configure open JPA to
>> > >
>> > > use the provided managed Transactions of JOnAS? (this 
>> works also with
>> > > Hibernate 2.x so I assume it should
>> > >
>> > > somehow be possible with openJPA?)
>> > >
>> > >
>> > >
>> > > any help appreciated!
>> > >
>> > >
>> > >
>> > > regards,
>> > >
>> > > HANS
>> > >
>> > >
>> > >
>> > > ===========================
>> > > virtually hanzz...
>> > >
>> > >
>> > >
>> > >  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>> > >  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
>> > > (research)
>> > >
>> > >
>> > >
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Using-OpenJPA-within-an-%22old%22-J2EE1.4-container-with-managed-transactions--tf3176559.html#a11300537
Sent from the OpenJPA Developers mailing list archive at Nabble.com.


AW: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by "Hans J. Prueller" <ha...@gmx.net>.
Thank you - I should have guessed that accessing UserTransaction in this
configuration is not allowed. What I tried was to "simply" run the
"hellojpa" example within our .ear application.

I removed the access to UserTransaction in my test method and it seems
to work now. Now I get an error message regarding the enhancer, but that’s
because I did not invoke the enhancer on the testclass yet. So I guess using
JOnAS' managed transactions should work now.

Thank you!

Hans

> -----Ursprüngliche Nachricht-----
> Von: Patrick Linskey [mailto:plinskey@bea.com]
> Gesendet: Montag, 05. Februar 2007 22:09
> An: open-jpa-dev@incubator.apache.org
> Betreff: RE: Using OpenJPA within an "old" J2EE1.4 container with managed
> transactions?
> 
> Looking at the trace, it looks like OpenJPA is being deployed correctly
> when you used java:comp/UserTransaction:
> 
> > 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
> > Starting OpenJPA 0.9.6-incubating
> 
> This means that OpenJPA loaded the configuration and initialized.
> 
> > 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC -
> > OpenJPA will now connect to the database to attempt to determine
> > what type of database dictionary to use.  To prevent this connection
> > in the future, set your openjpa.jdbc.DBDictionary configuration
> > property to the appropriate value for your database (see the
> > documentation for available values).
> > 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC -
> > Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary"
> > (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
> > java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $,
> > $Revision: 5908 $ )).
> 
> This means that we were able to connect to the database and figure out
> that you're using MySQL.
> 
> > org.apache.openjpa.persistence.InvalidStateException:
> > You cannot access the EntityTransaction when using managed transactions.
> >        at
> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityMana
> gerImpl.java:360)
> >        at
> >com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.ja
> va:1102)
> >        at
> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061
> )
> >        at
> >
> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystem
> Bean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
> 4)
> 
> It looks like IMSSystemBean.initializeJPA() is trying to invoked
> EntityManager.getTransaction(). Since you're using JTA, you're not allowed
> to use getTransaction(); all transaction management must happen through
> container-managed transactions or bean-managed transaction code.
> 
> -Patrick
> 
> --
> Patrick Linskey
> BEA Systems, Inc.
> 
> _______________________________________________________________________
> Notice:  This email message, together with any attachments, may contain
> information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
> entities,  that may be confidential,  proprietary,  copyrighted  and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it.
> 
> > -----Original Message-----
> > From: Hans J. Prueller [mailto:hans.prueller@gmx.net]
> > Sent: Monday, February 05, 2007 12:54 PM
> > To: open-jpa-dev@incubator.apache.org
> > Subject: AW: Using OpenJPA within an "old" J2EE1.4 container
> > with managed transactions?
> >
> > >> If that doesn't work, can you post the complete stack trace?
> >
> > Thank you for your help. Unfortunately it did NOT work. I'm
> > not sure what
> > the exact problem is, here are the strack-traces:
> >
> > first case:
> > ====================================================================
> > openjpa.ManagedRuntime:
> > jndi(TransactionManagerName=java:comp/UserTransaction)
> >
> > 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA :
> > initializing JPA
> > persist
> > ence.
> > 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
> > persistence
> > 156  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.Runtime - Starting
> > OpenJ
> > PA 0.9.6-incubating
> > 359  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.jdbc.JDBC - OpenJPA
> > will
> >  now connect to the database to attempt to determine what
> > type of database
> > dicti
> > onary to use.  To prevent this connection in the future, set your
> > openjpa.jdbc.D
> > BDictionary configuration property to the appropriate value for your
> > database (s
> > ee the documentation for available values).
> > 469  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.jdbc.JDBC - Using
> > dictio
> > nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
> > 5.0.27-community
> > -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date:
> > 2006-10-19
> > 17:47:4
> > 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
> > 812  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.MetaData - Found 1
> > class
> > es with metadata in 15 milliseconds.
> > 844  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.MetaData - Found 1
> > class
> > es with metadata in 0 milliseconds.
> > 1094  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.MetaData - Parsing
> > clas
> > s "com.lbslogics.ims.util.JPATestObject".
> > 1094  INFO   [RMI TCP Connection(7)-192.168.0.6]
> > openjpa.MetaData - Parsing
> > pack
> > age "com.lbslogics.ims.util.JPATestObject".
> > 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
> > Reading t
> > able information for schema name "null", table name "JPATestObject".
> > 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
> > Reading s
> > equence information for schema "null", sequence name "null".
> > <4|false|0.9.6-incubating>
> > org.apache.openjpa.persistence.InvalidStateException:
> >  You cannot access the EntityTransaction when using managed
> > transactions.
> >         at
> > org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
> > yManagerImpl.java:360)
> >         at
> > com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
> > n.java:1102)
> >         at
> > com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
> > :1061)
> >         at
> > org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
> > ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
> > Remote.java:23
> > 4)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> > java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> > sorImpl.java:25)
> >         at java.lang.reflect.Method.invoke(Method.java:585)
> >         at
> > sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
> >         at
> > org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
> > stServerRef.java:143)
> >         at sun.rmi.transport.Transport$1.run(Transport.java:153)
> >         at java.security.AccessController.doPrivileged(Native Method)
> >         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
> >         at
> > sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
> > 66)
> >         at
> > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> > .java:707)
> >         at java.lang.Thread.run(Thread.java:595)
> > 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while
> > initializing
> > JPA:
> > You cannot access the EntityTransaction when using managed
> > transactions.
> >
> >
> > second case:
> > ====================================================================
> > openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
> >
> > <0|false|0.9.6-incubating>
> > org.apache.openjpa.persistence.PersistenceException:
> > /UserTransaction
> >         at
> > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> > ction(AbstractBrokerFactory.java:633)
> >         at
> > org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
> >         at
> > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
> > kerFactory.java:165)
> >         at
> > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
> > gBrokerFactory.java:139)
> >         at
> > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> > anager(EntityManagerFactoryImpl.java:187)
> >         at
> > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> > anager(EntityManagerFactoryImpl.java:140)
> >         at
> > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> > anager(EntityManagerFactoryImpl.java:52)
> >         at
> > com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
> > n.java:1099)
> >         at
> > com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
> > :1061)
> >         at
> > org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
> > ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
> > Remote.java:23
> > 4)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> > java:39)
> >         at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> > sorImpl.java:25)
> >         at java.lang.reflect.Method.invoke(Method.java:585)
> >         at
> > sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
> >         at
> > org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
> > stServerRef.java:143)
> >         at sun.rmi.transport.Transport$1.run(Transport.java:153)
> >         at java.security.AccessController.doPrivileged(Native Method)
> >         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
> >         at
> > sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
> > 66)
> >         at
> > sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> > .java:707)
> >         at java.lang.Thread.run(Thread.java:595)
> > Caused by: javax.naming.NameNotFoundException: /UserTransaction
> >         at
> > com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
> > :95)
> >         at javax.naming.InitialContext.lookup(InitialContext.java:355)
> >         at
> > org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
> >         at
> > org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
> >         at javax.naming.InitialContext.lookup(InitialContext.java:351)
> >         at
> > org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
> > 8)
> >         at javax.naming.InitialContext.lookup(InitialContext.java:351)
> >         at
> > org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
> > nagedRuntime.java:51)
> >         at
> > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> > ction(AbstractBrokerFactory.java:598)
> >         ... 21 more
> > 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while
> > initializing
> > JPA:
> > /UserTransaction
> >
> > *************************************************
> >
> >
> > From my understanding it seems that there is a fatal error in
> > the second
> > case, like openJPA was not able to even lookup JOnAS'
> > transaction manager.
> > It seems to me that in the first case, the transaction
> > manager lookup worked
> > but there is another subsequent error?
> >
> > <4|false|0.9.6-incubating>
> > org.apache.openjpa.persistence.InvalidStateException:
> >  You cannot access the EntityTransaction when using managed
> > transactions.
> >         at
> > org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
> > yManagerImpl.java:360)
> >
> > Can you explain what this message means exactly?
> >
> > thank you in advance,
> > HANS
> >
> >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com]
> > Im Auftrag von
> > > Marc Prud'hommeaux
> > > Gesendet: Montag, 05. Februar 2007 21:19
> > > An: open-jpa-dev@incubator.apache.org
> > > Betreff: Re: Using OpenJPA within an "old" J2EE1.4
> > container with managed
> > > transactions?
> > >
> > > Hans-
> > >
> > > We might not have Jonas' TransactionManager location configured in
> > > the automatic TM lookup in OpenJPA. Can you try to manually specify
> > > it with the following property:
> > >
> > >     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
> > > UserTransaction)
> > >
> > > if that doesn't work, try:
> > >
> > >     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
> > > UserTransaction)
> > >
> > > (apparently, Jonas' UserTransaction implementation is also their
> > > TransactionManager implementation)
> > >
> > > If that doesn't work, can you post the complete stack trace?
> > >
> > > If it does work, please let us know so we can add it to the list of
> > > auto-discovered transaction managers.
> > >
> > >
> > >
> > > On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
> > >
> > > > Hi there,
> > > >
> > > >
> > > >
> > > > I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
> > > > persistence to
> > > > openJPA. Currently I got stuck when
> > > >
> > > > trying to configure OpenJPA persistence, when creating the
> > > > EntityManagerFactory and the EntityManager instance,
> > > >
> > > > I get the following error:
> > > >
> > > >
> > > >
> > > > <4|true|0.9.6-incubating>
> > > > org.apache.openjpa.persistence.InvalidStateException:
> > > >
> > > > Could not perform automatic lookup of EJB container's
> > > > javax.transaction.Transact
> > > >
> > > > ionManager implementation. Please ensure that you are running the
> > > > application fr
> > > >
> > > > om within an EJB 1.1 compliant EJB container, and then set the
> > > > org.apache.openjp
> > > >
> > > > a.ManagedRuntime property to the appropriate value to obtain the
> > > > TransactionMana
> > > >
> > > > ger.
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
> > > >
> > > > utomaticManagedRuntime.java:180)
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> > > >
> > > > ction(AbstractBrokerFactory.java:598)
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
> > > >
> > > > kerFactory.java:165)
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
> > > >
> > > > gBrokerFactory.java:139)
> > > >
> > > >         at
> > > >
> > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> > > >
> > > > anager(EntityManagerFactoryImpl.java:187)
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Currently I'm running the application within the JOnAS 4.8.3 J2EE
> > > > Server.
> > > > How can I configure open JPA to
> > > >
> > > > use the provided managed Transactions of JOnAS? (this
> > works also with
> > > > Hibernate 2.x so I assume it should
> > > >
> > > > somehow be possible with openJPA?)
> > > >
> > > >
> > > >
> > > > any help appreciated!
> > > >
> > > >
> > > >
> > > > regards,
> > > >
> > > > HANS
> > > >
> > > >
> > > >
> > > > ===========================
> > > > virtually hanzz...
> > > >
> > > >
> > > >
> > > >  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
> > > >  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
> > > > (research)
> > > >
> > > >
> > > >
> >
> >


RE: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by Patrick Linskey <pl...@bea.com>.
Looking at the trace, it looks like OpenJPA is being deployed correctly when you used java:comp/UserTransaction:

> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime -
> Starting OpenJPA 0.9.6-incubating

This means that OpenJPA loaded the configuration and initialized.

> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
> OpenJPA will now connect to the database to attempt to determine 
> what type of database dictionary to use.  To prevent this connection 
> in the future, set your openjpa.jdbc.DBDictionary configuration 
> property to the appropriate value for your database (see the 
> documentation for available values).
> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - 
> Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" 
> (MySQL 5.0.27-community-nt ,MySQL-AB JDBC Driver mysql-connector-
> java-5.0.4 ( $Date: 2006-10-19 17:47:48 +0200 (Thu, 19 Oct 2006) $, 
> $Revision: 5908 $ )).

This means that we were able to connect to the database and figure out that you're using MySQL.

> org.apache.openjpa.persistence.InvalidStateException:
> You cannot access the EntityTransaction when using managed transactions.
>        at org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:360)
>        at
>com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBean.java:1102)
>        at com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java:1061)
>        at
> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSSystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
4)

It looks like IMSSystemBean.initializeJPA() is trying to invoked EntityManager.getTransaction(). Since you're using JTA, you're not allowed to use getTransaction(); all transaction management must happen through container-managed transactions or bean-managed transaction code.

-Patrick

-- 
Patrick Linskey
BEA Systems, Inc. 

_______________________________________________________________________
Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it. 

> -----Original Message-----
> From: Hans J. Prueller [mailto:hans.prueller@gmx.net] 
> Sent: Monday, February 05, 2007 12:54 PM
> To: open-jpa-dev@incubator.apache.org
> Subject: AW: Using OpenJPA within an "old" J2EE1.4 container 
> with managed transactions?
> 
> >> If that doesn't work, can you post the complete stack trace?
> 
> Thank you for your help. Unfortunately it did NOT work. I'm 
> not sure what
> the exact problem is, here are the strack-traces:
> 
> first case: 
> ====================================================================
> openjpa.ManagedRuntime:
> jndi(TransactionManagerName=java:comp/UserTransaction)
> 
> 2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : 
> initializing JPA
> persist
> ence.
> 2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
> persistence
> 156  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.Runtime - Starting
> OpenJ
> PA 0.9.6-incubating
> 359  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.jdbc.JDBC - OpenJPA
> will
>  now connect to the database to attempt to determine what 
> type of database
> dicti
> onary to use.  To prevent this connection in the future, set your
> openjpa.jdbc.D
> BDictionary configuration property to the appropriate value for your
> database (s
> ee the documentation for available values).
> 469  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.jdbc.JDBC - Using
> dictio
> nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
> 5.0.27-community
> -nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 
> 2006-10-19
> 17:47:4
> 8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
> 812  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.MetaData - Found 1
> class
> es with metadata in 15 milliseconds.
> 844  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.MetaData - Found 1
> class
> es with metadata in 0 milliseconds.
> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.MetaData - Parsing
> clas
> s "com.lbslogics.ims.util.JPATestObject".
> 1094  INFO   [RMI TCP Connection(7)-192.168.0.6] 
> openjpa.MetaData - Parsing
> pack
> age "com.lbslogics.ims.util.JPATestObject".
> 1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
> Reading t
> able information for schema name "null", table name "JPATestObject".
> 1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
> Reading s
> equence information for schema "null", sequence name "null".
> <4|false|0.9.6-incubating>
> org.apache.openjpa.persistence.InvalidStateException:
>  You cannot access the EntityTransaction when using managed 
> transactions.
>         at
> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
> yManagerImpl.java:360)
>         at
> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
> n.java:1102)
>         at
> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
> :1061)
>         at
> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
> Remote.java:23
> 4)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>         at
> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
> stServerRef.java:143)
>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>         at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
> 66)
>         at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> .java:707)
>         at java.lang.Thread.run(Thread.java:595)
> 2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while 
> initializing
> JPA:
> You cannot access the EntityTransaction when using managed 
> transactions.
> 
> 
> second case: 
> ====================================================================
> openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)
> 
> <0|false|0.9.6-incubating>
> org.apache.openjpa.persistence.PersistenceException:
> /UserTransaction
>         at
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> ction(AbstractBrokerFactory.java:633)
>         at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>         at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
> kerFactory.java:165)
>         at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
> gBrokerFactory.java:139)
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> anager(EntityManagerFactoryImpl.java:187)
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> anager(EntityManagerFactoryImpl.java:140)
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> anager(EntityManagerFactoryImpl.java:52)
>         at
> com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
> n.java:1099)
>         at
> com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
> :1061)
>         at
> org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
> ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373
> Remote.java:23
> 4)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
>         at
> org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
> stServerRef.java:143)
>         at sun.rmi.transport.Transport$1.run(Transport.java:153)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
>         at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
> 66)
>         at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
> .java:707)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: javax.naming.NameNotFoundException: /UserTransaction
>         at
> com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
> :95)
>         at javax.naming.InitialContext.lookup(InitialContext.java:355)
>         at
> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
>         at
> org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>         at
> org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
> 8)
>         at javax.naming.InitialContext.lookup(InitialContext.java:351)
>         at
> org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
> nagedRuntime.java:51)
>         at
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> ction(AbstractBrokerFactory.java:598)
>         ... 21 more
> 2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while 
> initializing
> JPA:
> /UserTransaction
> 
> *************************************************
> 
> 
> From my understanding it seems that there is a fatal error in 
> the second 
> case, like openJPA was not able to even lookup JOnAS' 
> transaction manager.
> It seems to me that in the first case, the transaction 
> manager lookup worked
> but there is another subsequent error? 
> 
> <4|false|0.9.6-incubating>
> org.apache.openjpa.persistence.InvalidStateException:
>  You cannot access the EntityTransaction when using managed 
> transactions.
>         at
> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
> yManagerImpl.java:360)
> 
> Can you explain what this message means exactly?
> 
> thank you in advance,
> HANS
> 
> 
> > -----Ursprüngliche Nachricht-----
> > Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] 
> Im Auftrag von
> > Marc Prud'hommeaux
> > Gesendet: Montag, 05. Februar 2007 21:19
> > An: open-jpa-dev@incubator.apache.org
> > Betreff: Re: Using OpenJPA within an "old" J2EE1.4 
> container with managed
> > transactions?
> > 
> > Hans-
> > 
> > We might not have Jonas' TransactionManager location configured in
> > the automatic TM lookup in OpenJPA. Can you try to manually specify
> > it with the following property:
> > 
> >     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
> > UserTransaction)
> > 
> > if that doesn't work, try:
> > 
> >     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
> > UserTransaction)
> > 
> > (apparently, Jonas' UserTransaction implementation is also their
> > TransactionManager implementation)
> > 
> > If that doesn't work, can you post the complete stack trace?
> > 
> > If it does work, please let us know so we can add it to the list of
> > auto-discovered transaction managers.
> > 
> > 
> > 
> > On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
> > 
> > > Hi there,
> > >
> > >
> > >
> > > I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
> > > persistence to
> > > openJPA. Currently I got stuck when
> > >
> > > trying to configure OpenJPA persistence, when creating the
> > > EntityManagerFactory and the EntityManager instance,
> > >
> > > I get the following error:
> > >
> > >
> > >
> > > <4|true|0.9.6-incubating>
> > > org.apache.openjpa.persistence.InvalidStateException:
> > >
> > > Could not perform automatic lookup of EJB container's
> > > javax.transaction.Transact
> > >
> > > ionManager implementation. Please ensure that you are running the
> > > application fr
> > >
> > > om within an EJB 1.1 compliant EJB container, and then set the
> > > org.apache.openjp
> > >
> > > a.ManagedRuntime property to the appropriate value to obtain the
> > > TransactionMana
> > >
> > > ger.
> > >
> > >         at
> > > 
> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
> > >
> > > utomaticManagedRuntime.java:180)
> > >
> > >         at
> > > 
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> > >
> > > ction(AbstractBrokerFactory.java:598)
> > >
> > >         at
> > > 
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
> > >
> > >         at
> > > 
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
> > >
> > > kerFactory.java:165)
> > >
> > >         at
> > > 
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
> > >
> > > gBrokerFactory.java:139)
> > >
> > >         at
> > > 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> > >
> > > anager(EntityManagerFactoryImpl.java:187)
> > >
> > >
> > >
> > >
> > >
> > > Currently I'm running the application within the JOnAS 4.8.3 J2EE
> > > Server.
> > > How can I configure open JPA to
> > >
> > > use the provided managed Transactions of JOnAS? (this 
> works also with
> > > Hibernate 2.x so I assume it should
> > >
> > > somehow be possible with openJPA?)
> > >
> > >
> > >
> > > any help appreciated!
> > >
> > >
> > >
> > > regards,
> > >
> > > HANS
> > >
> > >
> > >
> > > ===========================
> > > virtually hanzz...
> > >
> > >
> > >
> > >  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
> > >  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
> > > (research)
> > >
> > >
> > >
> 
> 

AW: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by "Hans J. Prueller" <ha...@gmx.net>.
>> If that doesn't work, can you post the complete stack trace?

Thank you for your help. Unfortunately it did NOT work. I'm not sure what
the exact problem is, here are the strack-traces:

first case: 
====================================================================
openjpa.ManagedRuntime:
jndi(TransactionManagerName=java:comp/UserTransaction)

2007-02-05 21:33:32,109 : IMSSystemBean.initializeJPA : initializing JPA
persist
ence.
2007-02-05 21:33:33,796 : IMSSystemBean.initializeJPA : testing JPA
persistence
156  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.Runtime - Starting
OpenJ
PA 0.9.6-incubating
359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - OpenJPA
will
 now connect to the database to attempt to determine what type of database
dicti
onary to use.  To prevent this connection in the future, set your
openjpa.jdbc.D
BDictionary configuration property to the appropriate value for your
database (s
ee the documentation for available values).
469  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.JDBC - Using
dictio
nary class "org.apache.openjpa.jdbc.sql.MySQLDictionary" (MySQL
5.0.27-community
-nt ,MySQL-AB JDBC Driver mysql-connector-java-5.0.4 ( $Date: 2006-10-19
17:47:4
8 +0200 (Thu, 19 Oct 2006) $, $Revision: 5908 $ )).
812  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.MetaData - Found 1
class
es with metadata in 15 milliseconds.
844  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.MetaData - Found 1
class
es with metadata in 0 milliseconds.
1094  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.MetaData - Parsing
clas
s "com.lbslogics.ims.util.JPATestObject".
1094  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.MetaData - Parsing
pack
age "com.lbslogics.ims.util.JPATestObject".
1359  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
Reading t
able information for schema name "null", table name "JPATestObject".
1437  INFO   [RMI TCP Connection(7)-192.168.0.6] openjpa.jdbc.Schema -
Reading s
equence information for schema "null", sequence name "null".
<4|false|0.9.6-incubating>
org.apache.openjpa.persistence.InvalidStateException:
 You cannot access the EntityTransaction when using managed transactions.
        at
org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
yManagerImpl.java:360)
        at
com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
n.java:1102)
        at
com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
:1061)
        at
org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
4)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
        at
org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
stServerRef.java:143)
        at sun.rmi.transport.Transport$1.run(Transport.java:153)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
        at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
66)
        at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:707)
        at java.lang.Thread.run(Thread.java:595)
2007-02-05 21:33:35,187 : IMSSystemBean.startup : ERROR while initializing
JPA:
You cannot access the EntityTransaction when using managed transactions.


second case: 
====================================================================
openjpa.ManagedRuntime: jndi(TransactionManagerName=/UserTransaction)

<0|false|0.9.6-incubating>
org.apache.openjpa.persistence.PersistenceException:
/UserTransaction
        at
org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
ction(AbstractBrokerFactory.java:633)
        at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
        at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
kerFactory.java:165)
        at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
gBrokerFactory.java:139)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
anager(EntityManagerFactoryImpl.java:187)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
anager(EntityManagerFactoryImpl.java:140)
        at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
anager(EntityManagerFactoryImpl.java:52)
        at
com.lbslogics.ims.system.ejb.IMSSystemBean.initializeJPA(IMSSystemBea
n.java:1099)
        at
com.lbslogics.ims.system.ejb.IMSSystemBean.startup(IMSSystemBean.java
:1061)
        at
org.objectweb.jonas_gen.com.lbslogics.ims.system.interfaces.JOnASIMSS
ystemBean2005147373Remote.startup(JOnASIMSSystemBean2005147373Remote.java:23
4)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
        at
org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnica
stServerRef.java:143)
        at sun.rmi.transport.Transport$1.run(Transport.java:153)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
        at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
66)
        at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:707)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.naming.NameNotFoundException: /UserTransaction
        at
com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java
:95)
        at javax.naming.InitialContext.lookup(InitialContext.java:355)
        at
org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140)
        at
org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at
org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:11
8)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at
org.apache.openjpa.ee.JNDIManagedRuntime.getTransactionManager(JNDIMa
nagedRuntime.java:51)
        at
org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
ction(AbstractBrokerFactory.java:598)
        ... 21 more
2007-02-05 21:44:10,921 : IMSSystemBean.startup : ERROR while initializing
JPA:
/UserTransaction

*************************************************


>From my understanding it seems that there is a fatal error in the second 
case, like openJPA was not able to even lookup JOnAS' transaction manager.
It seems to me that in the first case, the transaction manager lookup worked
but there is another subsequent error? 

<4|false|0.9.6-incubating>
org.apache.openjpa.persistence.InvalidStateException:
 You cannot access the EntityTransaction when using managed transactions.
        at
org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(Entit
yManagerImpl.java:360)

Can you explain what this message means exactly?

thank you in advance,
HANS


> -----Ursprüngliche Nachricht-----
> Von: Marc Prud'hommeaux [mailto:mprudhomapache@gmail.com] Im Auftrag von
> Marc Prud'hommeaux
> Gesendet: Montag, 05. Februar 2007 21:19
> An: open-jpa-dev@incubator.apache.org
> Betreff: Re: Using OpenJPA within an "old" J2EE1.4 container with managed
> transactions?
> 
> Hans-
> 
> We might not have Jonas' TransactionManager location configured in
> the automatic TM lookup in OpenJPA. Can you try to manually specify
> it with the following property:
> 
>     openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/
> UserTransaction)
> 
> if that doesn't work, try:
> 
>     openjpa.ManagedRuntime: jndi(TransactionManagerName=/
> UserTransaction)
> 
> (apparently, Jonas' UserTransaction implementation is also their
> TransactionManager implementation)
> 
> If that doesn't work, can you post the complete stack trace?
> 
> If it does work, please let us know so we can add it to the list of
> auto-discovered transaction managers.
> 
> 
> 
> On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:
> 
> > Hi there,
> >
> >
> >
> > I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications
> > persistence to
> > openJPA. Currently I got stuck when
> >
> > trying to configure OpenJPA persistence, when creating the
> > EntityManagerFactory and the EntityManager instance,
> >
> > I get the following error:
> >
> >
> >
> > <4|true|0.9.6-incubating>
> > org.apache.openjpa.persistence.InvalidStateException:
> >
> > Could not perform automatic lookup of EJB container's
> > javax.transaction.Transact
> >
> > ionManager implementation. Please ensure that you are running the
> > application fr
> >
> > om within an EJB 1.1 compliant EJB container, and then set the
> > org.apache.openjp
> >
> > a.ManagedRuntime property to the appropriate value to obtain the
> > TransactionMana
> >
> > ger.
> >
> >         at
> > org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
> >
> > utomaticManagedRuntime.java:180)
> >
> >         at
> > org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
> >
> > ction(AbstractBrokerFactory.java:598)
> >
> >         at
> > org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
> >
> >         at
> > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
> >
> > kerFactory.java:165)
> >
> >         at
> > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
> >
> > gBrokerFactory.java:139)
> >
> >         at
> > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
> >
> > anager(EntityManagerFactoryImpl.java:187)
> >
> >
> >
> >
> >
> > Currently I'm running the application within the JOnAS 4.8.3 J2EE
> > Server.
> > How can I configure open JPA to
> >
> > use the provided managed Transactions of JOnAS? (this works also with
> > Hibernate 2.x so I assume it should
> >
> > somehow be possible with openJPA?)
> >
> >
> >
> > any help appreciated!
> >
> >
> >
> > regards,
> >
> > HANS
> >
> >
> >
> > ===========================
> > virtually hanzz...
> >
> >
> >
> >  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
> >  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
> > (research)
> >
> >
> >


Re: Using OpenJPA within an "old" J2EE1.4 container with managed transactions?

Posted by Marc Prud'hommeaux <mp...@apache.org>.
Hans-

We might not have Jonas' TransactionManager location configured in  
the automatic TM lookup in OpenJPA. Can you try to manually specify  
it with the following property:

    openjpa.ManagedRuntime: jndi(TransactionManagerName=java:comp/ 
UserTransaction)

if that doesn't work, try:

    openjpa.ManagedRuntime: jndi(TransactionManagerName=/ 
UserTransaction)

(apparently, Jonas' UserTransaction implementation is also their  
TransactionManager implementation)

If that doesn't work, can you post the complete stack trace?

If it does work, please let us know so we can add it to the list of  
auto-discovered transaction managers.



On Feb 5, 2007, at 12:05 PM, Hans J. Prueller wrote:

> Hi there,
>
>
>
> I'm trying to migrate our "old" J2EE1.4 / EJB2.1 applications  
> persistence to
> openJPA. Currently I got stuck when
>
> trying to configure OpenJPA persistence, when creating the
> EntityManagerFactory and the EntityManager instance,
>
> I get the following error:
>
>
>
> <4|true|0.9.6-incubating>
> org.apache.openjpa.persistence.InvalidStateException:
>
> Could not perform automatic lookup of EJB container's
> javax.transaction.Transact
>
> ionManager implementation. Please ensure that you are running the
> application fr
>
> om within an EJB 1.1 compliant EJB container, and then set the
> org.apache.openjp
>
> a.ManagedRuntime property to the appropriate value to obtain the
> TransactionMana
>
> ger.
>
>         at
> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(A
>
> utomaticManagedRuntime.java:180)
>
>         at
> org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransa
>
> ction(AbstractBrokerFactory.java:598)
>
>         at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:292)
>
>         at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBro
>
> kerFactory.java:165)
>
>         at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Delegatin
>
> gBrokerFactory.java:139)
>
>         at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityM
>
> anager(EntityManagerFactoryImpl.java:187)
>
>
>
>
>
> Currently I'm running the application within the JOnAS 4.8.3 J2EE  
> Server.
> How can I configure open JPA to
>
> use the provided managed Transactions of JOnAS? (this works also with
> Hibernate 2.x so I assume it should
>
> somehow be possible with openJPA?)
>
>
>
> any help appreciated!
>
>
>
> regards,
>
> HANS
>
>
>
> ===========================
> virtually hanzz...
>
>
>
>  <http://hanzz.zapto.org> http://hanzz.zapto.org (personal)
>  <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp
> (research)
>
>
>