NetBeansおよびGlassFishを使用した、簡単なJava Message Service(JMS)プロデューサの作成
概要
目的
このチュートリアルでは、GlassFish 3.1.2およびNetBeans 7を使用して、JMS APIを使用した簡単なメッセージ・プロデューサを作成する方法について説明します。
所要時間
約45分
はじめに
メッセージングは、ソフトウェア・コンポーネント間やアプリケーション間での通信手段です。 メッセージングは分散アプリケーション間での疎結合通信を可能にします。 メッセージ・クライアントは、メッセージの受信と配信に役立つメッセージング・エージェントに接続することで、メッセージングの送受信を行います。 クライアント側では、メッセージを消費または生成するその他のクライアントについて把握する必要はありません。 メッセージ・クライアントが知っている必要があるのは、送信メッセージの形式と宛先のみです。 したがって、メッセージングは、アプリケーション側でリモート・アプリケーションのメソッドを把握する必要のあるその他の密結合テクノロジー(Remote Method Invocation(RMI)など)とは異なります。
Java Message Service APIは、エンタープライズ・メッセージング製品(メッセージ指向ミドルウェア(MOM)とも呼ばれる)を介して企業内アプリケーションを接続するという要望に応じるため、Sun Microsystemsなどの企業によって設計されました。 JMSはJavaアプリケーションからメッセージング・システムへのアクセス手段を提供します。 JMSは、一連のインタフェースに加えて、JMSクライアントがメッセージ実装機能にアクセスする方法を定義した関連セマンティックで構成されています。 この点において、JMSはJDBCに非常によく似ています。
メッセージング・システムはPeer-to-Peer機能であるため、クライアントはどのクライアントに対してもメッセージを送受信することができます。 一部のメッセージング・システムは多数の宛先にメッセージをブロードキャストできるため、クライアントが特定のチャネルまたはトピックをサブスクライブすることでブロードキャストされたメッセージを受信できます。 JMSはJMSプロバイダの実装に応じて、両方のモデルをサポートするように実装されています。 次の図に、Java Message Service実装に関係するコンポーネントを示します。
JMS APIメッセージング・システムに関係するコンポーネント
JMSテクノロジー・プロバイダ(JMSプロバイダ)は、JMS APIの実装を提供するメッセージング・システムです。 JMSテクノロジーをサポートするアプリケーション・サーバーに対して、このアプリケーション・サーバーのJNDIテクノロジー名前空間に管理対象オブジェクト(コネクション・ファクトリ、キュー宛先、トピック宛先)を配置する必要があります。 通常は、アプリケーション・サーバーで提供されている管理ツールを使用してこのタスクを実行しますが、 このチュートリアルでは、NetBeansに組み込まれた機能を使用して管理対象オブジェクトの定義と作成を行います。
具体的に言うと、キュー宛先とコネクション・ファクトリをNetBeans内に定義します。 アプリケーションをデプロイした後で、NetBeansの機能を使用し、指定したコネクション・ファクトリを使用するコードを生成して、コネクション・オブジェクトを生成します。 生成されたコードはこのコネクション・オブジェクトを使用してセッション・オブジェクトを作成します。このセッション・オブジェクトを使用してMessageProducerオブジェクトが作成され、JSFページに入力された文字列がメッセージ・オブジェクトとしてキューに送信されます。
ソフトウェア要件
Windowsプラットフォームでこのチュートリアルを実行するには、次のソフトウェアが必要です。 ソフトウェアは次に示す順序でインストールする必要があります。
- こちらのリンクからJava JDK 7をダウンロードし、インストールします。
- こちらのリンクからNetBeans IDE 7.1.2 Java EEバージョンをダウンロードし、インストールします。このソフトウェアには、GlassFish 3.1.2(Java EEダウンロード・バンドル)が含まれています。
インストール中に、GlassFishをインストールするためのチェック・ボックスを必ず選択してください。 JUnitのインストールは省略可能であり、このチュートリアルでは必要ありません。
前提条件
このチュートリアルを始める前に以下のことを確認してください。
- ソフトウェア要件に記載されたソフトウェアをインストールしていること。
- NetBeans IDEを起動していること。
- このチュートリアルに必要なNetBeansプロジェクトが含まれているMDBExample.zipファイルをダウンロードし、解凍していること。
注: NetBeansプロジェクトを解凍するフォルダには、英数字以外の文字や空白を使用しないでください。
NetBeansのWebアプリケーション・プロジェクトの作成
NetBeansはさまざまなプロジェクト・オプションを提供しています。 このチュートリアルではWebアプリケーション・プロジェクトを作成し、JSFフレームワークを使用します。
JMSプロデューサ用マネージドBeanの作成
このトピックでは、JSF Facelet用のマネージドBeanを作成します。
新しいJSFマネージドBeanの作成
String型のメッセージ・フィールドを含むJSFマネージドBeanの実装
JSFページの実装
マネージドBeanのメッセージ・フィールドに書込みを実行するためのコンポーネントをJSFページに追加します。
プロジェクトへのメッセージ・キューとコネクション・ファクトリの追加
JMSキューの管理オブジェクト・リソースの追加
JMSキューのコネクタ・リソースの追加
GlassFishアプリケーション・サーバーの起動とアプリケーションのデプロイ
マネージドBean内のJMSコードの生成
sendメソッドの変更による生成コードの呼出し
send()メソッドは、先ほどプロジェクトに追加したJMSキュー宛先に対して文字列messageの送信を試みます。
メッセージが正しく送信されると、現在のビュー・ページを表すFacesContextインスタンスにFacesMessageが追加されます。 ページがレンダリングされると、FacesMessageがブラウザ・クライアントに表示されます。
アプリケーションのテスト
メッセージ・キュー統計の参照
サーバー上のメッセージの中身を表示することはできませんが、宛先に送信された(まだ取得されていない)メッセージの数を確認することはできます。
コマンドラインの使用
myQueueには1つのメッセージが入っています。
管理コンソールの使用
キュー上のメッセージの読取り
このチュートリアルには、キュー上のメッセージを"表示"するための簡単なMessage-Driven Bean(MDB)プロジェクトが含まれています。 キューからメッセージを取得して別のアプリケーション用に保存する方法を含む、より高度なMDBアプリケーションについては、別のOBEで学習します。
まとめ
このチュートリアルでは、JMSプロデューサ・アプリケーションを作成しました。 このアプリケーションはJSFページを使用して文字列メッセージとマネージドBeanを作成し、JMSメッセージ・キューに文字列を格納します。
参考資料
- The Java EE 6 Tutorial: Java Message Service Concepts
- Java Message Service Documentation
- Developing Java EE 6 Applications for the Java EE 6 Platform
- Java EEアプリケーションでのJava Message Serviceの使用について、詳しくはOracle Learning Libraryに含まれるその他のOBEを参照してください。
著者
- カリキュラム開発責任者: Tom McGinn
- 共著者: Matt Heimer
このOracle by Exampleをナビゲートする際、次の機能を使用できます。
- ヘッダー・ボタンの非表示:
- ヘッダー内のボタンを非表示にするには、タイトルをクリックします。 ボタンを再表示するには、もう一度タイトルをクリックします。
- トピック一覧ボタン:
- すべてのトピックの一覧です。 いずれかのトピックをクリックすると、その項に移動します。
- すべてのトピックを開く/閉じる:
- すべての項に対する詳細を表示または非表示にします。 デフォルトでは、すべてのトピックが閉じられています。
- すべてのイメージを表示/非表示:
- すべてのスクリーンショットを表示または非表示にします。 デフォルトでは、すべてのイメージが表示されています。
- 印刷:
- コンテンツを印刷します。 現在表示または非表示にされているコンテンツが印刷されます。
このチュートリアルの特定の項に移動するには、一覧からトピックを選択してください。