JCA リソース・アダプターに接続するためのメッセージ駆動型 Bean のデプロイ

メッセージ駆動型 Bean (MDB) を使用して、JCA リソース・アダプターに接続することができます。

このタスクについて

メッセージ駆動型 Bean (MDB) アプリケーションを Liberty にデプロイする場合、server.xml ファイルで構成を実行して、各 MDB がメッセージをリソース・アダプターから受信できるようにする必要があります。このトピックで説明している構成例では、メッセージ駆動型 Bean と JMS リソース・アダプターのみが含まれたアプリケーションを扱います。アプリケーションでセッション Bean も使用する場合は、ejbLite-3.1 フィーチャーを組み込む必要があります。

構成プロパティーは、使用されている特定のリソース・アダプターによって異なります。

手順

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

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

    <featureManager>
         <feature>mdb-3.1</feature>
         <feature>jca-1.6</feature>
         <feature>jndi-1.0</feature>
    </featureManager>
  2. JCA リソース・アダプターに必要な他のすべてのフィーチャーを構成します。
  3. MDB がリスナーとして機能するよう、リソース・アダプターを使用する JCA アクティベーション・スペックを構成します。以下の例では、MDB がメッセージング・エンジンと対話するように構成することができるさまざまな方法を示します。これらの例は、JMS リソース・アダプターに固有のものです。
    1. アクティベーション・スペックのプロパティーを使用して MDB を構成します。
      server.xml ファイル内でプロパティーを定義して、MDB がこのプロパティーを使用して特定の JMS 宛先で listen できるようにします。
      <activationSpec id="JMSSample/JMSSampleMDB">
           <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </activationSpec>
      
      <jmsQueue id=”jndi/MDBQ” jndiName="jndi/MDBQ">
           <properties.wmqJms baseQueueName="MYQ" baseQueueManagerName="myQM"/>
      </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 ファイルで定義されるアクティベーション・スペック・プロパティーとともにアノテーションを使用して MDB を構成します。

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

      @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 を構成します。

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

      アクティベーション・スペック・プロパティー情報を server.xml ファイルに追加します。
      <activationSpec id="PriceChangeAS">
           <properties.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </activationSpec>
      
      <jmsQueue id=”jms/TriggerQ” jndiName="jms/TriggerQ">
           <properties.wmqJms baseQueueName="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_mdbjca
ファイル名: twlp_dep_msg_mdbjca.html