geronimo-dev 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 09:00:00 GMT
Yes, I am sure the first commit completed successfully; The test program has
catch all the exception , and print it to console. The first time, there is
no exception printed to the console, and the database is updated. And the
next time, a Geronimo-exception printed;

 

Change code as your suggestion will be  a better exception handler, but
cannot resolve the problem.  It also be first time transaction commit
success. the next time transaction commit failed, and the transaction will
be rollback;

 

----------------------------------------------------------------------------
----------------------------------------------------------------------------
-------------------------

发件人: Rex Wang [mailto:rwonly@gmail.com] 
发送时间: 2009年12月29日 14:54
收件人: dev@geronimo.apache.org
主题: Re: Cannot using Geronimo to execute bean-managed transaction with
oracle transaction more than once, but Glassfish does

 

Are you sure the first commit completed successfully?

could you modify you codes to:

...
            ut.commit();
        } catch (Exception e) {
            ut.rollback();
            e.printStackTrace();
        } finally {
            conn.close();
        }

to see what happened?

2009/12/29 xuhongbo <xuhb@tongtech.com>

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