geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "xuhongbo" <x...@tongtech.com>
Subject Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does
Date Tue, 29 Dec 2009 11:48:41 GMT
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