JBoss MessagingにおけるConnectionFactoryのルックアップ先
JBoss Messagingのデフォルトの構成だと、JNDIツリーの以下の場所からJMSの接続ファクトリーがルックアップできます。
- java:/JmsXA
- /XAConnectionFactory
- /ConnectionFactory
- java:/XAConnectionFactory
- java:/ConnectionFactory
どの接続ファクトリーを使うべきなのかについて、現時点での私の理解を以下にメモしておきます。
まず、java:/JmsXAは
サーバーフォルダー\deploy\messaging\jms-ds.xml
にて、JMXのXAに対するリソースアダプターとして定義されています。したがって、java:/JmsXAからルックアップしたJMS接続はXAのトランザクションに参加できます。
その他のJNDI参照名は結局同じ接続ファクトリーを参照するエリアス名であり、直接ルックアップした場合はJBossのJCAコンテナーによって管理されません。したがって、どれでも同じだと思われるのですが、ローカルトランザクションしか利用しない場合は、java:/ConnectionFactoryからルックアップしておけばよいと思います。なお、java:/XAConnectionFactoryは名前から一見XAに参加してくれるものと非常に勘違いしやすいのですが、これはリソースアダプター経由でXAリソースのプール構築用に内部的に使われる名前であり、直接ルックアップして使用しても意図したとおりXAトランザクションに参加できませんから注意が必要です。さらに、java:/JmsXA以外はリソースのプールがされませんから、アプリケーションかDIコンテナーのいずれかでリソースをキャッシュする必要があります。(JMSのConnection, Session, Consumerをキャッシュすべきかどうか - 達人プログラマーを目指して)
JMS transactions with JTA in JBoss 4
jboss 5.1.0 GA JmsXA vs XAConnectionFactory |JBoss Developer
http://www.questionhub.com/StackOverflow/3657018