0

アプリケーションサーバーとしてJBoss4.0.4GAを使用し、コーディングロジックにEJB 2.xを使用し、バックエンドとしてMysql5.1を使用しています。最近、EJBと一緒にいくつかのJDBCクエリを導入したため、jboss設定のcommit-optionを「B」に変更しました。次に、EJBコードがMySqlのストアドプロシージャを呼び出し、CallableStatementを使用してストアドプロシージャを実行します。私はMySQLのInnodbエンジンをテーブルに使用していますが、jbossデータソースはを使用する最も単純な設定です。しかし、クライアントを介してEJBメソッドを実行すると、次の例外が発生します。

原因:org.jboss.resource.connectionmanager.JBossLocalXAException:ローカルtxをコミットできませんでした。-ネストされたthrowable:(org.jboss.resource.JBossResourceException:SQLException;-ネストされたthrowable:(java.sql.SQLException:接続が閉じられた後の操作は許可されません。))at 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; -ネストされたスローアブル:(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)、com.mysql.jdbc.Connection.commit(Connection.java:2154)、org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.commit (LocalManagedConnection.java:69)...33詳細

4

1 に答える 1

0

私は問題を解決しました、それはストアドプロシージャのアクセス許可の問題でした。データソースは、ストアドプロシージャに対する権限を持たないユーザーで構成されました。正しい権限でテストした後、コードは機能し、トランザクションは正常です。[データソースを使用せずに]通常のJDBC接続でストアドプロシージャを実行してみました。このステップにより、アクセス権について知るようになったnullポインター例外が発生しました。

前回の投稿で送信しなかった例外「Thenull」の長いスタックトレースに1つの手がかりがありましたが、データソース接続で上記と同じことを提案しました。助けてくれた人に感謝します。これが将来誰か他の人に起こるかもしれないことを願っています、私にとって奇妙なエラーでした。

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) 
于 2012-07-26T09:33:31.077 に答える