首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jdbc回滚JBoss事务

用jdbc回滚JBoss事务
EN

Stack Overflow用户
提问于 2012-07-25 14:17:05
回答 1查看 1.7K关注 0票数 0

我使用JBoss 4.0.4GA作为应用服务器,EJB2.x作为编码逻辑,MySQL5.1作为后端。我最近将jboss配置中的提交选项更改为"B",因为我们与EJB一起引入了一些JDBC查询。我的EJB代码反过来在MySql中调用一个存储过程,我使用CallableStatement来执行存储过程。我在MySQL中为表使用Innodb引擎,jboss数据源是使用的最简单的配置。但是,当我通过客户机执行EJB方法时,我会得到以下异常:

由: org.jboss.resource.connectionmanager.JBossLocalXAException:无法提交本地tx引起;-嵌套throwable:(org.jboss.resource.JBossResourceException: SQLException;- nested:(java.sql.SQLException:在连接关闭后不允许操作)。在org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource.commit(TxConnectionManager.java:912) at org.jboss.tm.TransactionImpl$Resource.commit(TransactionImpl.java:2253) at org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1784) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:340) 29 由: org.jboss.resource.JBossResourceException: SQLException引起;-嵌套throwable:(java.sql.SQLException:在连接关闭后不允许进行操作。)在org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkException(BaseWrapperManagedConnection.java:636) at org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.commit(LocalManagedConnection.java:73) at org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource.commit(TxConnectionManager.java:905) . 32多个原因是: java.sql.SQLException:连接关闭后不允许操作。在com.mysql.jdbc.Connection.checkClosed(Connection.java:1842) at com.mysql.jdbc.Connection.commit(Connection.java:2154) at org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.commit(LocalManagedConnection.java:69) . 33

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-26 09:33:31

我解决了问题,这是存储过程权限的问题。数据源配置为没有存储过程权限的用户。在使用正确的权限进行测试之后,代码工作正常,事务处理也很好。我尝试使用正常的JDBC连接来执行存储过程,而不是使用数据源。这个步骤给了我空指针异常,通过它我了解了访问权限。

在异常“null”的长期堆栈中有一条线索,我没有在上一篇文章中提交它,但对于我来说,上面提到的数据源连接也是如此。感谢任何想帮忙的人。我希望这可能是其他任何人在未来,是奇怪的错误对我。

代码语言:javascript
复制
org.jboss.tm.JBossTransactionRolledbackException: ***null***; nested exception is: 
org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=serverip/13308, BranchQual=, localId=13308] status=STATUS_NO_TRANSACTION; - nested throwable: (org.jboss.resource.connectionmanager.JBossLocalXAException: could not commit local tx; - nested throwable: (org.jboss.resource.JBossResourceException: SQLException; - nested throwable: (java.sql.SQLException: No operations allowed after connection closed.))); - nested throwable: (org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=serverip/13308, BranchQual=, localId=13308] status=STATUS_NO_TRANSACTION; - nested throwable: (org.jboss.resource.connectionmanager.JBossLocalXAException: could not commit local tx; - nested throwable: (org.jboss.resource.JBossResourceException: SQLException; - nested throwable: (java.sql.SQLException: No operations allowed after connection closed.)))) 
at org.jboss.ejb.plugins.TxInterceptorCMT.throwJBossException(TxInterceptorCMT.java:569) 
at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:506) 
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:361) 
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181) 
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168) 
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205) 
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136) 
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648) 
at org.jboss.ejb.Container.invoke(Container.java:954) 
at sun.reflect.GeneratedMethodAccessor109.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) 
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) 
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) 
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) 
at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819) 
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
at sun.rmi.transport.Transport$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11651839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档