SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Java Message Service再入門

今からでも遅くない JMSを学ぼう!(後編)
Message-Driven Beanの世界へ

MDBを使いアプリどうしを非同期通信します

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (2.9 KB)

MDBを使って非同期通信を確認

送信側の起動

 Javaアプリケーションを実行するには、GlassFishが提供するappclientを使用します。詳しくは前編を参照ください。図5のようにコマンドプロンプトでappclientを使用して受信側を起動します。非同期であるため、受信側が起動していることは気にしなくて構いません。コマンド発行後の画面が図6です。コンソールには何も出力していないためそのまま終了しています。この後受信側にメッセージを届けるのはキューの役割です。

図5.送信側の起動方法
図5.送信側の起動方法
図6.メッセージ送信完了画面
図6.メッセージ送信完了画面

受信側の起動

 MDBを起動するにはNetBeansの左ペインから[プロジェクト]タブを開き[MDBSample01-ejb]を右クリックして、[実行]を選択します。すると、GlassFish上でImoshochuMessageDrivenBeanがメッセージを待つ状態になります。この場合、既に送信側からメッセージがキューに送られているため、すぐにメッセージを受信します。

 GlassFish v2.1のコンソールに受信状態を出力するようにしているため図7のように送信側から送られたオブジェクトの内容が表示されます。前編同様、まずは受信側を起動し、その後送信側を起動するとどうなるか確認してください。

図7.GlassFish v2.1のコンソール画面
図7.GlassFish v2.1のコンソール画面

紛らわしいこと

 前編、後編ともキューを使った非同期通信を説明しましたが、前編ではreceiveメソッドを使い、後編ではonMessageメソッドを使用しました。

 実はJMSのメッセージ受信には同期受信非同期受信があります。receiveメソッドを使用したメッセージ受信を同期受信と呼び、onMessageメソッドを使用したメッセージ受信を非同期受信と呼びます。

 今まで説明してきたように、メッセージを取りに行くのを同期受信、メッセージが配信されるのを待つのが非同期受信です。JMSという大きな枠組みで見ればJMS自体は非同期通信です。受信というJMS内部では同期と非同期が存在すると考えてもらえれば分かりやすいと思います。

 最初に説明すべきことですが、筆者自身これらの言葉の使い分けで混乱した経験から、2つの受信の仕方を説明したのちにこれらの区別を説明した次第です。

問いかけ

 JMSは仕様が固まってから10年弱が経とうとしています。しかし、成熟しているからこそバージョンが上がっていないだけの話です。ソフトウェアアーキテクトの方が読まれていたらJMSが古いと言うだけでアーキテクチャから排除されているでしょか? おそらく、臨機応変に使用されていることと思います。Webサービスは知っているがJMSを知らないソフトウェアアーキテクトが増えていることを鑑みて、あえてJMSを題材として取り上げてみました。

サンプルコード

 図8が今回のプロジェクトのフォルダ構成です。複数のプロジェクトが存在し分かりづらいかと思いますが、記事に沿って構築していただければと思います。

 読者の方からはjarファイル、warファイル、earファイルだけをくれればいいという指摘を受けますが、あえてJavaのソースコードのみをサンプルコードとして提供いたします。それはJavaのソースコードのみではアプリケーションを構築することは不可能であり、構築する過程において多くのことを学んでほしいからとの思いもあります。

 サンプルコードはページトップにあるので、ぜひダウンロードしてご利用ください。

図8.後編で作成したプロジェクトのフォルダ構成
図8.後編で作成したプロジェクトのフォルダ構成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Java Message Service再入門連載記事一覧
この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5018 2010/04/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング