私はグラスフィッシュ サーバーを使用しており、そのグラスフィッシュ サーバーの JMS 機能を使用しています。
次のエラー メッセージが表示され続けます。
MQJMSRA_DS4001: commit(): 非トランザクション セッションに対しては不正です:sessionId
このエラー メッセージが表示される理由は何ですか?
TransactionAwareConnectionFactoryProxyを使用できます 。
未加工のベンダー提供の ConnectionFactory を使用する代わりに、構成は、トランザクションの同期を処理するデコレーターで ConnectionFactory をラップします。これは、次のように jms-context.xml で発生します:-
<bean id="connectionFactory" class="org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy">
<property name="targetConnectionFactory" ref="myCamelConnectionFactory"/>
</bean>
<jee:jndi-lookup id="myconnectionFactory" jndi-name="SoDConflictConnFactory"/>
これにより、警告メッセージが削除されます:- MQJMSRA_DS4001
このエラーが発生する理由は、セッションが処理されていないためです。これは、コミット/ロールバック メソッドが無意味であることを意味します。セッションを作成するときにトランザクションを設定してみてください (例: connection.createSession( true , Session.AUTO_ACKNOWLEDGE))。セッションを処理したくない場合は、コードからコミット/ロールバックを削除するか、実行前にグローバル変数をチェックする必要があります。