4. JMSアプリケーションの開発

4.1. チュートリアル

ここでは、サンプルアプリケーションを例にして、JMSクライアントアプリケーションの作成からコンパイル、実行までの手順を説明します。 この項で説明する手順は次のとおりです。

4.1.1. サンプルアプリケーション

4.1.1.1. インストール

JMSのサンプルアプリケーションは、WebOTXマニュアルのインストールに伴って、次の場所に配置されますので、zipファイルを展開してください。以降、WebOTXマニュアルインストールディレクトリを<WebOTX_Manual>と記述します。

<WebOTX_Manual>\samples\JavaEE\jms.zip    ※Windowsの場合

表7.1.1.1-1
サンプルの機能 場所
QUEUEを使用するポイントツーポイントモデルのサンプルプログラム <WebOTX_Manual>\samples\JavaEE\jms\queue
TOPICを使用するパブリッシュ/サブスクライバモデルのサンプルプログラム <WebOTX_Manual>\samples\JavaEE\jms\topic
メッセージセレクタを使用したパブリッシュ/サブスクライバモデルのサンプルプログラム <WebOTX_Manual>\samples\JavaEE\jms\selector
JMSローカルトランザクションを使用したポイントツーポイントモデルのサンプルプログラム <WebOTX_Manual>\samples\JavaEE\jms\transacted /td>

Memoアプリケーションのプログラミングについては、[ プログラミング・開発ガイド ] をご覧ください。

4.1.1.2. ファイル構成

各サンプルアプリケーションのディレクトリ構成を次に示します。

4.1.2. 環境設定

4.1.2.1. 環境変数

JMSクライアントアプリケーションを動作させるための環境設定について説明します。

Memo

4.1.3. JMSサーバの起動と動作確認

4.1.3.1. JMSサーバの起動

JMSサーバを利用するためにテスト用サーバを起動してください。

 %WebOTX_HOME%\bin\otxadmin start-domain domain1

Memoテスト用サーバについては、 [ アプリケーション開発 > 開発環境の構築(WebOTX Developer) > 環境設定 > テスト用サーバの設定 ] をご覧ください。

4.1.3.2. JMSサーバの動作確認

テスト用サーバの起動完了後、 otxadmin jms-pingコマンドを使って、JMSサーバが利用可能な状態になったことを確認してください。

otxadmin> jms-ping
JMS Ping Status = RUNNING
Command jms-ping executed successfully.

4.1.4. クライアントアプリケーションのコンパイルと実行

ここでは、「QUEUEを使用するポイントツーポイントモデルのサンプルプログラム」のコンパイルと実行手順について説明します。 キューのサンプルアプリケーションには同期受信型と非同期受信型の2種類の受信側クライアントアプリケーションが含まれていますが、ここでは、同期受信型を使用します。アプリケーションの構成は以下のとおりです。

クライアントアプリケーションのコンパイルと実行

4.1.4.1. コンパイル

サンプルアプリケーションが存在するディレクトリ直下において、src配下のjavaソースファイルをコンパイルして、新たに作成したclassesディレクトリ配下にclassファイルを格納することにします。 対象のサンプルアプリケーションが存在するディレクトリに移動して、classesディレクトリを作成してください。

cd <WebOTX_Manual>\samples\JavaEE\jms\queue
mkdir classes

javacコマンドを実行しsrc配下のソースをコンパイルします。

%JAVA_HOME%\bin\javac -d classes src\*.java

classes配下にコンパイルされたclassファイルが生成されます。

Memo
4.1.4.2. 物理的な送信先の作成

サンプルアプリケーションで使用する物理的送信先を、 otxadmin create-jmsdestコマンドで作成します。--cascadeオプションを付加することにより、サンプルアプリケーションからJNDIを通してキューをルックアップするために必要な送信先リソースを同時に作成します。
この例の場合、作成される送信先リソースのJNDI名は、jms/MyQueueとなります。

otxadmin> create-jmsdest --desttype queue --cascade MyQueue
Memo作成した物理的な送信先を削除する場合は、 otxadmin delete-jmsdestコマンドを利用します。--cascadeオプションを付加することで、送信先リソースを同時に削除できます。
4.1.4.3. コネクションファクトリリソースの作成

JMSサーバへの接続に必要なコネクションファクトリリソースを otxadmin create-jms-resourceコマンドで作成します。コネクションファクトリリソースも、サンプルアプリケーションからJNDIを通してルックアップします。

otxadmin>  create-jms-resource --restype javax.jms.QueueConnectionFactory jms/MyQCF
Memo作成したコネクションファクトリリソースを削除する場合は、 otxadmin delete-jms-resourceコマンドを利用します。

以上でサンプルアプリケーションに必要なJMSリソースの準備は完了です。

4.1.4.4. 実行
受信側クライアントアプリケーションの起動

Memoコンパイルして生成されたclassファイルを参照するために、CLASSPATH環境変数にclassesディレクトリを追加してください。

同期受信型の受信側クライアントアプリケーションQueueSynchReceiverを起動します。引数には、作成した管理オブジェクト「jms/MyQueue」と「jms/MyQCF」を指定します。

%JAVA_HOME%\bin\java QueueSynchReceiver jms/MyQueue jms/MyQCF

画面には初期処理の実行結果が出力され、メッセージ受信待ち状態となります。

looking up jms/MyQCF ...done!!
creating QueueConnection ...done!!
creating QueueSession ...done!!
looking up jms/MyQueue ...done!!
creating Receiver ...done!!
Receiver ready!!
送信側クライアントアプリケーションの起動

次に送信側のクライアントアプリケーションQueueSenderExampleを起動します。引数には、作成した管理オブジェクト「jms/MyQueue」と「jms/MyQCF」を指定します。

%JAVA_HOME%\bin\java QueueSenderExample jms/MyQueue jms/MyQCF

画面には初期処理の実行結果が出力され、メッセージ送信が行われます。

looking up jms/MyQCF ...done!!
creating QueueConnection ...done!!
creating QueueSession ...done!!
looking up jms/MyQueue ...done!!
creating Sender ...done!!
Sending message : Sample message #1
Sending message : Sample message #2
Sending message : Sample message #3
Sending message : Sample message #4
Sending message : Sample message #5
Sending message : Sample message #6
Sending message : Sample message #7
Sending message : Sample message #8
Sending message : Sample message #9
Sending message : Sample message #10

最初に起動した受信側クライアントアプリケーションの画面には、送信されたメッセージを受信した結果が出力されます。

Received message : Sample message #1
Received message : Sample message #2
Received message : Sample message #3
Received message : Sample message #4
Received message : Sample message #5
Received message : Sample message #6
Received message : Sample message #7
Received message : Sample message #8
Received message : Sample message #9
Received message : Sample message #10

以上でサンプルアプリケーションの実行は終わりです。 他のサンプルアプリケーションについても、同様の手順で実行することができます。