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

» 2010年01月08日 00時00分 公開
[相原淳, 山野信行, 上川伸彦株式会社ビーブレイクシステムズ]
前のページへ 1|2|3|4       

受信側アプリケーション(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コンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。