組み込みメッセージング・サーバーへの接続のための、メッセージ駆動型 Bean のデプロイ

メッセージ駆動型 Bean (MDB) を使用して、組み込みメッセージング・サーバーに接続します。

このタスクについて

MDB は、以下の 2 つのシナリオにおいて、Liberty サーバーで構成可能です。
  • MDB とメッセージング・エンジンの両方が同じ Liberty サーバーにある場合。
  • MDB が、別の Liberty サーバーで実行されているリモート・メッセージング・エンジンに接続しようとしている場合。
    この図は、MDB の 2 つの構成シナリオを表しています。1 つめのシナリオは、メッセージング・エンジンと MDB が同じ Liberty サーバー上にある場合です。2 つめのシナリオは、MDB が別のサーバー上にあるメッセージング・エンジンに接続しようとしている場合です。

手順

  1. MDB フィーチャーを構成します。

    server.xml ファイル内で jmsMdb-3.1 および wasJmsClient-2.0 フィーチャーを構成することで、Liberty サーバーでの MDB サポートを使用可能にします。JNDI 検索を実行する場合は、他の 2 つのフィーチャーとともに jndi-1.0 フィーチャーも追加する必要があります。

    <featureManager>
         <feature>jmsMdb-3.1</feature>
         <feature>wasJmsClient-2.0</feature>
         <feature>jndi-1.0</feature>
    </featureManager>

    wasJmsClient-2.0 フィーチャーを構成することで、ユーザーは必要な JMS リソースを定義できるようになり、MDB とメッセージング・エンジンとの対話が可能になります。

    重要: wasJmsClient-2.0 フィーチャーは、JMS 1.1 仕様と JMS 2.0 仕様の両方のフィーチャーをサポートしています。ただし、 JMS 1.1 仕様に準拠したフィーチャーのみを使用する場合は、wasJmsClient-1.1 フィーチャーを使用することを選択できます。
  2. MDB が特定の JMS 宛先でリスナーとして機能するよう、JMS リソース・アダプターを使用する JCA アクティベーション・スペックを構成します。メッセージング・エンジンと対話するよう MDB を構成するさまざまな方法を、以下に示します。
    1. アクティベーション・スペックのプロパティーを使用して MDB を構成します。
      server.xml ファイル内でプロパティーを定義して、MDB がこのプロパティーを使用して特定の JMS 宛先で listen できるようにします。
      <jmsActivationSpec id="JMSSample/JMSSampleMDB">
           <properties.wasJms destinationRef="jndi/MDBQ"  />
      </jmsActivationSpec>
      
      <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ">
           <properties.wasJms queueName="Q1"/>
      </jmsQueue>

      <destinationRef> は <jmsQueue> の ID を参照します。<jmsQueue> の ID が記載されていない場合、<destinationRef> は <jmsQueue> の <jndiName> を指す必要があります。

      注: この ID 値は application name/module name/bean name という形式でなければなりません。各部の意味は、次のとおりです。
      • application name はデプロイされるアプリケーションの名前です (例: JMSSample)。このアプリケーション名は、Bean が EAR ファイル内にパッケージされている場合のみ適用されます。このアプリケーションは、application.xml デプロイメント記述子によって指定されている場合を除き、デフォルトで、ファイル名拡張子の付いていない EAR ファイルのベース名になります。
      • module name は Bean がパッケージされているモジュールの名前です。スタンドアロンの ejb-jar ファイルまたは WAR ファイルでは、<module-name> はデフォルトで、モジュールのベース名からファイル名拡張子を削除したものになります。EAR ファイルでは、<module-name> はデフォルトで、モジュールのパス名からファイル名拡張子を削除し、ディレクトリー名は含めたものになります。デフォルトの <module-name> は、ejb-jar.xml (ejb-jar ファイルの場合) または web.xml (WAR ファイルの場合) の module-name エレメントを使用してオーバーライドできます。
      • bean name はエンタープライズ Bean の ejb-name です。アノテーションを使用して定義されたエンタープライズ Bean の場合、MessageDriven アノテーションの name() 属性のコンテンツで指定されている場合を除き、この Bean 名はデフォルトで、セッション Bean クラスの非修飾名になります。 ejb-jar.xml を使用して定義されたエンタープライズ Bean の場合、<ejb-name> デプロイメント記述子エレメントで Bean 名が指定されます。
    2. アノテーションと server.xml ファイルで定義されたアクティベーション・スペック・プロパティーを使用する。

      Liberty は、server.xml ファイルで定義されたアクティベーション・スペック・プロパティーとともに使用できる MDB 用アノテーションの定義をサポートします。このアノテーションを使用するには、前のステップの説明に従ってまずアクティベーション・スペック・プロパティーを定義します。それぞれの MDB について、ユーザーは以下の例に示すようにアノテーションを定義することができます。

      @MessageDriven(
      		  name = "JMSSampleMDB",
      		  activationConfig = {
      		    @ActivationConfigProperty(propertyName  = "destinationType", 
      		                              propertyValue = "javax.jms.Queue"),
      		    @ActivationConfigProperty(propertyName  = "userName", 
      		                              propertyValue = "user1"),
      		    @ActivationConfigProperty(propertyName  = "password",
      		                              propertyValue = "user1pwd"),	
      		    @ActivationConfigProperty(propertyName  = "destination", 
      		                              propertyValue = "jndi_INPUT_Q")                         
      		  }
      		)
      public class JMSSampleMDB implements MessageListener{
      	
      	 @TransactionAttribute(value = TransactionAttributeType.REQUIRED)
      	  public void onMessage(Message message) {
      	 }
      }
    3. EJB バインディング・ファイル (ibm-ejb-jar-bnd.xml) を使用する。

      このバインディング・ファイルを使用しても、MDB がメッセージング・エンジンに接続する際に必要となるリソース資料を定義できます。EJB バインディング・ファイルを使用する際は、アクティベーション・スペックのプロパティー ID を必ずしもステップ 1 で記載した application name/module name/bean name の形式にする必要はありません。

      アクティベーション・スペック・プロパティー情報を server.xml に追加します。
      <jmsActivationSpec id="PriceChangeAS">
           <properties.wasJms destinationRef="jms/TriggerQ" />
      </jmsActivationSpec>
      
      <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ">
           <properties.wasJms queueName="Q1"/>                  
       </jmsQueue>
      以下の MDB バインディング情報を ibm-ejb-jar-bnd.xml ファイルに追加します。
      <ejb-jar-bnd
              xmlns="http://websphere.ibm.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd" 
      	(http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd%27) version="1.1">
          
      	<message-driven name="PriceChangeMDBBean">
              	<jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" />
         	</message-driven>
      </ejb-jar-bnd>
      注: EJB バインディング・ファイルを使用する際は、ibm-ejb-jar-bnd.xml ファイル内の activation-spec-binding-name 属性が、server.xml ファイルに指定されたアクティベーション・スペックのプロパティー ID 値を指している必要があります。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dep_msg_mdbsib
ファイル名: twlp_dep_msg_mdbsib.html