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:x...@tongtech.com]
Date: 2009/12/29 12:53
Receiver: d...@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.wrappernamedxaresou...@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)
        
                





Reply via email to