![]() |
Sun ONE Message Queue 開発者ガイド |
第 2 章 クイックスタートチュートリアル
この章では、MQ 環境における JMS クライアントプログラミングの概要を簡単に紹介します。具体的には、HelloWorldMessage という簡単なサンプルアプリケーションの作成からコンパイル、実行までの手順をチュートリアル方式で説明します。このチュートリアルの目的は、デフォルト設定の MQ メッセージサーバを実行することです。MQ メッセージサーバの設定手順については、第 5 章「SOAP メッセージの操作」を参照してください。
環境設定
JMS クライアントのコンパイルおよび実行時には、多くの環境変数を使用します。この節では、これらの環境変数の設定方法を説明します。
必要に応じて、IMQ_HOME 環境変数を設定します (Windows プラットフォームのみ)。
JAVA_HOME 環境変数を設定します。
- IMQ_HOME 環境変数は、JMS クライアントのコンパイルおよび実行時に使用します。Windows プラットフォームでは、MQ インストーラが IMQ_HOME を設定します。
- インストール時に設定されるディレクトリおよび環境変数は次のとおりです。
サンプルアプリケーションが格納されているディレクトリに移動します。
- JAVA_HOME 環境変数の値として、J2SE SDK (Java 2 Standard Edition ソフトウェア開発キット) のインストール先ディレクトリを指定します。
プラットフォーム
設定
/usr/demo/imq/jms
IMQ_HOME/demo/jms
IMQ_HOME/demo/jms
IMQ_HOME/demo/jms
CLASSPATH 環境変数を設定します。
- この章で使用するサンプルアプリケーションは、このディレクトリ内にあります。
- CLASSPATH を設定して、現在のディレクトリおよび IMQ_HOME/lib ディレクトリ (Solaris の場合は /usr/share/lib/imq) 内の jar ファイル (jms.jar、imq.jar jndi.jar) を取り込みます。これらはクライアントのコンパイルおよび実行時に必要になります。
注 JDK 1.4 には、JNDI の jar ファイルと JSSE の jar ファイル (安全なコネクションに必要) が付属しています。これらの jar ファイルを CLASSPATH で取り込む必要があるのは、JDK 1.3 または 1.2 を使ってアプリケーションを開発する場合のみです。
MQ メッセージサーバの起動およびテスト
このチュートリアルでは、現時点でまだ MQ メッセージサーバを実行していないものとして説明を進めます。メッセージサーバは、メッセージの転送と配信を行う 1 つまたは複数のソフトウェアコンポーネント、すなわちブローカによって構成されます。UNIX の起動プロセスまたは Windows サービスとしてすでにブローカを実行している場合、次の手順「ブローカをテストするには」は省略できます。
端末ウィンドウを使って、IMQ_HOME/bin ディレクトリ (Solaris の場合は /usr/bin) に移動します。
ブローカが起動し、いくつかのメッセージに続いて「imqbroker@host:7676 ready.」というメッセージが表示されます。このメッセージは、ブローカをクライアントで使用する準備ができたことを表します。次のようにして、ブローカコマンド (imqbrokerd) を実行します。
ブローカをテストするには
ブローカが起動したかどうかを簡単にチェックしたい場合は、MQ コマンドユーティリティ (imqcmd) を使ってブローカ情報を表示します。
別の端末ウィンドウを開いて、IMQ_HOME/bin ディレクトリ (Solaris の場合は /usr/bin) に移動します。
次のような出力が得られます。
簡単なクライアントアプリケーションの開発
この節では、キューの送信先にメッセージを送信したあと、このメッセージをキューから取得する、「Hello World」という簡単なアプリケーションの作成手順を紹介します。このアプリケーションは、IMQ_HOME/demo/jms (Solaris の場合 /usr/demo/imq/jms) にあります。次の手順では、クライアントでメッセージの送受信を行うための Java プログラミング言語コードに注目します。
サンプルアプリケーション HelloWorldMessage を作成するには
JMS API のインタフェースおよび MQ 実装クラスをインポートします。
MQ QueueConnectionFactory 管理対象オブジェクトをインスタンス化します。
- javax.jms パッケージには、JMS クライアントの開発に必要な JMS インタフェースがすべて定義されています。
- import javax.jms.*;
MQ メッセージサーバへのコネクションを作成します。
- QueueConnectionFactory オブジェクトにより、MQ メッセージサーバへの QueueConnection コネクションを作成するために使用する MQ 固有の設定プロパティすべてがカプセル化されます。
- QueueConnectionFactory myQConnFactory =
new com.sun.messaging.QueueConnectionFactory();
- ConnectionFactory 管理対象オブジェクトへのアクセスには、JNDI 検索も利用できます (「ConnectionFactory オブジェクトの検索」を参照)。この方法により、クライアントコードが JMS プロバイダに依存しなくなります。また、メッセージングシステムを集中管理できるようになります。
コネクション内にセッションを作成します。
- QueueConnection は、ポイントツーポイントプログラミングドメイン内の MQ メッセージサーバへのアクティブなコネクションです。
- QueueConnection myQConn =
myQConnFactory.createQueueConnection();
MQ メッセージサーバ内のキュー送信先に対応する MQ queue 管理対象オブジェクトをインスタンス化します。
- QueueSession オブジェクトは、メッセージのプロデュースおよびコンシュームに使用されるシングルスレッドコンテキストです。クライアントは、このオブジェクトを利用して、キュー送信先のメッセージのプロデューサとコンシューマを作成します。
- QueueSession myQSess = myQConn.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
- ここで作成された myQSess オブジェクトは未処理です。このオブジェクトは、メッセージがコンシューマによってコンシュームされた時点で、これを自動的に通知します。
QueueSender メッセージプロデューサを作成します。
- 送信先管理対象オブジェクトは、プロバイダ固有の送信先の命名構文および動作をカプセル化します。次のコードは、「world」という物理的なキュー送信先の queue 管理対象オブジェクトをインスタンス化します。
- Queue myQueue = new.com.sun.messaging.Queue("world");
- 送信先管理対象オブジェクトへのアクセスには、JNDI 検索も利用できます (「Destination オブジェクトの検索」を参照)。この方法により、クライアントコードが JMS プロバイダに依存しなくなります。また、メッセージングシステムを集中管理できるようになります。
メッセージを作成し、キューに送信します。
- このメッセージプロデューサは myQueue に関連付けられており、キュー送信先「world」にメッセージを送信する際使用されます。
- QueueSender myQueueSender = myQSess.createSender(myQueue);
QueueReceiver メッセージコンシューマを作成します。
- QueueSession オブジェクトを使って TextMessage オブジェクトを作成し、このオブジェクトにメッセージのデータを表す文字列を追加します。さらに、QueueSender オブジェクトを使って、キュー送信先「world」にメッセージを送信します。
- TextMessage myTextMsg = myQSess.createTextMessage();
myTextMsg.setText("Hello World");
System.out.println("Sending Message:" + myTextMsg.getText());
myQueueSender.send(myTextMsg);
手順 3 で作成した QueueConnection を起動します。
- このメッセージコンシューマは myQueue に関連付けられており、キュー送信先「world」からメッセージを受信する際使用されます。
- QueueReceiver myQueueReceiver =
myQSess.createReceiver(myQueue);
キューからメッセージを受信します。
- クライアントによってコンシュームされるメッセージは、すでに起動しているコネクションでしか配信できません。これに対して、クライアントによってプロデュースされたメッセージは、コネクションを起動しなくても送信先に配信できます (手順 7 を参照)。
- myQConn.start();
メッセージのコンテンツを取得します。
- QueueReceiver オブジェクトを使って、キュー送信先「world」からメッセージを受信します。次のコードは、メッセージの同期コンシュームの例です (「メッセージのコンシューム : 同期と非同期」を参照)。非同期コンシュームの例については、表 2-1 を参照してください。
- Message msg = myQueueReceiver.receive();
セッションとコネクションリソースを終了します。
- メッセージが正常に受信された場合は、そのコンテンツを取得できます。
- if (msg instanceof TextMessage) {
TextMessage txtMsg = (TextMessage) msg;
System.out.println("Read Message:" + txtMsg.getText());
}
- myQSess.close();
myQConn.close();
クライアントアプリケーションのコンパイルおよび実行
MQ 環境で JMS クライアントをコンパイルして実行するには、Java2 SDK Standard Edition v1.4 の使用をお勧めします (ただし、バージョン 1.3 および 1.2 もサポートしています)。推奨 SDK は次の Web サイトからダウンロードできます。
手順 4 で説明したように、CLASSPATH 環境変数が jms.jar ファイルと imq.jar ファイルをポイントするように設定してから、クライアントアプリケーションのコンパイルまたは実行を開始してください。
- http://java.sun.com/j2se/1.4
次の手順では、「簡単なクライアントアプリケーションの開発」で作成した HelloWorldMessage アプリケーションを使用します。このアプリケーションは、MQ 3.0 のサンプルアプリケーションディレクトリに格納されています。
- IMQ_HOME/demo/jms (Solaris では /usr/demo/imq/jms)
HelloWorldMessage アプリケーションをコンパイルして実行するには
アプリケーションを含むディレクトリを現在のディレクトリにします。
次のようにして、HelloWorldMessage アプリケーションをコンパイルします。
- Solaris の MQ 3.0 サンプルアプリケーションディレクトリは、ユーザが書き込みできないため、HelloWrodMessage アプリケーションを書き込み可能なディレクトリにコピーして、そのディレクトリを現在のディレクトリにします。
次のようにして、HelloWorldMessage アプリケーションを実行します。
- これで、現在のディレクトリ内に HelloWorldMessage.class ファイルが作成されます。
- HelloWorldMessage アプリケーションを実行したときに表示される出力内容は、examples/jms ディレクトリに格納されています。
プラットフォーム
設定と詳細
% $JAVA_HOME¥bin¥java HelloWorldMessage
C:¥Program Files¥Sun Microsystems¥Message Queue 3.0¥
demo¥jms>%JAVA_HOME%¥bin¥java HelloWorldMessage
% $JAVA_HOME¥bin¥java HelloWorldMessage
- HelloWorldMessage を実行したときに表示される出力内容は次のとおりです。
- Sending Message:Hello World
- Read Message:Hello World
サンプルアプリケーションコード
MQ 3.0 には、サンプルアプリケーションとして、JMS メッセージングアプリケーションと JAXM メッセージングのサンプルが付属しています。詳細については、「SOAP メッセージの操作」を参照してください。
JMS のサンプル
HelloWorldMessage のサンプルのコードは、その他のサンプルアプリケーションのコードとともに、次の場所に格納されています。
このディレクトリには、各サンプルアプリケーションの概要と実行方法を示した README ファイルも格納されています。サンプルには、JMS サンプルプログラムと MQ のサンプルアプリケーションがあります。これらのサンプルについては、次の 2 つの表を参照してください。
- IMQ_HOME/demo/jms (Solaris では /usr/demo/imq/jms)
表 2-1 は JMS サンプルプログラムの概要です。
表 2-1    JMS サンプルプログラム
サンプルアプリケーション名
説明
サブスクライバが非アクティブな状態で、トピックに対してパブリッシュされたメッセージを確保するような持続的サブスクライバの作成方法を示す
表 2-2 は MQ のサンプルアプリケーションの概要です。
JAXM のサンプル
SOAP メッセージの送受信の方法を示すサンプルも多数用意されています。これらのサンプルの格納場所は次のとおりです。
このディレクトリには、各サンプルアプリケーションの概要と実行方法を示した README ファイルも格納されています。これらのサンプルアプリケーションについては、表 2-3 を参照してください。
- IMQ_HOME/demo/jaxm (Solaris では /usr/demo/imq/jaxm)
前へ 目次 索引 次へ
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
最終更新日 2002 年 6 月 19 日