Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
22.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 リソースアダプターをデプロイおよび設定する手順を説明します。これは、設定ファイルを手動で編集したり、管理 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 てください。
EAP 6.x では、WebSphere MQ 8.0 以降はサポートされないことに注意してください。
前提条件
作業を開始する前に、WebSphere MQ リソースアダプターのバージョンを確認して、一部の WebSphere MQ 設定プロパティーについて理解しておく必要があります。
- WebSphere MQ リソースアダプターは、
wmq.jmsra-VERSION.rar
と呼ばれる Resource Archive(RAR)ファイルとして提供されます。バージョン 7.5.0.x を使用する必要があります。必要なバージョンの詳細は、上記の注記を参照してください。 - 以下の 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 のドキュメントを参照してください。
手順22.8 リソースアダプターの手動でのデプロイ
wmq.jmsra-VERSION.rar
ファイルをEAP_HOME/standalone/deployments/
ディレクトリーにコピーします。- サーバー設定ファイルにリソースアダプターを追加します。
- エディターで
EAP_HOME/standalone/configuration/standalone-full.xml
ファイルを開きます。 - 設定ファイルで
urn:jboss:domain:resource-adapters
サブシステムを見つけます。 - このサブシステムに対して定義されているリソースアダプターがない場合、最初に以下を置き換えます。
<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>
- リソースアダプターの設定は、トランザクションサポートとリカバリーが必要であるかどうかによって異なります。トランザクションサポートが必要ない場合は、以下の最初の設定手順を選択します。トランザクションサポートが必要な場合は、2 番目の設定手順を選択します。どちらの例でも、
config-property
name
要素は大文字と小文字を区別し、例にあるように入力する必要があります。- 非トランザクションデプロイメントの場合、
<!-- <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> <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 名の実際のバージョンに置き換えてください。 - トランザクションデプロイメントの場合は、
<!-- <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> <security-domain>RECOVERY_SECURITY_DOMAIN</security-domain> </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_NAME と PASSWORD は有効なユーザー名とパスワードに置き換える必要もあります。注記トランザクションをサポートするために、<transaction-support> 要素がXATransaction
に設定されていました。XA リカバリーをサポートするために、<recovery> 要素が接続定義に追加されました。
- 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 名の実際のバージョンに置き換えてください。
手順22.9 リソースアダプターを使用するように MDB コードを変更します。
- 以下のように、MDB コードで ActivationConfigProperty および ResourceAdapter を設定します。すべての
propertyName
要素は大文字と小文字を区別するため、以下のように入力する必要があります。@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 名の実際のバージョンに置き換えてください。