Re: Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2010-01-03 Thread Jack Cai
To understand the Geronimo connection manager and the transaction
manager, you might want to dig into the components code here [1]. For
example, the 
org.apache.geronimo.connector.outbound.TransactionEnlistingInterceptor
class does the resource enlist/delist work.

I'd suggest you to remotely debug your sample app (start geronimo in
debug mode) and walk through the code of Geronimo transaction manager
and connection manager, to fully understand the code flow.

[1] http://svn.apache.org/repos/asf/geronimo/components/txmanager/

-Jack

On Wed, Dec 30, 2009 at 5:14 PM, xuhongbo x...@tongtech.com wrote:
 Hi Jack Cai:

 I have tried, the tranql-connector-oracle-local is ok, but it doesn’t use
 xa transaction in jta, and use a faked Local-XAResource instead of real
 oracle-xa-resource;

 I  am sorry to mis-understand your means and give the run-time class name in
 my previous reply;  The error occurred program is just using 
 tranql-connector-oracle-xa

 Additionally, I have try another Mysql database and using 
 tranql-connector-mysql-xa do real xa transaction. It works well.

 So my mind changed, maybe there is something not compatible with oracle 9i
 database; In my original mail, I have post a very simple program which use
 the Geronimo Transaction Manager and Oracle XA API directly, this works
 well;

 Because tranql resource adaptor is a very simple wrapper , Geronimo does
 additional things to wrap the database connection (etc control pooling,
 xa-resource wrap, xa-resource cache for transaction-manager ...) , so I am
 wondering if there is some other un-excepted database operation has been
 done and cause this problem? for convenience I post the simple program
 again.

 If  we only concern database operation, does this simple program done
 exactly like the Geronimo done ? Or it doesn't , Geronimo do additional
 things... maybe the difference will be the real reason cause the problem;
 I have tracked at runtime, but unfortunately has not find some difference
 yet...

 Thanks a lot
 xuhongbo


 -origin-
 sender: Jack Cai [mailto:greensi...@gmail.com]
 date: 2009/12/30 11:45
 receiver: user@geronimo.apache.org
 subject: Re: Reply: Cannot using Geronimo to execute bean-managed
 transaction with oracle transaction more than once, but Glassfish does

 Can you try to use the tranql-connector-oracle-xa or
 tranql-connector-oracle-local to do the test?

 -Jack

 On Wed, Dec 30, 2009 at 11:26 AM, xuhongbo x...@tongtech.com wrote:

In the future it would be great if you could only post to one mailing
list.
 Thanks, I know

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.

 Yes you are right, auto commit has no means for jta connection and cannot
 be
 set to true; here I just set auto commit to false, so a jta connection
 should just omit it;
 But the surprise thing is if I doesn't affect auto commit state(in the
 program, just comment the statement setAutocommit(false)), when execute
 database operation,  a ORA-02089: COMMIT ... exception  will be throwed
 by
 oracle's database driver; it looks like the Geronimo does a wrong things
 commit on the connection when execute database operation; and this
 should
 only occurs on non-jta connection, because only no-jta connection will set
 auto commit default to true.

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

 The datasource  is org.tranql.connector.jdbc.DataSource. And it use  a  a
 managed-connection factory  org.tranql.connector.oracle.XAMCF to open
 connection; And the managed-connection factory use a oracle's xa
 datasource
 (oracle.jdbc.xa.client.OracleXADataSource);

 By the way , I haven't ever post a trivial problem I have meet when I
 deploy
 the Oracle-XA data source. The trivial thing is: I must change the deploy
 plan created by Geronimo's web manage console tools,   delete the empty
 property TNSEntryName and manually deploy it; because this is the
 oracle9i
 database driver's question --- a empty string value(not a null value) set
 to TNSEntryName will cause oracle9i's database driver to omit the other
 property (etc serverName, serviceName ...) and cannot establish a connect
 ;
 I thinks this should have no means to the transaction commit failure; but
 maybe it would give some other useful things help to find out the reason.

 Thanks a lot
 xuhongbo

 -origin -
 sender: David Jencks [mailto:david_jen...@yahoo.com]
 date: 2009/12/30 1:43
 receiver: user@geronimo.apache.org
 subject: Re: Reply: Cannot using Geronimo to execute bean-managed
 transaction with oracle transaction 

Re: Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2009-12-30 Thread xuhongbo
Hi Jack Cai:

I have tried, the tranql-connector-oracle-local is ok, but it doesn’t use
xa transaction in jta, and use a faked Local-XAResource instead of real
oracle-xa-resource;

I  am sorry to mis-understand your means and give the run-time class name in
my previous reply;  The error occurred program is just using 
tranql-connector-oracle-xa

Additionally, I have try another Mysql database and using 
tranql-connector-mysql-xa do real xa transaction. It works well. 

So my mind changed, maybe there is something not compatible with oracle 9i
database; In my original mail, I have post a very simple program which use
the Geronimo Transaction Manager and Oracle XA API directly, this works
well; 

Because tranql resource adaptor is a very simple wrapper , Geronimo does
additional things to wrap the database connection (etc control pooling,
xa-resource wrap, xa-resource cache for transaction-manager ...) , so I am
wondering if there is some other un-excepted database operation has been
done and cause this problem? for convenience I post the simple program
again. 
 
If  we only concern database operation, does this simple program done
exactly like the Geronimo done ? Or it doesn't , Geronimo do additional
things... maybe the difference will be the real reason cause the problem;
I have tracked at runtime, but unfortunately has not find some difference
yet...

Thanks a lot 
xuhongbo


-origin-
sender: Jack Cai [mailto:greensi...@gmail.com] 
date: 2009/12/30 11:45
receiver: user@geronimo.apache.org
subject: Re: Reply: Cannot using Geronimo to execute bean-managed
transaction with oracle transaction more than once, but Glassfish does

Can you try to use the tranql-connector-oracle-xa or
tranql-connector-oracle-local to do the test?

-Jack

On Wed, Dec 30, 2009 at 11:26 AM, xuhongbo x...@tongtech.com wrote:

In the future it would be great if you could only post to one mailing
list.
 Thanks, I know

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.

 Yes you are right, auto commit has no means for jta connection and cannot
be
 set to true; here I just set auto commit to false, so a jta connection
 should just omit it;
 But the surprise thing is if I doesn't affect auto commit state(in the
 program, just comment the statement setAutocommit(false)), when execute
 database operation,  a ORA-02089: COMMIT ... exception  will be throwed
by
 oracle's database driver; it looks like the Geronimo does a wrong things
 commit on the connection when execute database operation; and this
should
 only occurs on non-jta connection, because only no-jta connection will set
 auto commit default to true.

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

 The datasource  is org.tranql.connector.jdbc.DataSource. And it use  a  a
 managed-connection factory  org.tranql.connector.oracle.XAMCF to open
 connection; And the managed-connection factory use a oracle's xa
datasource
 (oracle.jdbc.xa.client.OracleXADataSource);

 By the way , I haven't ever post a trivial problem I have meet when I
deploy
 the Oracle-XA data source. The trivial thing is: I must change the deploy
 plan created by Geronimo's web manage console tools,   delete the empty
 property TNSEntryName and manually deploy it; because this is the
oracle9i
 database driver's question --- a empty string value(not a null value) set
 to TNSEntryName will cause oracle9i's database driver to omit the other
 property (etc serverName, serviceName ...) and cannot establish a connect
;
 I thinks this should have no means to the transaction commit failure; but
 maybe it would give some other useful things help to find out the reason.

 Thanks a lot
 xuhongbo

 -origin -
 sender: David Jencks [mailto:david_jen...@yahoo.com]
 date: 2009/12/30 1:43
 receiver: user@geronimo.apache.org
 subject: Re: Reply: Cannot using Geronimo to execute bean-managed
 transaction with oracle transaction more than once, but Glassfish does

 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
 

Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2009-12-29 Thread xuhongbo
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)








Re: Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2009-12-29 Thread David Jencks
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 

Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2009-12-29 Thread xuhongbo

In the future it would be great if you could only post to one mailing  
list.
Thanks, I know

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.

Yes you are right, auto commit has no means for jta connection and cannot be
set to true; here I just set auto commit to false, so a jta connection
should just omit it;
But the surprise thing is if I doesn't affect auto commit state(in the
program, just comment the statement setAutocommit(false)), when execute
database operation,  a ORA-02089: COMMIT ... exception  will be throwed by
oracle's database driver; it looks like the Geronimo does a wrong things
commit on the connection when execute database operation; and this should
only occurs on non-jta connection, because only no-jta connection will set
auto commit default to true.

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

The datasource  is org.tranql.connector.jdbc.DataSource. And it use  a  a
managed-connection factory  org.tranql.connector.oracle.XAMCF to open
connection; And the managed-connection factory use a oracle's xa datasource
(oracle.jdbc.xa.client.OracleXADataSource);

By the way , I haven't ever post a trivial problem I have meet when I deploy
the Oracle-XA data source. The trivial thing is: I must change the deploy
plan created by Geronimo's web manage console tools,   delete the empty
property TNSEntryName and manually deploy it; because this is the oracle9i
database driver's question --- a empty string value(not a null value) set
to TNSEntryName will cause oracle9i's database driver to omit the other
property (etc serverName, serviceName ...) and cannot establish a connect ; 
I thinks this should have no means to the transaction commit failure; but
maybe it would give some other useful things help to find out the reason.

Thanks a lot
xuhongbo

-origin -
sender: David Jencks [mailto:david_jen...@yahoo.com] 
date: 2009/12/30 1:43
receiver: user@geronimo.apache.org
subject: Re: Reply: Cannot using Geronimo to execute bean-managed
transaction with oracle transaction more than once, but Glassfish does

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 

Re: Reply: Cannot using Geronimo to execute bean-managed transaction with oracle transaction more than once, but Glassfish does

2009-12-29 Thread Jack Cai
Can you try to use the tranql-connector-oracle-xa or
tranql-connector-oracle-local to do the test?

-Jack

On Wed, Dec 30, 2009 at 11:26 AM, xuhongbo x...@tongtech.com wrote:

In the future it would be great if you could only post to one mailing
list.
 Thanks, I know

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.

 Yes you are right, auto commit has no means for jta connection and cannot be
 set to true; here I just set auto commit to false, so a jta connection
 should just omit it;
 But the surprise thing is if I doesn't affect auto commit state(in the
 program, just comment the statement setAutocommit(false)), when execute
 database operation,  a ORA-02089: COMMIT ... exception  will be throwed by
 oracle's database driver; it looks like the Geronimo does a wrong things
 commit on the connection when execute database operation; and this should
 only occurs on non-jta connection, because only no-jta connection will set
 auto commit default to true.

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

 The datasource  is org.tranql.connector.jdbc.DataSource. And it use  a  a
 managed-connection factory  org.tranql.connector.oracle.XAMCF to open
 connection; And the managed-connection factory use a oracle's xa datasource
 (oracle.jdbc.xa.client.OracleXADataSource);

 By the way , I haven't ever post a trivial problem I have meet when I deploy
 the Oracle-XA data source. The trivial thing is: I must change the deploy
 plan created by Geronimo's web manage console tools,   delete the empty
 property TNSEntryName and manually deploy it; because this is the oracle9i
 database driver's question --- a empty string value(not a null value) set
 to TNSEntryName will cause oracle9i's database driver to omit the other
 property (etc serverName, serviceName ...) and cannot establish a connect ;
 I thinks this should have no means to the transaction commit failure; but
 maybe it would give some other useful things help to find out the reason.

 Thanks a lot
 xuhongbo

 -origin -
 sender: David Jencks [mailto:david_jen...@yahoo.com]
 date: 2009/12/30 1:43
 receiver: user@geronimo.apache.org
 subject: Re: Reply: Cannot using Geronimo to execute bean-managed
 transaction with oracle transaction more than once, but Glassfish does

 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