0

Weblogic 10.3 クラスタ環境で J2EE MDB を実行しています。

コード内のメソッドの 1 つで、JDBC 接続を作成し、自動コミットをオフにします。データベースへの接続は、XA 対応のデータ ソースを介して行われます。自動コミットをオフにする理由は、一時テーブルを使用しているためです。

一時テーブルとその他の SQL クエリが完了したら、トランザクションをコミットし、自動コミットをオンに戻します。ほとんどの場合、これは問題ではありませんでしたが、メソッドの実行時に次の例外を受け取りました。コミットを発行したコードの行で例外が発生しました。

単一のデータベースに対してのみ呼び出しを行うメソッドのように受信した理由がわかりません。データ ソースが XA 対応であるためでしょうか? なぜこの例外が発生するのか、なぜ時々しか発生しないのかについての洞察をいただければ幸いです

java.sql.SQLException: could not use local transaction commit in a global transaction
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:403)
    at oracle.jdbc.driver.PhysicalConnection.disallowGlobalTxnMode(PhysicalConnection.java:6139)
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3320)
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:3357)
    at oracle.jdbc.OracleConnectionWrapper.commit(OracleConnectionWrapper.java:130)
    at weblogic.jdbc.wrapper.XAConnection.commit(XAConnection.java:844)
    at weblogic.jdbc.wrapper.JTAConnection.commit(JTAConnection.java:326)
    at com.myPackage.myApp.myDBCaller.tempTableMethod(myDBCaller.java:390)
    at com.myPackage.myApp.myDBCaller.start(myDBCaller.java:153)
    at com.myPackage.myApp.myDBCaller.onMessage(myDBCaller.java:117)
    at sun.reflect.GeneratedMethodAccessor1683.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
    at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
    at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
    at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
    at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
    at $Proxy228.onMessage(Unknown Source)
    at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:518)
    at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:423)
    at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:325)
    at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
    at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
    at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
    at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
    at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
4

1 に答える 1

0

プロパティを設定してみる

<property name="AutomaticEnlistingEnabled" value="false"/>

xaDatasource の。

于 2016-11-21T06:09:49.157 に答える