
企業システムの常識をJBossで身につける(5)
非同期処理と疎結合ができる「メッセージング」の常識
株式会社ビーブレイクシステムズ
相原 淳、山野 信行、上川 伸彦
2010/1/8
■受信側アプリケーション(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 サンプルプログラムの配置 |
また、以下のようにJARファイルをビルド・パスに含めてください。
![]() |
| 図18 ビルド・パスの追加 |
| 表 ビルド・パスに追加するJARファイルリスト | ||||||||||||||||||||
|
以上で、サンプルの実行環境が整いました。
メッセージングをサンプルで体感してみよう
それでは、実行してみましょう。C:\jboss-4.2.3.GA\bin\run.batを実行し、サーバを立ち上げます。SampleReceiverを実行すると、メッセージの受信待ち状態になります。
![]() |
| 図19 SampleReceiverのメッセージ受信待ち状態 |
SampleSenderを実行し、メッセージを送信してください。送信されるテキストは「Hello World!!!」です。送信が完了すると、SampleSenderは終了します。
![]() |
| 図20 SampleSenderのメッセージ送信 |
受信待ちのSampleReceiverのコンソールにSampleSenderが送信したメッセージが受信されています。
![]() |
| 図21 SampleReceiverのメッセージ受信完了 |
以上で、JBoss Messagingの動作確認は終了です。
今回の動作確認では、受信側のアプリケーションを先に実行していますが、受信側のアプリケーションを実行していなくても、送信側のアプリケーションは問題なくメッセージを送信できます。その場合、メッセージは受信側のアプリケーションを実行した時点で受信可能です。
メッセージングとも関連する「Webサービス」の常識
今回は、メッセージングについて説明しました。今後、読者の皆さんがメッセージングの構築に携わることになったら、ここでの知識を少しでも生かしていただければと思います。
次回は、今回のメッセージングとも関連性が強い「Webサービスの常識」について解説します。Webサービスとは、一体どういうものなのかに焦点を当てたいと思います。
■ @IT関連記事
| イロイロな分散処理技術とイマドキのWebサービス いま再注目の分散処理技術(中編) 昔からある分散処理技術は実は、SOAPやRESTなど現在流行している“Webサービス”へと連なる。いろいろな“分散”の形を見てみよう 「Java
Solution」フォーラム 2008/9/16 |
||
| J2EEと外部システムを連携する方法 [連載]Java初心者のためのWebシステム入門(7) J2EEがサポートする接続方法は多様だ。今回はJ2EEと外部のシステムとの連携方法を解説する 「Java
Solution」フォーラム 2002/7/23 |
||
| Javaのメッセージング・サービスを速くするには? WebSphereサーバ・チューニング入門(7) 今回はJMSについて、デリバリー・モードやデータバッファ、処理の並列度などの点から、パフォーマンスチュ−ニングを試みます 「Java Solution」フォーラム 2008/8/7 |
| プロフィール |
| 相原 淳(あいはら じゅん) 株式会社ビーブレイクシステムズ開発部所属 専門分野:Webシステム開発・保守 2008年よりビーブレイクシステムズに在籍。 前職では、Javaを用いたWEB系のシステム開発や保守作業に従事。Javaの開発を行っていく中で、オープンソースに興味を持ち、その分野で活躍できるビーブレイクシステムズに転職し、現在に至る。 |
| プロフィール |
| 山野 信行(やまの のぶゆき) 株式会社ビーブレイクシステムズ開発部所属 2008年よりビーブレイクシステムズに在籍。 前職では、C言語やJava、.NETなどを用いたWeb系のシステム開発に従事。IT技術者としての自分磨きを続けていくうちに、Web系の技術だけではもの足りなくなり、ビーブレイクシステムズへの転職を決意。現在は、Java系全般技術、飲みニケーションという武器を携えて、業務システムの構築に勤しんでいる。近いうちに、業務知識を武器に加える予定。 |
| プロフィール |
| 上川 伸彦(かみかわ のぶひこ) 株式会社ビーブレイクシステムズ技術担当取締役。 RDB製品の開発、各種業界団体におけるXML/EDI標準の策定やSOA基盤の設計などに従事。最近は、ITコンサル業よりも、業務システムの構築に携わることが多く、お客さまからの無理難題と向き合う日々を送っている。 |
| Index | ||||||||||
|
||||||||||
企業システムの常識をJBossで身につける バックナンバー 連載インデックスへ»
- 第1回 企業向けアプリの常識を学び、JBossの環境構築
- 第2回 “全部入り”のEclipseで学ぶ統合開発環境の常識
- 第3回 DI(依存性の注入)×AOP(アスペクト指向)の常識
- 第4回 企業でも情報整理で利用が進む「ポータル」の常識
- 第5回 非同期処理と疎結合ができる「メッセージング」の常識
- 第6回 いまさら聞けない「Webサービス」の常識
- 第7回 クラウドで再注目の「分散コンピューティング」の常識
- 第8回 悲観もあれば楽観もある「トランザクション」の常識
- 第9回 社内システムのセキュリティとアクセス制御の常識
- 第10回 内部統制に効く! ID管理・シングルサインオンの常識
- 第11回 「全体を見る」ためのビジネスプロセス・BPMの常識
- 最終回 急速なビジネスの変化に対応できる「BRMS」の常識
| Java Solution全記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -





