JMS

リモート(別プロセス)のJBossサーバー上のキューにXAトランザクション内で正しくメッセージを送受信するには(続編)

以前にJBoss Messagingでリモートのキューに対してXAトランザクション内でメッセージを送受信するにはResourceAdapterの登録が必要であるということを紹介いたしました。 リモート(別プロセス)のJBossサーバー上のキューにXAトランザクション内で正しくメ…

EJBコンテナー、Webコンテナー内で管理されたJMS接続から同時に複数のSessionを生成できない

以下の条件を満たすとJBoss Messaging + Spring MDPの環境で以下の例外となります。 java:/JmsXAからXA対応(JCAのリソースアダプター経由)の接続ファクトリを使用 concurrency属性を2以上に設定 cache属性をsession以上に設定 javax.jms.JMSException: Cou…

JBoss Messagingでメッセージの永続化ストアを使わなくする方法

JBoss MessagingではデフォルトでHSQLを使ったJMSメッセージの永続化が設定されています。メッセージの永続化は、メッセージの配信を保障するために重要な機構ですが、開発や単体試験実行時に、サーバーを再起動してもキュー内のメッセージが消えないと非常…

JBoss MessagingにおけるConnectionFactoryのルックアップ先

JBoss Messagingのデフォルトの構成だと、JNDIツリーの以下の場所からJMSの接続ファクトリーがルックアップできます。 java:/JmsXA /XAConnectionFactory /ConnectionFactory java:/XAConnectionFactory java:/ConnectionFactory どの接続ファクトリーを使う…

Spring JMSでトランザクションを設定する3種類の方法について

Spring Frameworkでトランザクション対応のJMSメッセージ送受信を行う方法について簡単にまとめます。 前提知識 JMSのメッセージ送受信については トランザクションなし Sessionにローカルなトランザクション JTAのグローバルトランザクションに参加(XA対応…

リモート(別プロセス)のJBossサーバー上のキューにXAトランザクション内で正しくメッセージを送受信するには

Weblogicなど普通のサーバーだとJTAのトランザクション境界の内部で別サーバーインスタンスに対するJNDIツリーから直接XA対応の接続ファクトリーをルックアップすれば、自動的にXAのトランザクションに参加してくれます(と思います)。 JBoss MQやJBoss Mes…

JMSのConnection, Session, Consumerをキャッシュすべきかどうか

アプリケーションサーバー内からデータベースにアクセスする際にはJDBCの接続オブジェクトがプールされているということはJava EEでは常識です。したがって、アプリケーションロジックでConnectionオブジェクトを保持せず、接続を利用するたびに新規に接続を…