2016-07-06 80 views
1

My scenary:JBoss AS 7.1.1サーバーでホストされているEJBからメソッドを呼び出すJava EEアプリケーション。 CRUDページの挿入操作や更新操作では、JSFアプリケーションは独自のDataSourceを使用して独自のデータを保存し、他のDataSourceを使用するEJBメソッドを呼び出すことによって他のアプリケーションに他のデータを保存する必要があります。 に設定された両方のデータソースは、JTA(JBossのDataSourceパラメータにマークされたJTAチェックボックス)を使用します。JBoss AS 7.1で分散トランザクションを正しく設定する方法は?

の更新操作の間だけ、データを保存しようとすると例外がスローされます。例外スタックの最後の部分は次のとおりです。

Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org[email protected]14729cfa[state=NORMAL managed conn[email protected]6a370d1a connection handles=0 lastUse=1467805740289 trackByTx=false [email protected]7a5d9cca pool internal [email protected][pool=CartaoDS] [email protected][connectionListener=14729cfa connectionManager=4b45c7aa warned=false currentXid=null] txSync=null] 
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:147) 
at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141) 
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:281) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) 
... 175 more 
Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org[email protected]14729cfa[state=NORMAL managed conn[email protected]6a370d1a connection handles=0 lastUse=1467805740289 trackByTx=false [email protected]7a5d9cca pool internal [email protected][pool=CartaoDS] [email protected][connectionListener=14729cfa connectionManager=4b45c7aa warned=false currentXid=null] txSync=null] 
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:604) 
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:467) 
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:139) 
... 178 more 
Caused by: javax.resource.ResourceException: IJ000461: Could not enlist in transaction on entering meta-aware object 
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:474) 
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:599) 
... 180 more 
Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0a0a0546:2fd05d09:577134fa:61c7a status: ActionStatus.ABORT_ONLY > 
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:552) 
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:282) 
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:467) 
... 181 more 

EJB DataSourceでJTAを無効にすると、問題は解決します。

私の環境に何が問題になっていますか?

ありがとうございます!

更新1

これ以上の情報を提供するように求められました。

これは、問題が発生することができユースケースである:画面上のリンクで

  1. ユーザーのクリックを編集ページで編集ページ
  2. に彼/彼女をリードして、ユーザーが値を変更し、保存するために(Webアプリケーションのための宣言DSの上で1つの行為:ボタン
  3. に保存ボタンを保存するには、更新メソッドはトランザクションを開始ページ
  4. を提供しており、他の二つの方法を実行している管理対象Beanにupdate()メソッドを呼び出すクリックローカルデータ)、その他はEJB アプリケーションの一部の機能を公開する方法は、

両方DSSが同じデータ・サーバパスであり、両方のアプリケーションが同じJBossインスタンスでホストされている(他のアプリケーションのコンテキストでデータを保存します)。

最初の方法は正常に動作し、2番目の方法でエラーが発生します。例外がスローされるので、トランザクション全体がロールバックされ、データベース内で実際に何も起こりません。

私の理解では、これはアプリケーションインテグレーションの簡単なケースです.1つのアプリケーションがJava EE標準テクノロジ(EJBコール)を使用して別のアプリケーションに統合されています。

私はこれが私のケースを得るのに役立つことを願っています。

+0

ここで、手順4でトランザクションを取得していますか? –

答えて

0

シーケンスがどのように表示されるかは正確にはわかりませんでした。 あなたのJSFアプリケーションは別のDSを使用するEJBを使用していると思いますか? それは同じアプリケーションとサーバーです。

複数のDSがある場合は、xa-datasourceを用意する必要がありますか? ご質問がある場合は、あなたのDS設定と、あなたの設定/アプリに関する詳細とあなたのログ内の警告(完全な呼び出しシーケンスです)を共有してください。

関連する問題