検索
連載

非同期処理と疎結合ができる「メッセージング」の常識企業システムの常識をJBossで身につける(5)(4/4 ページ)

企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

受信側アプリケーション(SampleReceiver.java)

 受信側のアプリケーションであるSampleReceiver.javaは、testQueueトピックへテキストメッセージを受信するプログラムです。

 まず、JNDIを用いて接続先を取得します(図5の【1】)。

// JNDIイニシャルコンテキストを取得します。
context = new InitialContext();
// 接続ファクトリを取得します。
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");

 次に、取得した接続先に対して接続を行います(図5の【2】)。

// 接続を作成します。
conn = connectionFactory.createConnection();
// 宛先をルックアップします。
Queue queue = (Queue) context.lookup("/queue/testQueue");
// セッションを作成します。
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);

 接続を行ったら、メッセージを受信します。メッセージが受信できるまでは終了せずに、待ち受け状態になります(図5の【6】)。

// メッセージを受信します。
MessageConsumer msgConsumer = session.createConsumer(queue);
conn.start();
TextMessage msg = (TextMessage) msgConsumer.receive();

 メッセージを受信すると、受信したメッセージをコンソールに出力するので、受信したメッセージを確認できます。

if (msg == null) {
    System.out.println("受信NG");
} else {
    System.out.println("受信OK: [" + msg.getText() + "]");
}

送信側アプリケーション(SampleSender.java)

 送信側のアプリケーションであるSampleSender.javaは、testQueueトピックからテキストメッセージを送信するプログラムです。

 まず、JNDIを用いて接続先を取得しています(図5の【3】)。

// JNDIイニシャルコンテキストを取得します。
context = new InitialContext();
// 接続ファクトリを取得します。
ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("ConnectionFactory");

 接続が完了したらメッセージを送信します。送信するメッセージは、「Hello World!!!」としています(図5の【5】)。

// メッセージ送信します。
MessageProducer msgProducer = session.createProducer(queue);
msgProducer.send(session.createTextMessage("Hello World!!!"));

 メッセージが送信されると、受信側の応答を待つことなく終了します。

設定ファイル(jndi.properties)

 jndi.propertiesは、JavaVMがどのJNDIサーバを使うのかを設定する設定ファイルです。今回は、ローカル環境のサーバを用いるのでローカル環境への接続が設定されています。

java.naming.provider.url=jnp://localhost:1099

 これらのファイルを、それぞれ以下のように配置します。

図17 サンプルプログラムの配置
図17 サンプルプログラムの配置

 また、以下のようにJARファイルをビルド・パスに含めてください。

図18 ビルド・パスの追加
図18 ビルド・パスの追加
JARファイル ファイルパス
commons-logging.jar C:\jboss-4.2.3.GA\server\messaging\lib\commons-logging.jar
javassist.jar C:\jboss-4.2.3.GA\server\messaging\lib\jboss-j2ee.jar
jboss-remoting.jar C:\jboss-4.2.3.GA\server\messaging\lib\jboss-remoting.jar
jboss-aop-jdk50.jar C:\jboss-4.2.3.GA\server\messaging\deploy\jboss-aop-jdk50.deployer\jboss-aop-jdk50.jar
jbossall-client.jar C:\jboss-4.2.3.GA\client\jbossall-client.jar
jboss-common-client.jar C:\jboss-4.2.3.GA\client\jboss-common-client.jar
jnp-client.jar C:\jboss-4.2.3.GA\client\jnp-client.jar
trove.jar C:\jboss-4.2.3.GA\client\trove.jar
jboss-messaging-client.jar C:\jboss-messaging-1.4.5.GA\jboss-messaging-client.jar
表 ビルド・パスに追加するJARファイルリスト

 以上で、サンプルの実行環境が整いました。

メッセージングをサンプルで体感してみよう

 それでは、実行してみましょう。C:\jboss-4.2.3.GA\bin\run.batを実行し、サーバを立ち上げます。SampleReceiverを実行すると、メッセージの受信待ち状態になります。

図19 SampleReceiverのメッセージ受信待ち状態
図19 SampleReceiverのメッセージ受信待ち状態

 SampleSenderを実行し、メッセージを送信してください。送信されるテキストは「Hello World!!!」です。送信が完了すると、SampleSenderは終了します。

図20 SampleSenderのメッセージ送信
図20 SampleSenderのメッセージ送信

 受信待ちのSampleReceiverのコンソールにSampleSenderが送信したメッセージが受信されています。

図21 SampleReceiverのメッセージ受信完了
図21 SampleReceiverのメッセージ受信完了

 以上で、JBoss Messagingの動作確認は終了です。

 今回の動作確認では、受信側のアプリケーションを先に実行していますが、受信側のアプリケーションを実行していなくても、送信側のアプリケーションは問題なくメッセージを送信できます。その場合、メッセージは受信側のアプリケーションを実行した時点で受信可能です。

メッセージングとも関連する「Webサービス」の常識

 今回は、メッセージングについて説明しました。今後、読者の皆さんがメッセージングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。

 次回は、今回のメッセージングとも関連性が強い「Webサービスの常識」について解説します。Webサービスとは、一体どういうものなのかに焦点を当てたいと思います。

筆者紹介

株式会社ビーブレイクシステムズ開発部所属

相原 淳(あいはら じゅん)

専門分野:Webシステム開発・保守

2008年よりビーブレイクシステムズに在籍。

前職では、Javaを用いたWEB系のシステム開発や保守作業に従事。Javaの開発を行っていく中で、オープンソースに興味を持ち、その分野で活躍できるビーブレイクシステムズに転職し、現在に至る。


筆者紹介

株式会社ビーブレイクシステムズ開発部所属

山野 信行(やまの のぶゆき)

2008年よりビーブレイクシステムズに在籍。

前職では、C言語やJava、.NETなどを用いたWeb系のシステム開発に従事。IT技術者としての自分磨きを続けていくうちに、Web系の技術だけではもの足りなくなり、ビーブレイクシステムズへの転職を決意。現在は、Java系全般技術、飲みニケーションという武器を携えて、業務システムの構築に勤しんでいる。近いうちに、業務知識を武器に加える予定。


筆者紹介

株式会社ビーブレイクシステムズ技術担当取締役

上川 伸彦(かみかわ のぶひこ)

RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。



Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る