IBM MQ に接続するためのメッセージ駆動型 Bean のデプロイ

メッセージ駆動型 Bean (MDB) を使用して、IBM MQ に接続できます。

手順

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

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

    <featureManager>
         <feature>jmsMdb-3.2</feature>
         <feature>wmqJmsClient-2.0</feature>
         <feature>jndi-1.0</feature>
    </featureManager>

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

    注: wmqJmsClient-2.0 フィーチャーは、JMS 1.1 仕様と JMS 2.0 仕様の両方のフィーチャーをサポートします。ただし、 JMS 1.1 仕様に準拠したフィーチャーのみを使用する場合は、wmqJmsClient-1.1 フィーチャーを使用することを選択できます。
  2. server.xml ファイルに以下の項目を追加することによって、IBM MQ リソース・アダプターのロケーションを指定します。
    <variable name="wmqJmsClient.rar.location" value="/path/to/wmq/rar/wmq.jmsra.rar"/>
    ここで、 value 属性は、IBM MQ リソース・アダプター・ファイル wmq.jmsra.rar への絶対パスを指定します。

    サポートされるバージョンの詳細と wmq.jmsra.rar ファイルの入手については、IBM MQ 技術情報 1633761 を参照してください。wmq.jmsra.rar ファイルを入手し、Fix Central からインストールします。

  3. MDB が特定の JMS 宛先でリスナーとして機能するよう、JMS リソース・アダプターを使用する JCA アクティベーション・スペックを構成します。メッセージング・エンジンと対話するよう MDB を構成するさまざまな方法を、以下に示します。
    1. アクティベーション・スペックのプロパティーを使用して MDB を構成します。
      server.xml ファイル内でプロパティーを定義して、MDB がこのプロパティーを使用して特定の JMS 宛先で listen できるようにします。
      <jmsActivationSpec id="JMSSample/JMSSampleMDB">
           <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </jmsActivationSpec>
      
      <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 ファイルで定義されたアクティベーション・スペック・プロパティーを使用する。

      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.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/>
      </jmsActivationSpec>
      
      <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 値を指している必要があります。

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

ファイル名: twlp_dep_msg_mdbwmq.html