ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

4.15.5 JMSのメッセージを送受信する準備

JMSクライアントアプリケーションが物理格納先にメッセージを送受信するための準備について説明します。

JMS接続ファクトリ

JMS接続ファクトリ(Connection Factory)とは、JMSクライアントアプリケーションとメッセージブローカとのコネクションを確立するために必要なオブジェクトです。JMS規約で規定された以下のインタフェースのいずれかを実装したオブジェクトを作成してJNDIに登録します。

登録したJMS接続ファクトリは、JNDIを経由してJMSクライアントアプリケーションで利用可能です。JMSクライアントアプリケーションは、獲得したJMS接続ファクトリに対して、JMS規約で規定されたAPIを発行し、メッセージブローカとのコネクションを確立します。

JMS接続ファクトリの登録/変更/削除は、asadminコマンドを使用して行います。asadminコマンドの詳細については、「10.1 asadmin」を参照してください。
また、JMS接続ファクトリの登録/変更時に必要となる定義項目の詳細については、「8.6.3 JMS接続ファクトリの定義項目」を参照してください。

なお、デフォルトのJMS接続ファクトリ「jms/__defaultConnectionFactory」が存在するため、JMS接続ファクトリを新規に登録せずに使用することも可能です。

アプリケーションで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に登録します。

登録した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運用している場合