メッセージ駆動型 Bean の作成

「エンタープライズ Bean の作成」ウィザードを使用して、EJB 2.0 または EJB 2.1 メッセージ駆動型 Bean を作成できます。

メッセージ駆動型 Bean を作成するには、最初に EJB 2.0 または EJB 2. 1 プロジェクトを定義しておく必要があります。 メッセージ駆動型 Bean は、EJB 2.x プロジェクトでのみサポートされています。

メッセージ駆動型 Bean は、Java Message Service (JMS) からの非同期メッセージの処理をサポートするために EJB 2.0 で導入されました。 EJB 2.1 仕様は、メッセージ駆動型 Bean が JMS だけではなくあらゆるメッセージング・システムをサポートできるように、メッセージ駆動型 Bean の定義を拡張します。 それに応じて、メッセージ駆動型 Bean の定義に使用されるデプロイメント記述子エレメントは EJB 2.1 仕様で変更されました。EJB 2.1 メッセージ駆動型 Bean 作成のためのウィザードにも、オプションで非 JMS メッセージング・システムとその活動化構成エレメントを定義するための追加ページが組み込まれています。

以下のコード・サンプルは、メッセージ駆動型 Bean の定義に用いられる EJB 2.0 および EJB 2.1 デプロイメント記述子エレメント間の違いを示しています。

このコード・サンプルは、デプロイメント記述子内の EJB 2.0 メッセージ駆動型 Bean 記述子を表しています。
<message-driven id="Mdb20">
  <ejb-name>Mdb</ejb-name>
  <ejb-class>ejbs.MdbBean</ejb-class>
  <transaction-type>Bean</transaction-type>
  <message-selector>mdbMessage</message-selector>
  <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
  <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <subscription-durability>Durable</subscription-durability>
  </message-driven-destination>
</message-driven>
このコード・サンプルは、デプロイメント記述子内の EJB 2.1 メッセージ駆動型 Bean 記述子を表しています。
<message-driven id="Mdb21">
  <ejb-name>Foo</ejb-name>
  <ejb-class>ejbs.FooBean</ejb-class>
  <messaging-type>javax.jms.MessageListener</messaging-type>
  <transaction-type>Bean/transaction-type>
  <message-destination-type>javax.jms.Topic</message-destination-type>
  <activation-config>
    <activation-config-property>
      <activation-config-property-name>destinationType</activation-config-property-name>
      <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>subscriptionDurability</activation-config-property-name>
      <activation-config-property-value>Durable</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>acknowledgeMode</activation-config-property-name>
      <activation-config-property-value>AutoAcknowledge</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>messageSelector</activation-config-property-name>
      <activation-config-property-value>fooSelector</activation-config-property-value>
    </activation-config-property>
  </activation-config>
  </transaction-type>
</ejb-name>
</message-driven>

EJB 2.1 の仕様では、確認モード、メッセージ・セレクター、サブスクリプション耐久性、宛先タイプなどのプロパティーの定義には、<activation-config-property> エレメントが使用されると定義されています。 非 JMS メッセージング・タイプを使用する場合、Bean のために使用する必要のある <activation-config-property> の名前と値のペアをウィザードで定義できます。 JMS メッセージング・システムの場合、ウィザードでは、JMS が必要とするデフォルト構成プロパティー (subscriptionDurabilityacknowledgeMode など) が提供されます。

EJB 2.0 または EJB 2.1 メッセージ駆動型 Bean の作成手順は次のとおりです。

  1. J2EE パースペクティブで、「ファイル」 > 「新規」 > 「エンタープライズ Bean」と選択する。 「エンタープライズ Bean の作成」ウィザードが表示されます。
  2. メッセージ駆動型 Bean」ラジオ・ボタンを選択する。
  3. Bean を追加する「EJB プロジェクト」を選択する。 EJB 2.0 もしくは EJB 2.1 プロジェクトを選択できます。
  4. Bean 名」フィールドに、エンタープライズ Bean に割り当てる名前を入力する。 規則により、Bean 名は大文字で始める必要があります。
    注: Bean の名前にユニコードを使用することができますが、 ユニコード文字は、エンタープライズ Bean に関連付けられたエンタープライズ Bean のパッケージ、 およびクラス用にはサポートされていません。
  5. ソース・フォルダー」フィールドで、新規 Bean 用のソース・フォルダーを選択する。
  6. デフォルト・パッケージ」フィールドに、新規 Bean 用のパッケージ名を入力する。
  7. 任意: EJB 2.x Bean の場合、「注釈付き Bean クラスの生成」を選択できる。 このオプションを選択すると、ウィザードはその Bean クラスの Java™ コードの先頭に注釈を生成します。 注釈は、ウィザードで指定したように Bean の実装を定義します。 この注釈は、EJB ツールが、必要な Bean クラスの生成および EJB デプロイメント記述子 (ejb-jar.xml) に挿入される値の提供に使用します。注釈を使い慣れており、デプロイメント記述子よりもむしろ注釈を利用して Bean を更新したい場合は、このオプションを選択してください。

    詳しくは、『注釈ベース・プログラミングの概要』を参照してください。

  8. 次へ」をクリックする。
  9. EJB 2.1 Bean の場合は、メッセージ駆動型 Bean のために使用するメッセージング・サービスを指定して、「次へ」をクリックする。
    • JMS 型: リスナー・タイプとして javax.jms.MessageListener クラスを使用し、JMS メッセージ・サービスを使用したい場合は、このオプションを選択します。
    • その他の型: 非 JMS もしくはカスタム・メッセージング・サービスを使用したい場合は、このオプションを選択します。 「リスナー・タイプ」フィールドに、リスナー・クラスの完全修飾名を入力します。
  10. メッセージ駆動型 Bean の詳細を指定する。非 JMS メッセージング・システムを使用する EJB 2.1 メッセージ駆動型 Bean を作成する場合、オプションの中には使用不可のものもありますが、活動化構成名と値のペアという形で手操作で定義できます。
    • トランザクション型: コンテナーまたは Bean のいずれかが Bean のトランザクションを管理するよう指定できます。
    • 宛先タイプ: メッセージ駆動型 Bean のメッセージ宛先としてキューまたはトピックを指定できます。
    • 活動化構成: 非 JMS メッセージング型を使用する EJB 2.1 メッセージ駆動型 Bean の場合、この表を利用して追加プロパティーを構成します。 定義したそれぞれの名前と値の対は、<activation-config-property> エレメントとしてデプロイメント記述子に追加されます。
    • 確認モード: JMS 型メッセージングおよび Bean 管理トランザクションを使用する Bean の場合、セッションは受け取ったメッセージをどのように確認するかを指定します。
    • 耐久性: JMS 型メッセージを使用し、メッセージ宛先タイプが「トピック」に設定されている Bean の場合、トピックのサブスクリプションは耐久か非耐久かを指定できます。
      • 永続的: サブスクライバーは、JMS により保持される固有 ID で永続サブスクリプションを登録します。 同じ ID を持つ後続のサブスクライバー・オブジェクトは、 それ以前のサブスクライバーによって置かれていた状態のままとなっているサブスクリプションを再開します。 耐久サブスクリプションのアクティブ・サブスクライバーがない場合、JMS はサブスクリプションのメッセージを、それらがサブスクリプションによって受信されるまで、あるいは期限切れになるまで保持します。
      • 非耐久: サブスクリプションはそれぞれ、 そのサブスクライバー・オブジェクトの存続期間にわたって持続します。 つまり、そのサブスクライバーがアクティブである間だけ、クライアントは、 トピックで公開されたメッセージを見ることができます。 サブスクライバーがアクティブでなければ、クライアントは、そのトピックで公開されたメッセージを見ることができません。
    • Bean スーパータイプ: 新規の Bean が同じ EJB プロジェクト内の同じ型の既存 Bean から継承するようにする場合は、ドロップダウン・リストから Bean を選択します。
    • Bean クラス: その Bean クラス用の希望のパッケージおよびクラス名を入力します。 ウィザードでは、デフォルトで、Bean 名と定義したデフォルト・パッケージに基づいた Bean クラスを勧められます。 Bean クラスは、ウィザードが生成した新規クラス、またはプロジェクトのクラスパス内の既存のクラスでも構いません。「クラス」ボタンをクリックして、 Bean 型に対応するプロジェクト内のクラスをリストするダイアログを開きます。 既存のクラスは、ソースを付けて Bean クラス名を青色で表示されます。 既存のバイナリー・クラスの Bean クラス名は、赤色で表示されます。
    • メッセージ・セレクター: JMS 型メッセージングを使用する Bean の場合、JMS メッセージ・セレクターは、メッセージ Bean によって受信されるメッセージの判別に使用されます。
  11. 任意: 次へ」をクリックして、「Bean スーパークラス」フィールドで、希望のクラスを入力または選択する。 Bean のスーパータイプを選択した場合、このフィールドは使用不可になります。
  12. 終了」をクリックする。 新規 Bean が生成され、デプロイメント記述子内に定義されます。
EJB デプロイメント記述子エディターの「Bean」ページを利用して Bean を確認したり、追加設定または拡張機能とバインディングを変更または追加することができます。
ご利用条件フィードバック
(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.(C) Copyright IBM Japan 2005.