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参照名は結局同じ接続ファクトリーを参照するエリアス名であり、直接ルックアップした場合はJBossJCAコンテナーによって管理されません。したがって、どれでも同じだと思われるのですが、ローカルトランザクションしか利用しない場合は、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