12.14. jms-jca-provider を使用した IBM Websphere MQ の設定
手順12.5 タスク
アダプターの設定
アダプター名はwmq.jmsra.rarです。このファイルを JBoss Enterprise SOA Platform のSOA_ROOT/jboss-as/server/PROFILE/deployディレクトリーにコピーします。コンテキストファクトリーの確認
初期コンテキストファクトリーがcom.ibm.mq.jms.context.WMQInitialContextFactoryであることを確認します。QueueManager の設定
queueManager 設定が <activation-config> にあることを確認します。独自の Websphere MQ インストールでキューマネージャーを設定する必要があります。(すべての宛先キューがキューマネージャーで設定されていることに注意してください。)チャネルの設定
チャネル設定が <activation-config> プロパティーにあることを確認します。注記キューマネージャーは、さまざまな種類のチャネルを使用するように設定できます。クライアントはサーバー接続チャネルを介して接続します。Websphere MQ インストールの一部として、デフォルトのサーバー接続チャネル(SYSTEM.DEF.SVRCONN)が追加されますが、特に拡張(XA)トランザクションを使用している場合は、専用のチャンネルを作成することが推奨されます。transportType の設定
transportType を編集します。この設定は、<activation-config> プロパティーにあります。WebSphere MQ は、2 つのトランスポートタイプ(クライアントとバインディング)をサポートします。設定の編集
テキストエディターで設定ファイルを開き、編集します。以下は、<jms-jca-provider> 設定の例です。ゲートウェイプロバイダーの設定方法を示します。<jms-jca-provider adapter="wmq.jmsra.rar" connection-factory="MyAppXAConnectionFactory" jndi-context-factory="com.ibm.mq.jms.context.WMQInitialContextFactory" name="WMQ-JCA"> <property name="max-xa-sessions-per-connection" value="1"/> <jms-bus busid="quickstartGwChannel"> <jms-message-filter dest-name="QUEUE1_JMS" dest-type="QUEUE" transacted="true"/> </jms-bus> <activation-config> <property name="queueManager" value="TQM"/> <property name="channel" value="Q1CONN"/> <property name="hostName" value="localhost"/> <property name="port" value="1414"/> <property name="transportType" value="CLIENT"/> </activation-config> </jms-jca-provider>注記これは実際には、リスナーのゲートウェイ/メッセージ対応特性を決定する <jms-listener> 設定です。ただし、Websphere MQ は、ゲートウェイリスナープロバイダーとしてのみ使用されます。つまり、この設定は Websphere MQ のメッセージ対応リスナーとしては機能しません。これは、プロバイダーに定義された宛先(バス)へのルーティングメッセージに対して、適切な JNDI プロバイダー URL (ServiceInvoker によって使用される)を指定していないためです。JCA アダプターの設定
<activation-config> は JCA アダプターを設定し、宛先からメッセージを取得するようにします。メッセージを宛先に配信する方法を決定しません。以下は、メッセージ対応リスナーのプロバイダーとして使用できる設定の例です。<jms-jca-provider adapter="wmq.jmsra.rar" connection-factory="MyAppXAConnectionFactory" jndi-URL="localhost:1414/CHANX" jndi-context-factory="com.ibm.mq.jms.context.WMQInitialContextFactory" name="WMQ-JCA"> <property name="max-xa-sessions-per-connection" value="1"/> <jms-bus busid="quickstartEsbChannel"> <jms-message-filter dest-name="QUEUE2_JMS" dest-type="QUEUE" transacted="true"/> </jms-bus> <activation-config> <property name="queueManager" value="TQM"/> <property name="channel" value="Q2CONN"/> <property name="hostName" value="localhost"/> <property name="port" value="1414"/> <property name="transportType" value="CLIENT"/> </activation-config> </jms-jca-provider>標準の JMS プロバイダーの作成
標準の JMS プロバイダー設定の作成設定は以下のようになります。<jms-provider connection-factory="MyAppConnectionFactory" jndi-URL="localhost:1414/CHAN1" jndi-context-factory="com.ibm.mq.jms.context.WMQInitialContextFactory" name="JMS"> <jms-bus busid="quickstartGwChannel2"> <jms-message-filter dest-name="QUEUE3_JMS" dest-type="QUEUE"/> </jms-bus> </jms-provider>注記標準プロバイダーでは、アダプターも <activation-config> 設定もありません。標準プロバイダーで定義された宛先からメッセージを受信するリスナーは、JCA Adapter Inflow を使用してメッセージを取得しません。代わりに、JNDI を使用して宛先を検索し、メッセージを取得する必要があります。つまり、Websphere MQ では、jndi-URL を常に指定する必要があります(JCA の場合は Message-Aware リスナーを提供する宛先にのみ必要であることに注意してください)。保存
ファイルを保存して終了します。
警告
Websphere MQ 6.0 を実行している場合は、この例外が発生する可能性があります。
Message: Unable to get a MQ series Queue Manager or Queue Connection. Reason: failed to create connection javax.jms. JMSSecurityException: MQJMS2013: invalid security authentication supplied for MQQueueManager
これはパーミッションの問題が原因で発生します。この問題を修正するには、JBoss Enterprise Service Bus を実行するユーザーを mqm グループに追加します。