受信側のアプリケーションである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は、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は、JavaVMがどのJNDIサーバを使うのかを設定する設定ファイルです。今回は、ローカル環境のサーバを用いるのでローカル環境への接続が設定されています。
java.naming.provider.url=jnp://localhost:1099
これらのファイルを、それぞれ以下のように配置します。
また、以下のようにJARファイルをビルド・パスに含めてください。
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を実行すると、メッセージの受信待ち状態になります。
SampleSenderを実行し、メッセージを送信してください。送信されるテキストは「Hello World!!!」です。送信が完了すると、SampleSenderは終了します。
受信待ちのSampleReceiverのコンソールにSampleSenderが送信したメッセージが受信されています。
以上で、JBoss Messagingの動作確認は終了です。
今回の動作確認では、受信側のアプリケーションを先に実行していますが、受信側のアプリケーションを実行していなくても、送信側のアプリケーションは問題なくメッセージを送信できます。その場合、メッセージは受信側のアプリケーションを実行した時点で受信可能です。
今回は、メッセージングについて説明しました。今後、読者の皆さんがメッセージングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。
次回は、今回のメッセージングとも関連性が強い「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.