簡體   English   中英

XA事務在JBoss 4中使用SQLJDBC驅動程序不起作用

[英]XA transaction not working using SQLJDBC driver with JBoss 4

我正在使用Jboss 4.0.4SQL Server 2012作為數據庫。 我們已經使用jTDS driver配置了XA datasource ,它工作正常。 但是當我們要使用sqljdb驅動程序時,因為它支持TLS1.2協議。 但是,使用此配置, JBoss啟動失敗,並顯示以下異常跟蹤:

XAException:tx = TransactionImpl:XidImpl [FormatId = 257,GlobalId = xxx / 3,BranchQual =,localId = 3] errorCode = XAER_NOTA javax.transaction.xa.XAException:函數COMMIT:失敗。 狀態為:-4。 錯誤:com.microsoft.sqlserver.jdbc上com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:645)上的錯誤:“ * SQLJDBC_XA DTC_ERROR上下文:xa_commit,狀態= 1,狀態代碼:-4(0xFFFFFFFC)* ” org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.commit(XAManagedConnection.java:147)上的.SQLServerXAResource.commit(SQLServerXAResource.java:808),org.jboss.tm.TransactionImpl $ Resource.commit(TransactionImpl.java :2505),位於org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1847),位於org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:362),位於org.jboss.tm.TxManager.commit(TxManager。 org.jboss.mq.sm.jdbc.JDBCStateManager $ JDBCSession.close(JDBCStateManager.java:613)上的org.jboss.mq.sm.jdbc.JDBCStateManager.initDB(JDBCStateManager.java:465)上的java:240) org.jboss.system.ServiceMBean.jboss.mq.sm.jdbc.JDBCStateManager.startService(JDBCStateManager.java:378)org.jboss.system.Servic中的.jboss.mq.sm.jdbc.JDBCStateManager.startService(JDBCStateManager.java:378) eMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)位於sun.reflect.GeneratedMethodAccessor2.invoke(未知源)位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method。 org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)的org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)的org.jboss.mx.server的java:498) org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)處org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)處的.Invocation.invoke(Invocation.java:86) org.jboss.system.ServiceController.start(ServiceController.java:417)上com.sun.proxy。$ Proxy0.start(未知源)的org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController.java:978)在org.jboss.syst的org.jboss.system.ServiceController.start(ServiceController.java:435)的org.jboss.system.ServiceController.start(ServiceController.java:435) 位於org.jboss.system.em.ServiceController.start(ServiceController.java:435)位於org.jboss.system.ServiceController.start(ServiceController.java:435)位於sun.reflect org.jboss.mx.interceptor.ReflectedDispatcher處java.lang.reflect.Method.invoke(Method.java:498)處的.GeneratedMethodAccessor10.invoke(未知源),位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) org.org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)處的org.jboss.mx.server.Invocation.invoke(Invocation.java:86)處的.invoke(ReflectedDispatcher.java:155)。 org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)處的jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt。 java:210)位於com.sun.proxy。$ Proxy4.start(未知源)位於org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)位於sun.reflect.NativeMethodAccessorImpl.invoke0(本地M ethod)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:498) org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)在org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)在org.jboss.mx.interceptor.AbstractInterceptor.invoke( org.jboss.mx.server.Invocation.invoke(Invocation.java:88)處的org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)處的org.jboss.mx org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659上的.server.Invocation.invoke(Invocation.java:88)在org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) )的org.jboss.deployment.XSLSubDeployer.st的org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)com.sun.proxy。$ Proxy44.start(未知源) org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)的art(XSLSubDeployer.java:197)org.jboss.deployment.MainDeployer的org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)的art(XSLSubDeployer.java:197) .deploy(MainDeployer.java:771)位於sun.reflect.GeneratedMethodAccessor55.invoke(未知源)位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)位於java.lang.reflect.Method.invoke(Method.java) :498),位於org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155),位於org.jboss.mx.server.Invocation.dispatch(Invocation.java:94),位於org.jboss.mx.interceptor。 org.org.jboss.mx.server.Invocation.invoke(Invocation.java:88)處的org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)處的AbstractInterceptor.invoke(AbstractInterceptor.java:133) org.jboss.mx.server.Invoke(Invocation.java:88)在org.jboss.mx.serve的.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)上的r.MBeanServerImpl.invoke(MBeanServerImpl.java:659)在org.jboss上的com.sun.proxy。$ Proxy8.deploy(未知源) org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)上的.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)在org.jboss.deployment.scanner.AbstractDeploymentScanner $ ScannerThread.doScan(Abstract .java:263),位於org.jboss.system.ServiceMBeanSupport上的org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289),位於org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)。 java.lang.reflect.Method.invoke(Method.java:處的sun.reflect.GeneratedMethodAccessor2.invoke處的jbossInternalLifecycle(ServiceMBeanSupport.java:245)invoke(未知源)insun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 498)在org.jboss.mx.interceptor.ReflectedDispatcher org.org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)處的org.jboss.mx.server.Invocation.invoke(Invocation.java:86)處的.invoke(ReflectedDispatcher.java:155)。 org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)處的jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController。 java:978)在com.sun.proxy。$ Proxy0.start(未知源)在org.jboss.system.ServiceController.start(ServiceController.java:417)在sun.reflect.GeneratedMethodAccessor10.invoke(太陽處) org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)上的java.lang.reflect.Method.invoke(Method.java:498)上的.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) org.jboss.mx.server.Invocation.invoke(Invocation.java:86)上的org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)(org.jboss.mx.server.AbstractMBeanInvoker.invoke(Invocation.java:86)抽象的MBeanI 位於org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)處的nvoker.java:264)(com.sun.proxy處的org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210) org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)處的$ Proxy4.start(未知源)org.jboss.deployment處的org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)處的。 org.jboss.deployment處的MainDeployer.deploy(MainDeployer.java:808).sun.reflect.NativeMethodAccessorImpl處的org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:755)處的MainDeployer.deploy(MainDeployer.java:771)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)處的.invoke0(本機方法)在java.lang.reflect.Method.invoke(Method.java)處的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)處的。 :498),位於org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155),位於org.jboss.mx.server.Invocation.dispatch(Invocation.java:94),位於org.jboss.mx.interceptor。摘要 org.org.jboss.mx.server.Invocation.invoke(Invocation.java:88)的actInterceptor.invoke(AbstractInterceptor.java:133)org.org的org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142) org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)上的.jboss.mx.server.Invocation.invoke(Invocation.java:88)org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)處的com.sun.proxy。$ Proxy5.deploy(Unknown Source)處的org.jboss.system.server.ServerImpl中的.java:659)。在org.jboss.Main $ 1處的org.jboss.Main.boot(Main.java:200)處的org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)處的doStart(ServerImpl.java:482)。在java.lang.Thread.run(Thread.java:745)上運行(Main.java:464)

終於得到了解決方案。 JBoss執行幾個mbean作為啟動配置(在jboss-service.xml中配置)。 有一個mbean'JDBCStateManager',它試圖在啟動時創建JMS表。 mbean有一個屬性“ CREATE_TABLES_ON_STARTUP”,我將其配置為FALSE,這意味着在每次JBoss啟動時都不會執行sql腳本。 這解決了我的問題,並且異常不再存在。 另外,在運行應用程序之前,請按照以下步驟在SQL Server上配置XA事務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM