非同期処理と疎結合ができる「メッセージング」の常識:企業システムの常識をJBossで身につける(5)(4/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
受信側アプリケーション(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
これらのファイルを、それぞれ以下のように配置します。
また、以下のように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サービスとは、一体どういうものなのかに焦点を当てたいと思います。
筆者紹介
株式会社ビーブレイクシステムズ開発部所属
相原 淳(あいはら じゅん)
専門分野:Webシステム開発・保守
2008年よりビーブレイクシステムズに在籍。
前職では、Javaを用いたWEB系のシステム開発や保守作業に従事。Javaの開発を行っていく中で、オープンソースに興味を持ち、その分野で活躍できるビーブレイクシステムズに転職し、現在に至る。
筆者紹介
株式会社ビーブレイクシステムズ開発部所属
山野 信行(やまの のぶゆき)
2008年よりビーブレイクシステムズに在籍。
前職では、C言語やJava、.NETなどを用いたWeb系のシステム開発に従事。IT技術者としての自分磨きを続けていくうちに、Web系の技術だけではもの足りなくなり、ビーブレイクシステムズへの転職を決意。現在は、Java系全般技術、飲みニケーションという武器を携えて、業務システムの構築に勤しんでいる。近いうちに、業務知識を武器に加える予定。
筆者紹介
株式会社ビーブレイクシステムズ技術担当取締役
上川 伸彦(かみかわ のぶひこ)
RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。
- 急速なビジネスの変化に対応できる「BRMS」の常識
- 「全体を見る」ためのビジネスプロセス・BPMの常識
- 内部統制に効く! ID管理・シングルサインオンの常識
- 社内システムのセキュリティとアクセス制御の常識
- 悲観もあれば楽観もある「トランザクション」の常識
- クラウドで再注目の「分散コンピューティング」の常識
- いまさら聞けない「Webサービス」の常識
- 非同期処理と疎結合ができる「メッセージング」の常識
- 企業でも情報整理で利用が進む「ポータル」の常識
- DI(依存性の注入)×AOP(アスペクト指向)の常識
- “全部入り”のEclipseで学ぶ統合開発環境の常識
- 企業向けアプリの常識を学び、JBossの環境構築
Copyright © ITmedia, Inc. All Rights Reserved.