24.8. WebSphere MQ リソースアダプターのデプロイ

WebSphere MQ

WebSphere MQ は、分散型システム上のアプリケーションの相互通信を可能にする、IBM の Messaging Oriented Middleware (MOM) ソフトウェアです。この機能は、メッセージとメッセージキューを使用することによって実現されます。WebSphere MQ はメッセージキューへのメッセージ配信と、メッセージチャネルを使用したその他のキューマネージャーへのデータ転送を行います。WebSphere MQ の詳細については、WebSphere MQ を参照してください。

概要

本トピックでは、Red Hat JBoss Enterprise Application Platform 6 における WebSphere MQ Resource Adapter のデプロイと設定の手順について説明します。この作業は、設定ファイルを手動で編集する方法もしくは管理 CLI ツールや Web ベースの管理コンソールを使用する方法で行うことができます。

注記

WebSphere MQ Resource Adapter バージョン 7.5.0.3 とそれ以前のバージョンには、周期的なリカバリが失敗し、XA 例外が発生する既知の問題があります。JBoss EAP サーバーログに以下のようなメッセージが記録されます。
WARN  [com.arjuna.ats.jta] (Periodic Recovery) ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_INVAL: javax.transaction.xa.XAException: The method 'xa_recover' has failed with errorCode '-5'.
そのため、バージョン 7.5.0.4 以上を使用することが推奨されます。この問題の詳細については、http://www-01.ibm.com/support/docview.wss?uid=swg1IC97579 を参照してください。
前提条件

作業を開始する前に、WebSphere MQ リソースアダプターのバージョンを確認して、一部の WebSphere MQ 設定プロパティーについて理解しておく必要があります。

  • WebSphere MQ リソースアダプターは、wmq.jmsra-VERSION.rar と呼ばれる Resource Archive (RAR) ファイルとして提供されます。7.5.0.0 およびそれ以降のバージョンを使用する必要があります。
  • 以下の WebSphere MQ 設定プロパティーの値を知っておく必要があります。これらのプロパティーに関する詳細については、WebSphere MQ 製品ドキュメントを参照してください。
    • MQ.QUEUE.MANAGER: WebSphere MQ キューマネージャーの名前
    • MQ.HOST.NAME: WebSphere MQ キューマネージャーへの接続に使用するホストの名前
    • MQ.CHANNEL.NAME: WebSphere MQ キューマネージャーへの接続に使用するサーバーチャネル
    • MQ.QUEUE.NAME: 宛先キューの名前
    • MQ.TOPIC.NAME: 宛先トピックの名前
    • MQ.PORT: WebSphere MQ キューマネージャーへの接続に使用するポート
    • MQ.CLIENT: トランスポートタイプ
  • 送信接続には、以下の設定プロパティーに精通している必要があります。
    • :MQ.CONNECTIONFACTORY.NAME: リモートシステムへの接続を提供する接続ファクトリーインスタンスの名前

注記

IBM によって提供されるデフォルト設定は次のとおりです。これらの設定は変更することがあります。詳細については、については、WebSphere MQ のドキュメンテーションを参照してください。

手順24.8 リソースアダプターの手動でのデプロイ

  1. WebSphereMQ リソースアダプターにトランザクションサポートが必要な場合は、wmq.jmsra-VERSION.rar アーカイブを再パッケージ化し、mqetclient.jar が含まれるようにします。これには次のコマンドを使用できます。
    [user@host ~]$ jar -uf wmq.jmsra-VERSION.rar mqetclient.jar
    必ず VERSION を正しいバージョン番号に置き換えてください。
  2. wmq.jmsra-VERSION.rar ファイルを EAP_HOME/standalone/deployments/ ディレクトリーにコピーします。
  3. サーバー設定ファイルにリソースアダプターを追加します。
    1. エディターで EAP_HOME/standalone/configuration/standalone-full.xml ファイルを開きます。
    2. 設定ファイルで urn:jboss:domain:resource-adapters サブシステムを探します。
    3. このサブシステムに対して定義されているリソースアダプターがない場合、最初に以下を置き換えます。
      <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"/>
      以下のように置き換えます。
      <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
          <resource-adapters>
              <!-- <resource-adapter> configuration listed below -->
          </resource-adapters>
      </subsystem>
    4. リソースアダプターの設定は、トランザクションサポートとリカバリーが必要であるかどうかによって異なります。トランザクションサポートが必要でない場合は以下の最初の設定手順を選択します。トランザクションサポートが必要な場合は 2 番目の設定手順を選択します。
      • 非トランザクションデプロイメントの場合、<!-- <resource-adapter> configuration listed below --> を以下に置き換えます。
        <resource-adapter>
            <archive>
                wmq.jmsra-VERSION.rar
            </archive>
            <transaction-support>NoTransaction</transaction-support>
            <connection-definitions>
                <connection-definition 
                        class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" 
                        jndi-name="java:jboss/MQ.CONNECTIONFACTORY.NAME" 
                        pool-name="MQ.CONNECTIONFACTORY.NAME">
                    <config-property name="hostName">
                        MQ.HOST.NAME
                    </config-property>
                    <config-property name="port">
                        MQ.PORT
                    </config-property>
                    <config-property name="channel">
                        MQ.CHANNEL.NAME
                    </config-property>
                    <config-property name="transportType">
                        MQ.CLIENT
                    </config-property>
                    <config-property name="queueManager">
                        MQ.QUEUE.MANAGER
                    </config-property>
                    <security>
                        <security-domain>MySecurityDomain</security-domain>
                    </security>
               </connection-definition>
            </connection-definitions>
            <admin-objects>
                <admin-object 
                        class-name="com.ibm.mq.connector.outbound.MQQueueProxy" 
                        jndi-name="java:jboss/MQ.QUEUE.NAME" 
                        pool-name="MQ.QUEUE.NAME">
                    <config-property name="baseQueueName">
                        MQ.QUEUE.NAME
                    </config-property>
                    <config-property name="baseQueueManagerName">
                        MQ.QUEUE.MANAGER
                    </config-property>
               <admin-object class-name="com.ibm.mq.connector.outbound.MQTopicProxy"
                        jndi-name="java:jboss/MQ.TOPIC.NAME" pool-name="MQ.TOPIC.NAME">
                    <config-property name="baseTopicName">
                        MQ.TOPIC.NAME
                    </config-property>
                    <config-property name="brokerPubQueueManager">
                        MQ.QUEUE.MANAGER
                    </config-property>
               </admin-object>
              </admin-object>
            </admin-objects>
        </resource-adapter>
        必ず VERSION を RAR 名の実際のバージョンに置き換えてください。
      • トランザクションデプロイメントの場合、<!-- <resource-adapter> configuration listed below --> を以下に置き換えます。
        <resource-adapter>
            <archive>
                wmq.jmsra-VERSION.rar
            </archive>
            <transaction-support>XATransaction</transaction-support>
            <connection-definitions>
                <connection-definition 
                        class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" 
                        jndi-name="java:jboss/MQ.CONNECTIONFACTORY.NAME" 
                        pool-name="MQ.CONNECTIONFACTORY.NAME">
                    <config-property name="hostName">
                        MQ.HOST.NAME
                    </config-property>
                    <config-property name="port">
                        MQ.PORT
                    </config-property>
                    <config-property name="channel">
                        MQ.CHANNEL.NAME
                    </config-property>
                    <config-property name="transportType">
                        MQ.CLIENT
                    </config-property>
                    <config-property name="queueManager">
                        MQ.QUEUE.MANAGER
                    </config-property>
                   <security>
                        <security-domain>MySecurityDomain</security-domain>
                    </security>
                    <recovery>
                        <recover-credential>
                            <user-name>USER_NAME</user-name>
                            <password>PASSWORD</password>
                        </recover-credential>
                    </recovery>
                </connection-definition>
            </connection-definitions>
            <admin-objects>
                <admin-object 
                        class-name="com.ibm.mq.connector.outbound.MQQueueProxy" 
                        jndi-name="java:jboss/MQ.QUEUE.NAME" 
                        pool-name="MQ.QUEUE.NAME">
                    <config-property name="baseQueueName">
                        MQ.QUEUE.NAME
                    </config-property>
                    <config-property name="baseQueueManagerName">
                        MQ.QUEUE.MANAGER
                    </config-property>
                </admin-object>
                <admin-object class-name="com.ibm.mq.connector.outbound.MQTopicProxy"
                        jndi-name="java:jboss/MQ.TOPIC.NAME" pool-name="MQ.TOPIC.NAME">
                    <config-property name="baseTopicName">
                        MQ.TOPIC.NAME
                    </config-property>
                    <config-property name="brokerPubQueueManager">
                        MQ.QUEUE.MANAGER
                    </config-property>
                </admin-object>
            </admin-objects>
        </resource-adapter>
        必ず VERSION を RAR 名の実際のバージョンに置き換えてください。さらに、USER_NAMEPASSWORD も有効なユーザー名とパスワードに置き換える必要があります。

        注記

        トランザクションをサポートするため、<transaction-support> 要素が XATransaction に設定されました。XA リカバリーをサポートするするため、<recovery> 要素が接続定義に追加されました。
    5. JBoss EAP 6 で EJB3 メッセージングシステムのデフォルトプロバイダーを HornetQ から WebSphere MQ に変更するには、urn:jboss:domain:ejb3:1.2 サブシステムを以下のように変更します。
      以下を置き換えます。
      <mdb>
          <resource-adapter-ref resource-adapter-name="hornetq-ra"/>
          <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
      </mdb>
      以下のように置き換えます。
      <mdb>
          <resource-adapter-ref resource-adapter-name="wmq.jmsra-VERSION.rar"/>
          <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
      </mdb>
      必ず VERSION を RAR 名の実際のバージョンに置き換えてください。

手順24.9 リソースアダプターを使用するように MDB コードを変更します。

  • 次のように、MDB コードの ActivationConfigProperty および ResourceAdapter を設定します。
    @MessageDriven( name="WebSphereMQMDB", 
        activationConfig =
        {
            @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
            @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"),
            @ActivationConfigProperty(propertyName = "hostName", propertyValue = "MQ.HOST.NAME"),
            @ActivationConfigProperty(propertyName = "port", propertyValue = "MQ.PORT"),
            @ActivationConfigProperty(propertyName = "channel", propertyValue = "MQ.CHANNEL.NAME"),
            @ActivationConfigProperty(propertyName = "queueManager", propertyValue = "MQ.QUEUE.MANAGER"),
            @ActivationConfigProperty(propertyName = "destination", propertyValue = "MQ.QUEUE.NAME"),
            @ActivationConfigProperty(propertyName = "transportType", propertyValue = "MQ.CLIENT")
        })
        @ResourceAdapter(value = "wmq.jmsra-VERSION.rar")
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public class WebSphereMQMDB implements MessageListener {
    }
    必ず VERSION を RAR 名の実際のバージョンに置き換えてください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。