Managed datasources, Global transactions and XA
I have a question regarding the use of managed datasources and global transactions with oc4j 10.1.3.
From the documentation at:
http://download-west.oracle.com/docs/cd/B25221_04/web.1013/b14428/servdats.htm#CHDGJECC
I conclude that managed datasources by default support global transactions.
I have tested the following scenario:
A stateless session bean starts a container managed transaction. The bean updates data in two different databases through two different
managed datasources. The transaction is atomic.
What surprises me is that this works. I would think that I would need to configure the datasources to make use of XA.
Can someone explain why this works, wat is the difference between XA transactions and global transactions in this context?
Further to give more info the error users are facing is
Could not connect to 'oracle.jdbc.xa.client.OracleXADataSource'.
Similar Messages
-
When to use Global transaction and Local Transaction only
Hi All,
Could you please help with this question thats been troubling me from quite long time.
When to create Global & local Transactions and Local Transaction Only while creating Data source on oracle Application Server 10 G.
Do I get any advantages by using Global & local Transactions for creating Data Source
Thanks In Advance.
Regards,
Ajay Kumar .AkulamattyG wrote:
What is the difference between a single-process shared variable and a local variable?
A single process shared variable is more like a global variable, because it can be accessed from any VI in your hierarchy. Local variables are strictly local to the single VI where they reside.
Shared variables are a relatively new feature, while local and global variables are ancient. As such, shared variables are in many ways more modern and integrate better into state-of-the-art coding guidelines.
Shared variables contain error terminals so you can enforce execution order. local variables have no such thing.
A shared variable can stand on its own, while a local variable is always tied to a front panel object.
You need a project for shared varaibles.
You can easily turn a single process shared variable into a network shared variable later in the development, without the need to rewrite any code.
LabVIEW Champion . Do more with less code and in less time . -
My application deployed on weblogic 8.1 sp4 and ingres2.6,The ejb is BMP and
transaction type is "required",so i configured XA connection pool with
edbc.jar,which support XA transaction.but when excute an ejb mothod,it is
always throw the Exeption:
javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
jav
a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
inproper co
ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
was in
voked in an inproper context
javax.transaction.xa.XAException
at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
at
weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
urceInfo.java:1140)
at
weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
sourceInfo.java:1072)
at
weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
ourceInfo.java:240)
at
weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
rverTransactionImpl.java:463)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
334)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
at
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
ce.java:305)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
t(ExternalTransaction.java:53)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
Connection(ExternalTransaction.java:90)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
eryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:613)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:587)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
ssionImpl.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
entImpl.java:78)
at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
at
com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
rkflowPackageInfoDAO.java:892)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:373)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
334)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
at
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
ce.java:305)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
t(ExternalTransaction.java:53)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
Connection(ExternalTransaction.java:90)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
eryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:613)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:587)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
ssionImpl.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
entImpl.java:78)
at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
at
com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
rkflowPackageInfoDAO.java:892)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:373)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:383)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
jav
a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
inproper co
ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
was in
voked in an inproper context
javax.transaction.xa.XAException
at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
at
weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
urceInfo.java:1140)
at
weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
sourceInfo.java:1072)
at
weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
ourceInfo.java:240)
at
weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
rverTransactionImpl.java:463)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
334)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
at
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
ce.java:305)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
t(ExternalTransaction.java:53)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
Connection(ExternalTransaction.java:90)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
eryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:613)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:587)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
ssionImpl.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
entImpl.java:78)
at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
at
com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
rkflowPackageInfoDAO.java:892)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:373)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
334)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
at
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
ce.java:305)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
t(ExternalTransaction.java:53)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
Connection(ExternalTransaction.java:90)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
eryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:613)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:587)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
ssionImpl.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
entImpl.java:78)
at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
at
com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
rkflowPackageInfoDAO.java:892)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:373)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
at
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
dByName(WorkflowPackageBean.java:383)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
indByName(wfpackage_tzapts_Impl.java:335)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
(BeanManagedPersistenceManager.java:152)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1784)
at
weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
anager.java:1756)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
i hope to get more helpful information,so i turn on weblogic.debug
switch with
"-Dweblogic.Debug=weblogic.JDBCConn,weblogic.JDBCSQL,weblogic.JTA2PC,weblogic.JTAXA,weblogic.JTAJDBC"
the below is debug output, i dont know wht always inproper transaction
state.
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Info> <WebLogicServer>
<BEA-000213> <Addin
g address: 129.184.13.228 to licensed client list>
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<java.lang.Excep
tion: TRACE: [ExecuteThread: '24' for queue:
'weblogic.kernel.Default']ServerTM[
ServerCoordinatorDescriptor=(CoordinatorURL=weblogic81sp4_test+129.184.13.228:80
01+Intetest+t3+,
XAResources={},NonXAResources={})].setTransactionTimeout(120).
at
weblogic.transaction.internal.TraceHelper.traceStack(TraceHelper.java
:28)
at
weblogic.transaction.internal.TransactionManagerImpl.setTransactionTi
meout(TransactionManagerImpl.java:415)
at
weblogic.ejb20.internal.MethodDescriptor.startTransaction(MethodDescr
iptor.java:252)
at
weblogic.ejb20.internal.MethodDescriptor.getInvokeTx(MethodDescriptor
.java:377)
at
weblogic.ejb20.internal.EJBRuntimeUtils.createWrapWithTxs(EJBRuntimeU
tils.java:324)
at
weblogic.ejb20.internal.BaseEJBHome.preHomeInvoke(BaseEJBHome.java:35
8)
at
weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:631)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
findByName(wfpackage_tzapts_HomeImpl.java:190)
at
com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
WLSkel.invoke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
147)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<Xid=BEA1-0002D2
21FAAB(2036170959),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,secon
ds since begin=0,seconds left=-1142305918) wakeUpAfterSeconds(120)>
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: null: init(t/o=120,ttl=120)>
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: null: setProperty: weblogic.transaction.name=[EJB
com.bull.flexflow.workflow
.workflowpackage.WorkflowPackageBean.findByName(java.lang.String)]>
<Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: null: setName: [EJB
com.bull.flexflow.workflow.workflowpackage.WorkflowPacka
geBean.findByName(java.lang.String)]>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
com.b
ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
tring)]- -pool:flexstudio.xa.ds- > DataSource.getConnection>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
com.b
ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
tring)]- -pool:flexstudio.xa.ds- >
DataSource.refreshXAConnAndEnlist(inXAConn:nu
ll, conn:null, needsTxCtx:true)>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
com.b
ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
tring)]- -pool:flexstudio.xa.ds- > DataSource.getXAConnFromPool
waitSecs:117>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
com.b
ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
tring)]- -pool:flexstudio.xa.ds- <
DataSource.getXAConnFromPool:[EDBC-XAConnecti
on[5], owner=null, rmConn=EDBC-XAVirtConn[6]], Num XAConn:1>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: [EJB
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
me(java.lang.String)]: setLocalProperty:
weblogic.jdbc.jta.flexstudio.xa.ds=webl
ogic.jdbc.wrapper.TxInfo@1aaa2594>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
com.b
ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
tring)]- -pool:flexstudio.xa.ds- XA conn assoc with
tx:[EDBC-XAConnection[5], ow
ner=flexstudio.xa.ds, rmConn=EDBC-XAVirtConn[6]]>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: [EJB
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
me(java.lang.String)]: enlistResource:flexstudio.xa.ds>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<ResourceDescrip
tor[flexstudio.xa.ds]: getOrCreate gets rd: name = flexstudio.xa.ds
resourceType = 2
registered = true
scUrls = weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+
xar = flexstudio.xa.ds
healthy = true
lastAliveTimeMillis = -1
numActiveRequests = 0
>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB: [EJB
com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
me(java.lang.String)]: setCoordinatorURL
=>ServerCoordinatorDescriptor=(Coordina
torURL=weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+,
XAResources={},NonXA
Resources={})>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB6F1049B9: enlist flexstudio.xa.ds, beforeState=new>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<BEA1-0002D221FA
AB6F1049B9: XA.start(rm=flexstudio.xa.ds, xar=flexstudio.xa.ds,
flags=TMNOFLAGS)
>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<ResourceDescrip
tor[flexstudio.xa.ds]: Resource 'flexstudio.xa.ds'
setTransactionTimeout(120) no
t called. callSetTransactionTimeout=false,
supportsSetTransactionTimeout=true>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
<ResourceDescrip
tor[flexstudio.xa.ds]: startResourceUse, Number of active requests:1, last
alive
time:0 ms ago.>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
< -tx:null- -poo
l:flexstudio.xa.ds- > XAConnection.getXAResource,
xaConn:EDBC-XAConnection[5]>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
< -tx:null- -poo
l:flexstudio.xa.ds- < XAConnection.getXAResource,
xaRes:EDBC-XAConnection[5]>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
< -tx:null- -poo
l:flexstudio.xa.ds- >
XAResource.start(Xid:bea1-0002d221faab6f1049b9-666c6578737
47564696f2e78612e6473, flags:TMNOFLAGS), xaRes:EDBC-XAConnection[5]>
<Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
< -tx:null- -poo
l:flexstudio.xa.ds- < XA error: XAER_PROTO : Routine was invoked in an
inproper
context
javax.transaction.xa.XAException
at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
at
weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
urceInfo.java:1140)
at
weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
sourceInfo.java:1072)
at
weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
ourceInfo.java:240)
at
weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
rverTransactionImpl.java:463)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
334)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
at
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
ce.java:305)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
t(ExternalTransaction.java:53)
at
com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
Connection(ExternalTransaction.java:90)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
eryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:613)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
MapExecutorDelegate.java:587)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
ssionImpl.java:120)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
entImpl.java:78)
at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
at
com.bullalbert wrote:
> My application deployed on weblogic 8.1 sp4 and ingres2.6,The ejb is BMP and
> transaction type is "required",so i configured XA connection pool with
> edbc.jar,which support XA transaction.but when excute an ejb mothod,it is
> always throw the Exeption:
Hi. In order to debug this we would need you to turn on
the JTAXA, JTA2PC, JTAJDBC debug flags and in the
Connection Pool under JDBCCOnnectionPoolMBean JDBCXADebugLevel="20".
Then reproduce and provide server logs for all servers involved in
the global transaction and the config.xml.
This is complex enough that you should open an official support case
to get help setting that up.
Joe
>
>
> ####################################################################
> javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
> jav
> a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
> inproper co
> ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
> was in
> voked in an inproper context
> javax.transaction.xa.XAException
> at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
> at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
> at
> weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
> urceInfo.java:1140)
> at
> weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
> sourceInfo.java:1072)
> at
> weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
> ourceInfo.java:240)
> at
> weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
> rverTransactionImpl.java:463)
> at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
> at
> weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
> 334)
> at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
> at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
> at
> weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
> ce.java:305)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
> t(ExternalTransaction.java:53)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
> Connection(ExternalTransaction.java:90)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
> eryForList(GeneralStatement.java:123)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:613)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:587)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
> ssionImpl.java:120)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
> entImpl.java:78)
> at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
> at
> com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
> rkflowPackageInfoDAO.java:892)
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:373)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
>
> at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
> at
> weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
> 334)
> at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
> at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
> at
> weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
> ce.java:305)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
> t(ExternalTransaction.java:53)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
> Connection(ExternalTransaction.java:90)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
> eryForList(GeneralStatement.java:123)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:613)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:587)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
> ssionImpl.java:120)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
> entImpl.java:78)
> at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
> at
> com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
> rkflowPackageInfoDAO.java:892)
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:373)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
>
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:383)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
> javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
> jav
> a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
> inproper co
> ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
> was in
> voked in an inproper context
> javax.transaction.xa.XAException
> at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
> at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
> at
> weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
> urceInfo.java:1140)
> at
> weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
> sourceInfo.java:1072)
> at
> weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
> ourceInfo.java:240)
> at
> weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
> rverTransactionImpl.java:463)
> at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
> at
> weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
> 334)
> at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
> at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
> at
> weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
> ce.java:305)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
> t(ExternalTransaction.java:53)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
> Connection(ExternalTransaction.java:90)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
> eryForList(GeneralStatement.java:123)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:613)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:587)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
> ssionImpl.java:120)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
> entImpl.java:78)
> at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
> at
> com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
> rkflowPackageInfoDAO.java:892)
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:373)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
>
> at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
> at
> weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
> 334)
> at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
> at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
> at
> weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
> ce.java:305)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
> t(ExternalTransaction.java:53)
> at
> com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
> Connection(ExternalTransaction.java:90)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
> eryForList(GeneralStatement.java:123)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:613)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
> MapExecutorDelegate.java:587)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
> ssionImpl.java:120)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
> entImpl.java:78)
> at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
> at
> com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
> rkflowPackageInfoDAO.java:892)
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:373)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
>
> at
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
> dByName(WorkflowPackageBean.java:383)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
> indByName(wfpackage_tzapts_Impl.java:335)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> sorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:324)
> at
> weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
> (BeanManagedPersistenceManager.java:152)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1784)
> at
> weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
> anager.java:1756)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
>
> ##########################################################################################
> i hope to get more helpful information,so i turn on weblogic.debug
> switch with
> "-Dweblogic.Debug=weblogic.JDBCConn,weblogic.JDBCSQL,weblogic.JTA2PC,weblogic.JTAXA,weblogic.JTAJDBC"
> the below is debug output, i dont know wht always inproper transaction
> state.
>
>
> ##########################################################################################
>
>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Info> <WebLogicServer>
> <BEA-000213> <Addin
> g address: 129.184.13.228 to licensed client list>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <java.lang.Excep
> tion: TRACE: [ExecuteThread: '24' for queue:
> 'weblogic.kernel.Default']ServerTM[
> ServerCoordinatorDescriptor=(CoordinatorURL=weblogic81sp4_test+129.184.13.228:80
> 01+Intetest+t3+,
> XAResources={},NonXAResources={})].setTransactionTimeout(120).
> at
> weblogic.transaction.internal.TraceHelper.traceStack(TraceHelper.java
> :28)
> at
> weblogic.transaction.internal.TransactionManagerImpl.setTransactionTi
> meout(TransactionManagerImpl.java:415)
> at
> weblogic.ejb20.internal.MethodDescriptor.startTransaction(MethodDescr
> iptor.java:252)
> at
> weblogic.ejb20.internal.MethodDescriptor.getInvokeTx(MethodDescriptor
> .java:377)
> at
> weblogic.ejb20.internal.EJBRuntimeUtils.createWrapWithTxs(EJBRuntimeU
> tils.java:324)
> at
> weblogic.ejb20.internal.BaseEJBHome.preHomeInvoke(BaseEJBHome.java:35
> 8)
> at
> weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:631)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
> findByName(wfpackage_tzapts_HomeImpl.java:190)
> at
> com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
> WLSkel.invoke(Unknown Source)
> at
> weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> at
> weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:108)
> at
> weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
> dSubject.java:363)
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
> 147)
> at
> weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:415)
> at
> weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:30)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <Xid=BEA1-0002D2
> 21FAAB(2036170959),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,secon
> ds since begin=0,seconds left=-1142305918) wakeUpAfterSeconds(120)>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: null: init(t/o=120,ttl=120)>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: null: setProperty: weblogic.transaction.name=[EJB
> com.bull.flexflow.workflow
> .workflowpackage.WorkflowPackageBean.findByName(java.lang.String)]>
> <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: null: setName: [EJB
> com.bull.flexflow.workflow.workflowpackage.WorkflowPacka
> geBean.findByName(java.lang.String)]>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
> com.b
> ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
> tring)]- -pool:flexstudio.xa.ds- > DataSource.getConnection>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
> com.b
> ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
> tring)]- -pool:flexstudio.xa.ds- >
> DataSource.refreshXAConnAndEnlist(inXAConn:nu
> ll, conn:null, needsTxCtx:true)>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
> com.b
> ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
> tring)]- -pool:flexstudio.xa.ds- > DataSource.getXAConnFromPool
> waitSecs:117>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
> com.b
> ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
> tring)]- -pool:flexstudio.xa.ds- <
> DataSource.getXAConnFromPool:[EDBC-XAConnecti
> on[5], owner=null, rmConn=EDBC-XAVirtConn[6]], Num XAConn:1>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: [EJB
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
> me(java.lang.String)]: setLocalProperty:
> weblogic.jdbc.jta.flexstudio.xa.ds=webl
> ogic.jdbc.wrapper.TxInfo@1aaa2594>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
> com.b
> ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
> tring)]- -pool:flexstudio.xa.ds- XA conn assoc with
> tx:[EDBC-XAConnection[5], ow
> ner=flexstudio.xa.ds, rmConn=EDBC-XAVirtConn[6]]>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: [EJB
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
> me(java.lang.String)]: enlistResource:flexstudio.xa.ds>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <ResourceDescrip
> tor[flexstudio.xa.ds]: getOrCreate gets rd: name = flexstudio.xa.ds
> resourceType = 2
> registered = true
> scUrls = weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+
> xar = flexstudio.xa.ds
> healthy = true
> lastAliveTimeMillis = -1
> numActiveRequests = 0
>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB: [EJB
> com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
> me(java.lang.String)]: setCoordinatorURL
> =>ServerCoordinatorDescriptor=(Coordina
> torURL=weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+,
> XAResources={},NonXA
> Resources={})>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB6F1049B9: enlist flexstudio.xa.ds, beforeState=new>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <BEA1-0002D221FA
> AB6F1049B9: XA.start(rm=flexstudio.xa.ds, xar=flexstudio.xa.ds,
> flags=TMNOFLAGS)
>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <ResourceDescrip
> tor[flexstudio.xa.ds]: Resource 'flexstudio.xa.ds'
> setTransactionTimeout(120) no
> t called. callSetTransactionTimeout=false,
> supportsSetTransactionTimeout=true>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
> <ResourceDescrip
> tor[flexstudio.xa.ds]: startResourceUse, Number of active requests:1, last
> alive
> time:0 ms ago.>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
> < -tx:null- -poo
> l:flexstudio.xa.ds- > XAConnection.getXAResource,
> xaConn:EDBC-XAConnection[5]>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
> < -tx:null- -poo
> l:flexstudio.xa.ds- < XAConnection.getXAResource,
> xaRes:EDBC-XAConnection[5]>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
> < -tx:null- -poo
> l:flexstudio.xa.ds- >
> XAResource.start(Xid:bea1-0002d221faab6f1049b9-666c6578737
> 47564696f2e78612e6473, flags:TMNOFLAGS), xaRes:EDBC-XAConnection[5]>
> <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
> < -tx:null- -poo
> l:flexstudio.xa.ds- < XA error: XAER_PROTO : Routine was invoked in an
> inproper
> context
> javax.transaction.xa.XAException
> at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
> at web -
Global transactions in OSB and EJB 2.1
Hi,
My team is working in a SOA service based on OSB 11g (11.1.1.5) using DB JCA Adapter and EJB 2.1 over WLS 10g(WLI environment). The logic of the service works in this way:
1. A table in a database (XE) is polled by the DB Adapter which starts the service (1 row = 1 message).
2. The message contains a collection of items to be inserted in another Oracle database.
Once a message/row is picked, and after some steps (logging, validation,etc), there is a for..each action which extracts each item of the collection and executes a service callout action to a business service.
3. This business service uses EJB protocol to call an EJB (2.1 + WLS Extensions). The EJB is deployed in another domain (WLS 10.3.0/10g and Oracle BEA drivers) and only executes an store procedure with the parameters based on the message and inserts these values in a table.
4. Once the for...each finishes, there is a call to another proxy service which marks the message/row as "processed" in the source table. This update is done via DB JCA also.
5. In case of an error, the error handler of the proxy service calls the proxy service mentioned above to mark the row as "Failed" (in fact there is a retry mechanism, but it's not important for now).
The service requires to work inside a global transaction. The main requirement is that the collection of items should be processed as "All or None", so basically we're using the options to manage the global transaction. However, the problem is that it's failing to rollback the whole insertion of items when an error is simulated. It only rolls back the last insertion/execution of SP.
Additionally, the proxy service that should mark the row as FAILED, never updates this one, and the tables stay locked until we modify one of the store procedure in order to avoid the simulated error and commit the transaction.
The EJB uses WLS extensions with the annotations to "transaction required". The proxy service has the option transaction required also. The database drivers are all XA and we're testing against Oracle11g XE (however, the EJB destiny will be Oracle 8i in production).
We have tried different alternatives, splitting the logic in different proxies (Proxy services for JCA, Proxy with For Each for EJB, etc), isolating the specific part with the EJB call, without success.
The security between domains is set as Global Trust.
Do you have any idea, example or suggestion about this problem? Is EJB really supported in Global Transactions and XA?
Thanks in advance.where do you find the J2EE Connector 1.5 compliant
Resource Adapter?I wrote the compliant adapter myself. Hey Steve,
Were you able to find a solution for this problem. I am struggling with the same problem with the RI Beta implementation.
Sandeep -
Hello Friends,
I have a doubt on TMS and Global Transaction.
Can tpbegin(), tpcommit(), tpabort() calls succeed when there is
no TMS server running for the Tuxedo Server group.
If yes, who manages the Global Transaction in this case?
Thanks in advance for ur time.
regards
MSWhen you compile a Tuxedo server, there is ALWAYS a TMS compiled in. If
you look at $TUXDIR/udataobj/RM, you will fine a line similar to:
NONE:tmnull_switch:
When you do not use the -r option, or use -r NONE, the tmnull_switch is
compiled into your server. This is a bunch of do nothing code to occupy
the function slots that otherwise would be used by a real XA
connection. For example, if you had put
-r Oracle_XA
(also see the RM file) the switch xaosw is compiled into your server.
So the first thing I want point out is that a server ALWAYS has a TMS
switch compiled, even if it is a NULL switch.
Second item. This null switch does have a null transaction management
server, called TMS ($TUXDIR/bin/) This is the entry for the TMSNAME
field of a Service GROUP.
You might have an entry such as
APPGRP GRPNO=10 TMSNAME=TMS
DBGRP GRPNO=11 TMSNAME=TMSORACLE OPENINFO="......"
Now, I can have XA transactions initiated by servers in APPGRP, and have
servers in DBGRP participate in the same global transaction. (but watch
your performance)
So, to answer Manoj's question, No, they don't succeed if there is no
TMS. However, all you need is to add TMSNAME=TMS and have compiled the
servers with -r NONE (better to be explicit than implicit) and they will
work.
Hope this clears up some things.
Manoj SASIDHARAN wrote:
Hello Friends,
I have a doubt on TMS and Global Transaction.
Can tpbegin(), tpcommit(), tpabort() calls succeed when there is
no TMS server running for the Tuxedo Server group.
If yes, who manages the Global Transaction in this case?
Thanks in advance for ur time.
regards
MS--
Brian Douglass
Transaction Processing Solutions, Inc.
8555 W. Sahara
Suite 112
Las Vegas, NV 89117
Voice: 702-254-5485
Fax: 702-254-9449
e-mail: [email protected] -
JDO with container (J2EE) managed DataSource
Hello,
I would like to use application server managed DataSource with JDO and
would love to find a piece of documentation/link that would take me
through it.
In absence of such a document, any advice/idea will be appreciated.
Based on the bits and pieces that I have already discovered, I assume that:
when binding the PersistanceManagerFactory to JNDI, I should use
DataSource ds = (DataSource)ic.lookup("jdbc/myDataSourceName");
pmf.setConnectionFactory(ds);
... to set the datasource (instead of ConnectionFactory). Is that it?
I found some older topics (July?) that mentioned that this is NOT
officially supported. Quote:
<i>A couple of warnings, though:
* The use of external datasources is untested.
* If using the datasource within an appserver, the Connections from it
should not be automatically committed/rolled back with the completion of
the
global transaction. Kodo performs its own transaction management on the
Connections it uses. In future releases we'll be able to handle
Connections
that are controlled by the appserver.</i>
Is it still the case now or is this the official way to integrate
application server (Websphere 5.0) with JDO now? Assuming that Kodo was
configured to integrate with TransactionManager of the application server,
is there a reason not to let the application server control the
transactions? Are we going to run into problems if we do it?
Thank you,
PetrHi Ben,
Thank you for your advice, that is an experience that it is good to know
about.
In terms of forcing (configuring) Kodo to use the existing data source
from application server, how did you do it?
Based on the structure bellow, I would assume that you used the Java
Connector option. Other then the experience you mentioned, are you happy
camper?
Thank you,
Petr
Ben Eng wrote:
Here is my experience using Kodo with BEA WebLogic Server. Your mileage may
vary with IBM WebSphere.
When using a JDBC driver in the application server\'s classpath (which would
be the case with a managed DataSource), the JDBC driver does not have access
to your J2EE application\'s classes for deserializing them from BLOBs.
Therefore, the Kodo serialized BLOB mapping would not work in this
configuration. You will need to rely solely on more sophisticated O/R
mappings.
Kodo integrates well with the application servers managed Transactions, when
packaged as a JCA resource adapter. With BEA WLS, I found that I had to
repackage things as follows:
myApp.ear
|
+-application.xml
+-jakarta-commons-logging-1.0.2.jar
+-jdbc2_0-stdext.jar
+-jdo1_0.jar
+-kodo-jdo-runtime.jar
+-serp.jar
+-mysql-connector-java-3.0.3-beta-bin.jar (or whatever your JDBC
driver is)
|
+-kodo.rar
| +-META-INF
| +-MANIFEST.MF
| +-ra.xml
| +-weblogic-ra.xml
+-myEJB.jar
+-META-INF
| +-MANIFEST.MF
+-myEJB.class
Both the kodo.rar and myEJB.jar MANIFEST.MF looks like this:
Manifest-Version: 1.0
Class-Path: serp.jar jdo1_0.jar kodo-jdo-runtime.jar
jakarta-commons-logging-1.0.2.jar jdbc2_0-stdext.jar
mysql-connector-java-3.0.3-beta-bin.jar
When the JDBC driver is packaged with the application EAR like this,
deserialization of BLOB also works fine. If you do have the JDBC driver in
the application server\'s classpath, it will be loaded from there first and
deserialization of BLOBs will break. Unfortunately, this is limitation is
terribly limiting, because CMP EntityBeans and JMS destinations that require
persistent storage will need to use managed DataSources. Probably the best
compromise is to have the JDBC driver in the application server\'s classpath,
not in the application EAR, and live without BLOB mappings (not a big loss
in real world applications).
Ben
\"Petr Bulanek\" <[email protected]> wrote in message
news:[email protected]...
Hello,
I would like to use application server managed DataSource with JDO and
would love to find a piece of documentation/link that would take me
through it.
In absence of such a document, any advice/idea will be appreciated.
Based on the bits and pieces that I have already discovered, I assumethat:
when binding the PersistanceManagerFactory to JNDI, I should use
DataSource ds = (DataSource)ic.lookup(\"jdbc/myDataSourceName\");
pmf.setConnectionFactory(ds);
.. to set the datasource (instead of ConnectionFactory). Is that it?
I found some older topics (July?) that mentioned that this is NOT
officially supported. Quote:
<i>A couple of warnings, though:
* The use of external datasources is untested.
* If using the datasource within an appserver, the Connections from it
should not be automatically committed/rolled back with the completion of
the
global transaction. Kodo performs its own transaction management on the
Connections it uses. In future releases we\'ll be able to handle
Connections
that are controlled by the appserver.</i>
Is it still the case now or is this the official way to integrate
application server (Websphere 5.0) with JDO now? Assuming that Kodo was
configured to integrate with TransactionManager of the application server,
is there a reason not to let the application server control the
transactions? Are we going to run into problems if we do it?
Thank you,
Petr -
Advise on using DBMS_XA with multiple branches under one global transaction
Dear all
I need some advise on using DBMS_XA from PL/SQL with tightly coupled multiple branches under one global transaction. Basically, I've successfully written some PL/SQL code that in 3 different sessions attaches to 3 different branches of one global transaction and before ending each branch they can see each others uncommitted data. So far so good.
However, I'm not sure I completely understand how each branch must call xa_end, xa_prepare and xa_commit correctly using two phase commit and my calls result in errors like:
ORA-24767: transaction branch prepare returns read-only (XA error code 3 = Transaction was read-only and has been committed)
ORA-24756: transaction does not exist (XA error code -4 = XID is not valid)
ORA-02051: another session or branch in same transaction failed or finalized
This is the structure of my programs (3 SQL*Plus sessions):
main: Uses xid 123|0 (branch 0 of global transaction 123). This should be the coordinator that commits using two phase commit across the 3 branches
m1.xa_start tmnoflags
m2.DML
m3.Wait for thread A + B to manually be started and run xa_end
m4.xa_end tmsuccess
m5.xa_prepare
m6.xa_commit false
thread A: Uses xid 123|A (branch A of global transaction 123)
a1.xa_start tmnoflags
a2.DML -- thread A can see main and thread B's data
a3.xa_end tmsuccess
a4.xa_prepare -- required?
a5.Should we also call xa_commit false?
thread B: Uses xid 123|B (branch B of global transaction 123)
b1.xa_start tmnoflags
b2.DML -- thread B can see main and thread A's data
b3.xa_end tmsuccess
b4.xa_prepare -- required?
b5.Should we also call xa_commit false?
The failing steps are:
m5
m6
a4
a5
b4
b5
Before starting calling xa_end I see 3 rows in V$GLOBAL_TRANSACTION, eg (hex 7B = decimal 123):
FORMATID GLOBALID BRANCHID BRANCHES REFCOUNT PREPARECOUNT STATE FLAGS COUPLING
203348753 0000007B 00000000000000000000000000000000 3 3 0 ACTIVE 0 TIGHTLY COUPLED
203348753 0000007B 0000000000000000000000000000000A 3 3 0 ACTIVE 0 TIGHTLY COUPLED
203348753 0000007B 0000000000000000000000000000000B 3 3 0 ACTIVE 0 TIGHTLY COUPLED
Thanks a lot in advance.
Cheers
FinnOK, I've figured it out. This is poorly documented as it's not well explained how to handle the various return codes. Turns out that all but the last xa_prepare calls return dbms_xa.xa_rdonly (tightly coupled branches are combined -- "read only" optimization), the last one returns dbms_xa.xa_ok and this is when you should call xa_commit.
Now my next problem is that DBMS_XA doesn't work from within jobs (DBMS_JOB and DBMS_SCHEDULER), which makes it very difficult to use DBMS_XA. My purpose of using DBMS_XA is to coordinate work across multiple sessions in one transaction but if I can't easily create the multiple sessions, I'm stuck.
When called from a job, xa_start throws:
ORA-24789: start not allowed in recursive call
on Oracle 11.2. In Oracle 11.1 it works, but xa_end fails with
ORA-25352: no current transaction
so I guess in fact the xa_start call didn't really work either, even though it returned tm_ok.
I'm now trying to find a workaround on how to use DBMS_XA from within jobs, please comment if you have any suggestions. Or if you have any suggestions on other means of establishing the concurrent sessions (I wouldn't like to resort to external programs that need username/password to connect as password management would be a security issue).
Thanks in advance.
Cheers
Finn -
2 Phase Commit Global Transaction resolution question.
Hi All,
I hope this is the right place to ask this question.
I'm trying to figure out what generally happens after the JTA AbandonTimeout occurs.
Here is the scenario.
1. Transaction Manager sends Commit to Resource Managers 1 and 2.
2. Resource Manager 1 receives and processes commit. Resource Manager 2 doesn't receive commit.
3. Resource Manager 1 returns acknowledgement.
4. Transaction Manager times out and starts recovery process.
5. Resource Manager 2 session times out and is set to in-doubt.
6. Transaction Manager can never reconnect to Resource Manager 2, and the AbandonTimeout is reached.
7. Transaction Manager abandons RM2 transaction.
8. Does Transaction manager return an error for global transaction?
I'm guessing the application the Transaction Manager is working for has its own timeouts which would most likely be a smaller value than the abandon timeout. So the transaction would most likely timeout. I'm just trying to make sure that the Global Transaction is not sent back as complete at a later time if the abandon timeout is reached.
Any Thoughts?
Thanks,
MattPetr-
In article <avflf9$ccu$[email protected]>, Petr Bulanek wrote:
Hi Marc,
Well, what does it really mean that \'Kodo will not respect the
semantics of the 2-phase-commit protocol\'?Are you saying that Kodo may commit my changes even if the other datastore
decides to roll the transaction back at the last moment?
That if Kodo has difficulties to commit, it would not roolback the global
transaction and as a result the other datastores will commit?You are correct: we currently do not do anything special for 2 phase
commit at all.
I mean, this is quite important and would like to know exactly what to
expect so I can work around it.
Thank you,
Petr
P.S.
I \'think\' I saw the plan to fix this in 2.5.x. What is the planned
release date?It is in the milestone for 2.5. We can't make any committments on its
release date, but it will hopefully be out within 2 months.
Marc Prud\'hommeaux wrote:
Petr-
You can integrate Kodo\'s JDO transactions into the Application Server\'s
global transaction (which might also commit multiple other
transactions). The only issue is that Kodo will not respect the
semantics of the 2-phase-commit protocol.
We expect to have this issue resolved soon.
In article <avdri3$f2o$[email protected]>, Petr Bulanek wrote:
I have noticed that there is open bug (211) that refers to 2 phase commit
and I just curious what the exact problem is.
Does that imply that the current version (2.4) does not allow 2 phase
commit?
Let\'s say I need to integrate JDO into global transaction (managed by App
server) and I may need during that transaction update multiple databases.
It could be implemented via JDO (multiple PMFs) or it could be a
combination of JDO and JDBC/EJB happening during the same transaction.
Am I likely to hit a problem if I do that?
Thank you,
Petr
Marc Prud\'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com
Marc Prud'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com -
Management of Global Employment
I have set up every thing OK in system for Management of Global Employment, and i could run the flow of actions like Expatriation Planning, Activation and all other actions related with.
MY question is, when ever i am trying to save IT0706 i am getting error message for the "HOME" and "HOST" subtypes, i am sure that if i am able to trace one error of one subtype , i would be able to trace the other subtype error. So currently i am focusing only on one subtype.
Whenever i try to save IT0706 it throw error message and asks me to maintain the tables "T76MGE_ACPI" and "T76MGE_BCPI" when actually go to SM30 and try to maintain these tables, (i could notice that these tables are only allowed to maintain through SM30 and not through IMG)
The input values for these two tables are the drop down comes from navigation path "Management of Global Employees > Compensation Package > Compensation Package Items > Define Compensation Package Items"
when i actully go and see, i DID HAVE my values maintained in this table, but they dont default in above mentioned two tables. "T76MGE_ACPI" and "T76MGE_BCPI" where i am doing mistake is clue less to me and neex your help. - appreciate any insight to it.
If i could maintain IT0706 without errors, i am done with my configurationNot much help, i have already gone through this., I got one more clue as i dig more into system, i should be able to maintain the Table T76MGE_CPI. This table also again not editable either through SM30 or IMG node (still figuring out)
So you may look at the direction of the ways to maintain this table.
Thanks for your look -
Doubts in Management of global employees
Dear Experts,
im trying to configure Global employment in my system.
Here im having some doubts in the execution of Global employment.
the doubts are...1.Shall we need to configure seperate actions for the management of global employees and what are the specific infotypes for the actions.
2.How to activate the global employment in the system.
Kindly share your valuable advices.
Regards,
V Sai.Hope it helps
Payroll for Global Employees This component is not released for all customers. For more information, read SAP note 518503.
You use this component to run payroll for your global employees.
Implementation Considerations:
To implement this component you must activate it in your system. Access Customizing for Payroll and choose Payroll International --> Payroll for Global Employees, and perform the IMG activity Activate Payroll for Global Employees. You make other settings for this component in the same section.
Integration:
You can implement Payroll for Global Employees irrespective of whether you administer your global employees with the component Management of Global Employees or in some other way in the system.
Features:
For Payroll for Global Employees payroll is usually run in two countries. There is data exchange between two payroll systems. Data is exchanged in the form of wage types.
u2022 The sending payroll creates the wage types and stores them in table RT_GP (Results Table: Payroll for Global Employees).
u2022 The receiving payroll imports the wage types from the sending payroll and processes them further.
Use function XGP (Payroll for Global Employees) to transfer wage types from the sending payroll to the receiving payroll and to process them within the receiving payroll.
All features that are included in the appropriate Payroll country version are available in sending and receiving payroll. For more information, see Payroll country versions in the SAP Library under Human Resources --> Payroll --> Payroll <Country>.
Constraints:
At present you can only transfer wage types from the sending to the receiving payroll. Data exchange in two directions is not possible.
Example
Employees in your German firm are usually seconded to your subsidiary company in the USA for three to five years. The remuneration of these global employees is calculated in the Payroll of the US company. Payment is also effected in the USA. However, the employee also pays social insurance contributions in Germany during his overseas assignment. These social insurance contributions are calculated in the German payroll system, and transferred to the American payroll system. They are settled there with the remuneration of the employee. In this case the German payroll is the sending payroll system, and the American payroll is the receiving payroll system.
Execute the relevant personnel action or choose Human Resources > Personnel Management > Administration > HR Master Data > Maintain.
2. If you have chosen to maintain the infotype manually, enter the global employeeu2019s personnel number and choose infotype Global Assignment Details (0710).
3. Click Create.
4. Enter the data with regard to the global assignment and check their consistency. Note that the system automatically determines the end date of the assignment on the basis of the duration you have entered.
5. Enter the applicable employment percentage in the host country.
6. Enter the current personnel number the global employee is assigned to in the host country. For more information on how to use these fields, see the F1 documentation.
7. Click Save.
Maintaining the Global Assignment Status
In this step, you maintain the current status of the global assignment according to HR processor.
Procedure
1. Execute the relevant personnel action or choose Human Resources > Personnel Management > Administration > HR Master Data > Maintain.
2. If you have chosen to maintain the infotype manually, enter the global employeeu2019s personnel number and choose infotype Global Assignment Status (0715).
3. Click Create.
4. Select the applicable assignment status.
5. Click Save.
Copied from the previous Threads -
Lock between transaction branches of a global transaction
Hi,
I have an Oracle Database v.10.1.0.4, on which there are two schemas (A and B).
A table on schema A has a reference key on a table on schema B.
Now, i have a j2ee application that uses two distinct connection to performs inserts on both schemas within the same global transaction (using a JTATransactionManager), but i'm experiencing a lock in the following situation:
1 - On connection for schema B, a new ROW is inserted
2 - On connection for schema A, a new ROW is inserted referencing the new row in schema B, but the query is locked by the insert on schema B.
It is like the two transacions are loosely coupled and not tightly coupled as I would expect for distributed transaction on the same oracle instance (or at least they are not part of a global transaction and are treated as two distinct transaction).
Someone know if oracle jdbc drivers handle tightly coupled transactions for transaction branches on the same oracle instance that are part of the same global transaction?
Thanks,
Luca De Petrillohttp://www.myoracleguide.com/s/managelocks.htm
-
Global transaction problem with JDriver/Oracle and Oracle XA
We are haveing serious problems with Container Managed Transactions on Bea 6.1
and Oracle with EJB having set "Required" for all methods. We have tried in vain
to make it work with JDriver as well as OracleXAClient. Both fail at sometime
during the execution throwing "Not called in cotext of global transaction" (with
JDriver) OR "XAER_PROTO : Routine was invoked in an
inproper context start() failed on resource 'OracleXAPool'" (this one with oracle
XA).
1.) Weblogic JDriver-XA:
DatabaseMetaData metaData = dataSource.getJDBCConnection.getMetaData();
ResultSet resultSet = metaData.getTables(null, null, tableName.toUpperCase(),
new String[]{"TABLE"});
This fails immmediately saying that it was not called from global transaction.
Interesting thing is that with OracleXA, it doesnt say this exception at this
check point.
2) Oracle XA
Okie, we couldnot read through the CLOB using it so for reading CLOB, we used
direct jdbc connection and then did away with it. Now all next sql queries were
executed against oracle pool using XA data source with OracleXAClient. But at
some point we again ran into the problem "XAER_PROTO : Routine was invoked in
an
inproper context start() failed on resource 'OracleXAPool'"
3 Oracle Thin Driver
everything always works with it.AFAIR this issue was resoved by moving tx opreations out from non-tx
methods.
Regards,
Slava
"Apurb Kumar" <[email protected]> wrote in message
news:[email protected]...
Jawad,
It would be nice if you can post the full stack trace error message. Didyou try moving to
the latest service pack (sp2) for WLS6.1.
Thanks,
Jawad Mahmood wrote:
Yes we had correctly set TXDataSource and let it to point to the right
connection
pool each time and it worked well with oracle thin driver but not whenwe switched
the pool to JDriver or OracleXAClient. Note that we could aways confirmthat pool
was successfully created alongwith we could retrieve connection from itvia TXDatSource,
things gave problem after we attempted to do what i had mentioned in mylast posting.
>>
Also with JBoss 2.4.4 things work pretty well. So couldnt be our codeproblem.
"Slava Imeshev" <[email protected]> wrote:
Jawad,
Did you set up TxDataSource?
Regards,
Slava Imeshev
"Jawad Mahmood" <[email protected]> wrote in message
news:[email protected]...
We are haveing serious problems with Container Managed Transactionson
Bea 6.1
and Oracle with EJB having set "Required" for all methods. We havetried
in vain
to make it work with JDriver as well as OracleXAClient. Both fail atsometime
during the execution throwing "Not called in cotext of global
transaction"
(with
JDriver) OR "XAER_PROTO : Routine was invoked in an
inproper context start() failed on resource 'OracleXAPool'" (this onewith
oracle
XA).
1.) Weblogic JDriver-XA:
DatabaseMetaData _metaData =
_dataSource.getJDBCConnection.getMetaData();
ResultSet resultSet = metaData.getTables(null, null,tableName.toUpperCase(),
new String[]{"TABLE"});
This fails immmediately saying that it was not called from globaltransaction.
Interesting thing is that with OracleXA, it doesnt say this exceptionat
this
check point.
2) Oracle XA
Okie, we couldnot read through the CLOB using it so for reading CLOB,we
used
direct jdbc connection and then did away with it. Now all next sqlqueries
were
executed against oracle pool using XA data source with
OracleXAClient.
But
at
some point we again ran into the problem "XAER_PROTO : Routine wasinvoked
in
an
inproper context start() failed on resource 'OracleXAPool'"
3 Oracle Thin Driver
everything always works with it.
Apurb Kumar -
How to configure global transaction wthin Oracle AS JMS and Oracle JMS
How to configure global transaction if I take a message from Oracle JMS(AQ) and send it to the Oracle JMS?
Which version of OC4J are you working on?
In OC4J 10.1.3.x, presume your OC4J JMS listens messages via MDB which uses a resource adapter as a message listener. The resouce adaper could be the generic JMS adapter deployed in OC4J as the default.
Resource adapter configuration to support MDBs is included in the standard ra.xml file, which lists the message listener types that the resource adapter supports.
The MDB developer or deployer configures the MDB in the ejb-jar.xml file, through a <message-driven> element.
In addition to above, configuration in the ejb-jar.xml file specifies whether an MDB uses transactions.
1) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, and the <trans-attribute> subelement of <container-transaction> (under the <assembly-descriptor> element) has a value of Required. In this circumstance, if there is an imported transaction, then message delivery and related work are performed within that transaction. If there is no imported transaction, OC4J creates a transaction, and message delivery and related work are performed within that transaction.
2) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Bean. In this circumstance, the MDB manages the transaction. If a transaction is imported, OC4J will suspend it before the message delivery method call to the MDB, in order to avoid conflict.
Message delivery is not transacted if the <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, but the <trans-attribute> element has a value of NotSupported. If there is an imported transaction in this circumstance, OC4J will suspend the transaction before the message delivery method call to the MDB.
Details could be found from OC4J Resource Adapter Guide. -
The resource manager is doing work outside a global transaction
I use Orable 8.1.7.4 with Sun Java Application Server 7.0.0_04. The XA data source I use is oracle.jdbc.xa.client.OracleXADataSource.
Oracle JDBC driver version is 10.1.0.2.0.
I have an J2EE application with 2 EJB modules. Each EJB module works use own ConnectionPool.
All Entity beans are CMP, CMT.
All methods have transactional attribute REQUIRED.
When I work with beans from single EJB module only, all works fine.
When I try to call session bean method from a session bean from ANOTHER EJB module - an exception will be thrown:
WARNING: JTS5041: The resource manager is doing work outside a global transaction
oracle.jdbc.xa.OracleXAException
Anyone got any idea?I remember having exact same problem with 9.2 drivers, the problem got fixed with 9.2.0.5 drivers -- perhaps Oracle hasn't ported the same fix to 10g drivers. As a workaround try creating non-XA datasource to avoid the exceptions.
-
MDB Container Managed Transaction and Log4J
Hi,
I'm programming and MDB that reads and updates a database then sends out an HTTP Post and logs using log4j. I've read that when an MDB is configured as CMT or container managed transaction and the OnMessage method executes without errors, the transaction is implicitly commited. You can rollback the transaction by explicitly calling setRollbackOnly() or when a RuntimeException has been thrown. My worry is that after I have sent out an HTTP POST (a transaction has been completed) I would have to log a transaction completion using log4j. My problems is if log4j throws a RuntimeException thereby rolling back my transaction which shouldn't be the case. What I have done is to catch all Exceptions (and swallow them) whenever I log using log4j after I have sent out an HTTP POST succesfully (since my transaction should be complete by then). Is this a correct workaround?
Thanks :)Your approach is correct. If you think, Log4J might throw errors, swallow the exceptions and try not to roll back.
Maybe you are looking for
-
Reinstalling Mac OS X Software
How i can reinstall mac os x software in my mac book pro
-
when I want more information about a podcast I hit the i for information. But then the box won't go away, or move. It continues to block the center of my screen. How do I get rid of it?
-
Hello team, I upgrade my Weblogic server 10 to weblogic 12.1.1. and when I start my server this error appears: <Error> <Deployer> <BEA-149205> <Failed to initialize the application "XXXXXX" due to error weblogic.application.ModuleException: weblogic.
-
Fresh install of Ilustrator CS6 (64bit) can't load Drop Shadow.aip
Today I upgraded from Design Standard CS5.0 to CS6, and as I am running Windows 7 64bit I chose the 64-bit version of Illustrator. Now every time I start Illustrator it reports "Error loading plugins. Drop Shadow.aip"; after clicking OK it starts nor
-
Cs6 image trace. want all bk to wt. wt to bk
cs6 image trace of psd raster file to vector (preset black & white) comes out just GREAT. but i need all that cs6 output - all black must be white. all output white must be black. this probably is best: all black must be white. all white must be tran