geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does
Date Tue, 29 Dec 2009 17:42:52 GMT
In the future it would be great if you could only post to one mailing  
list.

I'm not sure what is wrong yet, however you should never try to set  
the autocommit state of a connection that is enlisted in a jta  
transaction.  Enlisting and delisting the XAConnection will result in  
the autocommit being dealt with properly.  The value from  
getAutoCommit may or may not be meaningful in a jta transaction.   
Outside a jta transaction the autocommit state defaults to true.  I'm  
quite surprised you didn't get a more informative error.

One important piece of information that I don't see is which tranql  
wrapper you used to deploy your datasource.

thanks
david jencks

On Dec 29, 2009, at 3:48 AM, xuhongbo wrote:

> Hi:
> 	Yet I haven't find the real reason , I have noticed another thing
> about the problem;
> 	 The original test program will throw exception while transaction
> commit; but if  I comment the statement  
> "connection.setAutoCommit(false); ".
> the exception will throws while execute prepare statement; and  
> exception
> changed as "ORA-02089: COMMIT doesn't allowed in sub transaction"  
> which
> raised by oracle's driver;
> 	It seems the connection 's auto commit is default set to true; so I
> am wondering while secondly execute the trasaction , a no- 
> transaction data
> source (not a transactional-datasource) is returned?
>
> -----origin-----
> Sender: xuhongbo [mailto:xuhb@tongtech.com]
> Date: 2009/12/29 12:53
> Receiver: dev@geronimo.apache.org
> CC: user@geronimo.apache.org
> Subject: Cannot using Geronimo to execute bean-managed transaction  
> with
> oracle transaction more than once, but Glassfish does
>
> Hi:
> 	When I using bean  managed transaction with oracle-xa , I found that
> it cannot execute more than once; the first time, things is right and
> database is update; but if execute once again a oracle- xa-warning   
> and a
> Geronimo exception occurs; the warning and exception is list at the  
> end of
> this mail;
>
> 	The Geronimo Version I used is 2.1.4; and oracle version is 9i;
>
> 	I have use another app-server GlassFish test the same program, and
> it works well; My test program is list in the attachments:
> MyStatelessSessionBean.java is the ejb, and MyServlet is a servlet  
> call the
> ejb;
>
> 	The oracle xa datasource 's plan is also list in attachments; I am
> not sure about if I miss configured the datasource some-where; but The
> datasource does works: I can test it and execute a query through the
> Geronimo's console;
>
> 	Although the oracle 's version is older, but I doesn't thinks the
> database is not compatible with Geronimo's XA process; To ensure  
> this, I
> write a simple test case  which use the Geronimo's Transaction  
> Manager and
> Oralce's XA API directly; the simple test case works well; The  
> simple test
> case is also list in the list;
> 	 In the simple test case I doesn't use the UserTransaction but
> direct use the Geronimo's TransactionManager, because when debugging  
> the
> my-application, I found the UserTransaction is provided by OpenEJB,  
> and it
> just wrap the Geronimo's Transaction Manager;
> 	
> 	Finally , I guess if the tranql provided XADatasource is not
> compatible with my application. So I try the following calling  
> sequence, but
> they both occurs same problem;
> 	1:open-connection-->begin-trans-->do-update--> end-trans->close-conn
> 	2:begin-trans-->open-connection-->do-update-->end-trans->close-conn;
> 	3:begin-trans->open-connection-->do-update-->close-conn->end-trans;
> 	
> 	Now I have no idea about this problem, so I hope if anyone can
> help-me to check this problem
> 	Thanks for any-suggestion;
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> Orcla XA Warning is:
> 009-12-25 19:39:00,500 WARN  [Transaction] Unable to enlist XAResource
> org 
> .apache.geronimo.transaction.manager.WrapperNamedXAResource@1e7dc51,
> errorCode: -3
> oracle.jdbc.xa.OracleXAException
> 	at
> oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1157)
> 	at
> oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java: 
> 295)
> 	at
> org 
> .apache 
> .geronimo.transaction.manager.WrapperNamedXAResource.start(Wrapper
> NamedXAResource.java:86)
> 	at
> org 
> .apache 
> .geronimo.transaction.manager.TransactionImpl.enlistResource(Trans
> actionImpl.java:209)
> 	at
> org 
> .apache 
> .geronimo.connector.outbound.TransactionEnlistingInterceptor.getCo
> nnection(TransactionEnlistingInterceptor.java:54)
> 	at
> org 
> .apache 
> .geronimo.connector.outbound.TransactionCachingInterceptor.getConn
> ection(TransactionCachingInterceptor.java:87)
> 	at
> org 
> .apache 
> .geronimo.connector.outbound.ConnectionHandleInterceptor.getConnec
> tion(ConnectionHandleInterceptor.java:43)
> 	.......
> 	at java.lang.Thread.run(Unknown Source)
>
> Geronimo Exception is:
> javax.transaction.RollbackException: Unable to commit: transaction  
> marked
> for rollback
> 	at
> org 
> .apache 
> .geronimo.transaction.manager.TransactionImpl.rollbackResourcesDur
> ingCommit(TransactionImpl.java:671)
> 	at
> org 
> .apache 
> .geronimo.transaction.manager.TransactionImpl.commit(TransactionIm
> pl.java:270)
> 	at
> org 
> .apache 
> .geronimo.transaction.manager.TransactionManagerImpl.commit(Transa
> ctionManagerImpl.java:250)
> 	at
> org 
> .apache 
> .openejb.core.CoreUserTransaction.commit(CoreUserTransaction.java:
> 62)
> 	at
> org.apache.openejb.core.BaseContext 
> $UserTransactionWrapper.commit(BaseContex
> t.java:194)
> 	at
> sampleear 
> .MyStatelessSessionBean.sayHello(MyStatelessSessionBean.java:40)
> 	......
> 	at java.lang.Thread.run(Unknown Source)
> 	
> 		
>
>
>
>


Mime
View raw message