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

7.1. チュートリアル

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

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

7.1.1.1. インストール

WebOTX 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
C言語APIを使用したポイントツーポイントモデルのサンプルプログラム <WebOTX_Manual>\samples\JavaEE\jms\C

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

7.1.1.2. ファイル構成

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

7.1.2. 環境設定

7.1.2.1. 環境変数

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

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

7.1.3.1. JMSサーバの起動

JMSサーバを利用するためにテスト用サーバを起動してください。
 %WebOTX_HOME%bin\otxadmin start-domain domain1

Memo テスト用サーバについては、 [ アプリケーション開発ガイド(概要) > 1. Developer(with Developer's Studio) > 1.2. 環境設定 > 1.2.4. テスト用サーバの設定 ] をご覧ください。

7.1.3.2. JMSサーバの動作確認

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

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

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


図7.1.4-1

7.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

7.1.4.2. 物理的な送信先の作成

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

7.1.4.3. コネクションファクトリリソースの作成

JMSサーバへの接続に必要なコネクションファクトリリソースをotxadmin create-jms-resourceコマンドで作成します。コネクションファクトリリソースも、サンプルアプリケーションからJNDIを通してルックアップします。
otxadmin>  create-jms-resource --restype javax.jms.QueueConnectionFactory jms/MyQCF
Standard/Enterpriseの場合、作成したコネクションファクトリリソースをJavaアプリケーションでルックアップするための設定も行ってください。
otxadmin> set server.resources.connector-resource.jms/MyQCF.use-jmx-agent=true
Memo 作成したコネクションファクトリリソースを削除する場合は、otxadmin delete-jms-resourceコマンドを利用します。

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

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