JMSクライアントアプリケーションが物理格納先にメッセージを送受信するための準備について説明します。
JMSリソース(JMS接続ファクトリおよびJMS送信先リソース)および物理格納先を作成します。
JMS接続ファクトリおよびJMS送信先リソースは、asadminコマンドのcreate-jms-resourceサブコマンドで作成します。
物理格納先の作成については、「2.19.3 物理格納先の管理」を参照してください。
JMSホストを設定します。詳細については、「JMSホストの設定」を参照してください。
JMS接続ファクトリ
JMS接続ファクトリ(Connection Factory)とは、JMSクライアントアプリケーションとメッセージブローカとのコネクションを確立するために必要なオブジェクトです。JMS規約で規定された以下のインタフェースのいずれかを実装したオブジェクトを作成してJNDIに登録します。
javax.jms.ConnectionFactory
javax.jms.QueueConnectionFactory
javax.jms.TopicConnectionFactory
登録したJMS接続ファクトリは、JNDIを経由してJMSクライアントアプリケーションで利用可能です。JMSクライアントアプリケーションは、獲得したJMS接続ファクトリに対して、JMS規約で規定されたAPIを発行し、メッセージブローカとのコネクションを確立します。
JMS接続ファクトリの登録/変更/削除は、asadminコマンドを使用して行います。asadminコマンドの詳細については、「10.1 asadmin」を参照してください。
また、JMS接続ファクトリの登録/変更時に必要となる定義項目の詳細については、「8.6.3 JMS接続ファクトリの定義項目」を参照してください。
なお、デフォルトのJMS接続ファクトリ「jms/__defaultConnectionFactory」が存在するため、JMS接続ファクトリを新規に登録せずに使用することも可能です。
JNDI名: jms/__defaultConnectionFactory
論理JNDI名: java:comp/DefaultJMSConnectionFactory
リソースタイプ: javax.jms.ConnectionFactory
アプリケーションでJMS接続ファクトリを利用する際、@ResourceアノテーションまたはDeployment Descriptorでnameやres-ref-nameのみ指定し、mapped-nameやjndi-nameの指定をしていない場合に、デフォルトのJMS接続ファクトリが使用されます。
そのため、複数のJMS接続ファクトリを利用する場合や、実際のJNDI名を意識する必要がある場合は、@ResourceアノテーションまたはDeployment Descriptorのmapped-nameやjndi-nameを指定するようにしてください。
例
@Resourceアノテーションでname属性のみ指定する場合、デフォルトのJMS接続ファクトリ「jms/__defaultConnectionFactory」が使用されます。
@Resource(name="jms/cf") javax.jms.ConnectionFactory cf;
上記状態でglassfish-web.xmlでres-ref-nameタグとjndi-nameタグを以下のように指定すると、jndi-nameに指定されたJMS接続ファクトリ「cf1」が使用されます。
<resource-ref> <res-ref-name>jms/cf</res-ref-name> <jndi-name>cf1</jndi-name> </resource-ref>
また、@Resourceアノテーションでname属性とmapped-name属性を指定する場合、mapped-nameに指定されたJMS接続ファクトリ「cf1」が使用されます。
@Resource(name="jms/cf", mapped-name="cf1") javax.jms.ConnectionFactory cf;
注意
Java EE 6以前の環境では、mapped-nameやjndi-nameが指定されていない場合、nameやres-ref-nameに指定した値をJMS接続ファクトリのJNDI名として使用していました。そのため、Java EE 6以前の環境からアプリケーションを移行する場合は、@ResourceアノテーションまたはDeployment Descriptorを見直して、意図したJMS接続ファクトリが利用されるか確認してください。また、必要に応じて上記例のようにmapped-nameやjndi-nameを指定するようにしてください。
同一のJMS接続ファクトリを使用してメッセージブローカに接続する場合、接続は同一トランザクション範囲内で共有されません。deployment descriptorのres-sharing-scope要素に「Shareable」を指定した場合、「Unshareable」として定義されます。
IJServerクラスタ上で、Publish/Subscribeメッセージングモデルのうち非共有永続サブスクリプションを使用したJMSクライアントアプリケーションの運用を行う場合は、JMS接続ファクトリの追加プロパティとして、必ずClientIdを設定してください。
JMS送信先リソース
JMS送信先リソース(Destination)とは、JMSクライアントアプリケーションと物理格納先との接続方法を指定します。JMS規約で規定された以下のインタフェースのいずれかを実装したオブジェクトを作成してJNDIに登録します。
javax.jms.Topic
javax.jms.Queue
登録したJMS送信先リソースは、JNDIを経由してアプリケーションで利用可能となります。JMSクライアントアプリケーションは、獲得した送信先リソースに対して、JMS規約で規定されたAPIを発行し、メッセージブローカとのコネクションを確立します。
JMS送信先リソースの登録/変更/削除は、asadminコマンドを使用して行います。asadminコマンドの詳細については、「10.1 asadmin」を参照してください。
また、JMS送信先リソースの登録/変更時に必要となる定義項目の詳細については、「8.6.4 JMS送信先リソースの定義項目」を参照してください。
JMSホストの設定
JMSホストには、メッセージブローカが動作しているシステムを指定します。
JMSホストの設定は、asadminコマンドを使用して行います。asadminコマンドの詳細については、「10.1.4 定義項目参照/更新」を参照してください。
また、設定時に必要となる定義項目の詳細については、「8.8.10 JMSサービスの定義項目」を参照してください。
JMSリソースとJMSホストの関係
JMSクライアントアプリケーションがアクセスするInterstage Java EE 7 DASサービス/IJServerクラスタのJMSホストの設定によって、メッセージを送受信するメッセージブローカが決まります。
JMSクライアントアプリケーションは、JMS接続ファクトリおよびJMS送信先リソースの参照時に、JMSホストを取得してメッセージブローカに接続します。
注意
JMSホストには、JMSクライアントアプリケーションが動作する環境において、名前解決のできるホスト名またはIPアドレスを設定してください。
JMSホストに、ローカルホストを示す「localhost」や「127.0.0.1」を設定した場合は、JMSクライアントアプリケーションが動作する環境のメッセージブローカに接続します。
例
JMSクライアントアプリケーションの使用例を運用形態ごとに示します。
■メッセージブローカをREMOTE運用している場合
■メッセージブローカをEMBEDDED運用している場合