このセクションでは、SOAtest と Virtualize を IBM MQ にアクセスするためにセットアップする方法について説明します。IBM MQ へのアクセスは、Parasoft ツールを構成することにより実現されます。このセクションの内容: IBM WebSphere MQ Java API と標準 JMS API このセクションでは、標準の JMS API ではなく、IBM WebSphere MQ Java API を使用したサービスのテストについて言及しています。JMS API を使用して IBM WebSphere MQ のメッセージを送受信することを意図している場合は、JMS トランスポートのオプションを選択し、「JMS」を参照してください。 MQ オプションを使用するには、WebSphere MQ クライアントまたは WebSphere MQ サーバー インストールの jar ファイルを追加する必要があります。MQ クライアントは http://www.ibm.com/software/integration/wmq/clients/ からダウンロードできます。 WebSphere MQ 9 の場合、次の jar ファイルが必要です。 WebSphere MQ 8 の場合、次の jar ファイルが必要です。 WebSphere MQ 7 の場合、次の jar ファイルが必要です。 WebSphere MQ 6 の場合、次の jar ファイルが必要です。 上記のすべてのバージョンについて、 SOAtest/Virtualize のクラスパスに jar ファイルを追加するには、以下の操作を行います。 IBM Java ランタイムは、SOAtest/Virtualize に含まれる Java ランタイムとは異なる CipherSuite 名を使用します。 製品と共にインストールされた Java を使用するには、次の JVM プロパティを設定します。 あるいは、IBM JDK を使用することもできます。IBM Java は次の Web サイトから入手できます。 https://www.ibm.com/developerworks/java/jdk/IBM JRE を使用するように SOAtest と Virtualize を構成する場合、詳細については「Java ランタイムの設定」 を参照してください。 適切なツールの [トランスポート] タブで [トランスポート] メニューから [Websphere MQ] を選択すると、以下のオプションが [トランスポート] タブの左側のパネルに表示されます。 MQ 接続設定を指定する場合、以下のいずれかのモードを選択できます。 デフォルト モードを使用する場合、以下のフィールドを設定します。 オプション 説明 CCDT モードを使用する場合、以下のフィールドを設定します。 オプション 説明 バインディング モードを使用している場合、以下のフィールドを設定します。 オプション 説明 リクエストを認証するには、[認証の実行] を有効にし、[ユーザー名] および [パスワード] を入力します。不正なユーザー名とパスワードが使用された場合、リクエストは認証されません。 [キープアライブ接続] を有効にすると、テストでキュー マネージャーへの接続が維持され、後続のテスト間で MQ ブラウズ カーソルを使用できるようになります。無効にすると、このテストの実行後にキュー マネージャーへの接続が閉じられます。 後続のテストでは新しい接続が開かれます。デフォルトでオンになっています。 [メッセージ交換パターン] で使用可能なオプションは次のとおりです。 同期レスポンスを期待する: SOAtest/Virtualize がレスポンスを受信するかどうかを指定します。[同期レスポンスを期待する] が選択されている場合、SOAtest/Virtualize はメッセージを送信し、レスポンスを受信します。[同期レスポンスを期待する] が選択されていない場合、SOAtest/Virtualize は一方向のメッセージを送信し、レスポンスを受信しません。 このセクションは、WebSphere Message Broker ( http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=/com.ibm.etools.mft.doc/aq06920_.htm) に属するメッセージ ブローカーで、メッセージの送受信に使用する MQRFH2 ヘッダーの構成を可能にします。 [MQRFH2 ヘッダー] 項目では、リクエスト メッセージの異なるパーツを構成できます。そして SOAtest/Virtualize は指定された設定に基づいて "folders" ヘッダーを生成します。 パブリッシュ/サブスクライブ コマンド: このパネルでは JMS メッセージのコンテンツについての詳細は、 http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/topic/com.ibm.etools.mft.doc/ac24863_.htm (JMS message structure) を参照してください。 MQRFH2 Get メッセージ オプション: このパネルでは [MQRFH2 ヘッダーを Get メッセージ用 XML フォーマットに変換] オプションのコントロールを可能にします。このオプションを有効化している場合、レスポンス メッセージの MQRFH2 ヘッダーが読み取り可能な XML 形式に変換されます。これは、XML 出力ツール (たとえば、XML Data Bank、XML Transformer) の適用を可能にします。このオプションがオフの場合、レスポンスメッセージの MQRFH2 ヘッダーは表示できない文字列を含む可能性があります。 [Put メッセージ] で使用可能なオプションは次のとおりです。 MQOO_PASS_IDENTITY_CONTEXT: メッセージがキューに挿入されるときに MQPMO_PASS_IDENTITY_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。メッセージに MQOO_SAVE_ALL_CONTEXT オプションで開かれる入力キューから識別コンテキスト情報を与えます。MQOO_OUTPUT オプションは指定する必要があります。 MQOO_SET_IDENTITY_CONTEXT: メッセージがキューに挿入されたときに MQPMO_SET_IDENTITY_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。これは、 MQPUT() 命令または MQPUT1 命令で指定された MsgDesc パラメーターに含まれる識別コンテキストの情報をメッセージに与えます。このオプションは MQOO_PASS_IDENTITY_CONTEXT を含むので、MQOO_PASS_IDENTITY_CONTEXT を指定する必要はありません。MQOO_OUTPUT オプションは指定する必要があります。 MQMD.report: 別のメッセージについてのレポート メッセージです。このフィールドは SOAtest/Virtualize がどのレポートまたはレスポンス メッセージが必要か、アプリケーション メッセージ データが含まれるかどうか、そしてまたどのようにレポートや返信内のメッセージや相関 ID が設定されるかを指定するために、元のメッセージを送信することを可能にします。MQC クラスからの 1 つ以上の定数を含みます。 次の中からそれぞれ 1 つのタイプを選択します。 MQRO_EXCEPTION_WITH_DATA: 元のメッセージのアプリケーション メッセージ データの最初の 100 バイトはレポート メッセージに含まれるということ以外、MQRO_EXCEPTION と同様です。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。 MQRO_EXPIRATION_WITH_DATA: これは、元のメッセージからアプリケーション メッセージ データの最初の 100バイトがレポート メッセージに含まれていることを除いて、MQRO_EXPIRATION と同じです。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。 MQRO_EXPIRATION_WITH_FULL_DATA: 元のメッセージからすべてのアプリケーション メッセージ データがレポート メッセージに含まれることを除いて、 MQRO_EXPIRATION と同じです。 [Get メッセージ] で使用可能なオプションは次のとおりです。 MQGetMessageOptions.options: SOAtest/Virtualize によって内部的に呼び出される MQQueue.get() の動作をコントロールするオプションです。 以下の値を任意、または何も使用しないように指定できます。 MQGMO_WAIT: SOAtest/Virtualize は適切なメッセージが到達するまで待機します。待機する最大時間は WaitInterval で指定されます。 MQGMO_NO_WAIT: SOAtest/Virtualize は適切なメッセージが利用できない場合は待機しません。これは、 MQGMO_WAIT オプションの反対であり、プログラムのドキュメンテーションを支援するために定義されています。 MQGMO_BROWSE_FIRST: キューが MQOO_BROWSE オプションを使用して開かれたときに、ブラウズ カーソルが確立されます。それは、キューの最初のメッセージの前に論理的に配置されます。その後、MQGMO_BROWSE_FIRST、MQGMO_BROWSE_NEXT、または破壊せずにキューからメッセージを取得する MQGMO_BROWSE_MSG_UNDER_CURSOR オプションを指定して MQGET 命令を使用できます。ブラウズ カーソルは、キュー上のメッセージの中で、位置をマークし、そこから MQGMO_BROWSE_NEXT を用いた次の MQGET 命令で適切なメッセージを検索します。 MQGMO_BROWSE_NEXT: MQGET 命令で指定された選択基準を満たすキュー上の次のメッセージにブラウズ カーソルを進めます。メッセージは、SOAtest/Virtualize に戻ってもキューに残ります。キューがブラウズのためにオープンされた後、ハンドルを使用した最初のブラウズ コールは、MQGMO_BROWSE_FIRST または MQGMO_BROWSE_NEXT オプションを指定するかどうかと同じ効果があります。 MQGMO_MSG_UNDER_CURSOR: MQGMO の MatchOptions フィールドで指定された MQMO_* オプションに関わらず、ブラウズ カーソルが指すメッセージを取得します。メッセージはキューから削除されます。ブラウズ カーソルが指すメッセージは、MQGMO_BROWSE_FIRST または MQGMO_BROWSE_NEXT オプションのいずれかを使用して最後に取得されたものです。 MQGMO_UNLOCK: メッセージをアンロックします。アンロックされるメッセージは、 MQGMO_LOCK オプションを用いた MQGET 命令によってあらかじめロックされている必要があります。このハンドルでロックされたメッセージがない場合、命令は MQRC_NO_MSG_LOCKED を完了します。 MQGMO_CONVERT: SOAtest/Virtualize のデータ変換をリクエストします。変換は、データがメッセージ バッファーにコピーされる前に characterSet および MQMessage のエンコーディング属性に一致させます。 MQOO_BROWSE: メッセージをブラウズするためにキューを開きます。このキューは次のいずれかのオプションを用いた後続の MQGET 命令に使用するために開かれます: MQGMO_BROWSE_FIRST、 MQGMO_BROWSE_NEXT および MQGMO_BROWSE_MSG_UNDER_CURSOR。これはキューが現在 MQOO_INPUT_EXCLUSIVE のために開いている場合にも許可されます。MQOO_BROWSE オプションを用いた MQOPEN 命令はブラウズ カーソルを確立し、キュー上の最初のメッセージの前に物理的に位置づけます。 MQOO_ALTERNATE_USER_AUTHORITY: ObjDesc 引数の AlternateUserId フィールドは、この MQOPEN 命令の検証に使用するためにユーザー識別子を含みます。この命令は、指定したアクセス オプションでオブジェクトを開くために AlternateUserId が認証される場合にのみ成功します。SOAtest/Virtualize を実行しているユーザー識別子にその許可が与えられているかどうかは関係ありません。 [キュー マネージャー オプション] で使用可能なオプションは次のとおりです。 MQCNO_FASTPATH_BINDING: このオプションでは、 SOAtest とローカル キュー マネージャー エージェントを同じ実行ユニットの一部であるようにします。これは、 SOAtest/Virtualize とローカル キュー マネージャーのエージェントの実行が別々のユニットで実行される通常のバインディング方法とは対照的になります。 MQCNO_STANDARD_BINDING: この接続オプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムから キュー マネージャーを保護します。 MQCNO_SHARED_BINDING: この接続オプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムからのキュー マネージャーを保護します。しかし、いくつかのリソースは SOAtest/Virtualize とローカル キュー マネージャー エージェントの間で共有されます。 MQCNO_ISOLATED_BINDING: このオプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムから キュー マネージャーを保護します。SOAtest/Virtualize プロセスやローカル キュー マネージャー エージェントがリソースを共有しないという点で、互いに分離されます。 [MQ キュー マネージャー プロパティ] で使用可能なオプションは次のとおりです。 MQC.CCSID_PROPERTY: これはクライアントで使用される CCSID を構成します。これは、バインディング モードで WebSphere MQ に直接接続するときには適用できません。 以下の SSL の設定を行うことができます。 CipherSuite は、指定された MQ チャネルの SSL 接続のために使用されます。IBM MQ のドキュメントを参照して、CipherSpec に基づいて選択する CipherSuite を決定してください。 ドロップダウンメニューから固定 CipherSuite を指定するか、パラメータライズされた変数を入力して、トラフィックに基づいて CipherSuite を指定できます。 (任意) キュー マネージャーによって提示された証明書が [ピア名] パラメーターで指定された基準と一致することを検証するために、ピア名を指定します。サーバー証明書は、キュー マネージャーによって提示された証明書の識別名 (DN) とこのパラメーターを一致させます。 固定ピア名を指定するか、パラメータライズされた変数を入力して、トラフィックに基づいてピア名を指定できます。 この設定は、クライアント サイド SSL (キュー マネージャーによるクライアントの認証) で使用するキーストアを指定します。[Parasoft] > [環境設定] ですべてのプロジェクトのキーストア構成を使用するようにツールを構成するか (セキュリティ設定 を参照)、スイート レベルのグローバル設定プロパティを追加して、スイート内のすべてのツールで使用可能なキーストア設定を構成できます。 詳細については グローバル設定の追加 (SOAtest) または グローバル設定の追加 (Virtualize)を参照してください。 MQ チャネルのクライアントが自身を認証する必要がない場合は、[キーストア] を提供する必要はありません。 サーバー サイド SSL (クライアントによるキュー マネージャーの認証) で使用されるトラストストアを指定します。[Parasoft] > [環境設定] ですべてのプロジェクトのトラストストア構成を使用するようにツールを構成するか (セキュリティ設定 を参照)、スイート レベルのグローバル設定プロパティを追加して、スイート内のすべてのツールで使用可能なトラストストア設定を構成できます。 詳細については グローバル設定の追加 (SOAtest) または グローバル設定の追加 (Virtualize)を参照してください。CipherSuite を指定して SSL 接続を試行するようにツールが実行されると、トラストストア、キーストア、およびキーストア パスワードを変更することはできません。これらが変更された場合、この変更を有効にする前に SOAtest/Virtualize を再起動する必要があります。 キーストアを使用している場合は、 Unlimited Strength Java Cryptography Extension をダウンロードし、インストールする必要があります。詳細については 「JCE 前提条件」 を参照してください。 [スクリプト フック] オプションは、Jython、Java、Groovy、および JavaScript などのスクリプト言語を使用して、MQ Properties のカスタマイズを可能にします。 スクリプト ユーティリティの使用の詳細については、チュートリアルのスクリプト セクションを参照してください。スクリプト API のリストについては、[ヘルプ] > [ヘルプ目次] または [Parasoft] > [ヘルプ] をクリックし、『Parasoft SOAtest Extensibility API』または『Parasoft Virtualize Extensibility API』ブックを参照してください。 以下はスクリプトのアクセス キーです。 挿入するメッセージの Expiry 時間を 999 に変更する場合の例: 上記のスクリプトでツールを実行完了すると、Traffic ヘッダーの Expiry フィールドが 999 に変更されます。 注意: [Add MQ Hook] タブで設定された任意のオプションは、他のタブで設定した任意のオプションよりも上書きして優先されます。 失敗が発生したとき、MQ は失敗の理由コードを返します。SOAtest/Virtualize のエラー メッセージは、ユーザーが解釈できるようにこれらと同じ理由コードをレポートします。 MQ 理由コードのリストおよびそれらの意味については、 IBM WebSphere Web サイトを参照してください: http://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.tro.doc/q040710_.htm このセクションでは、クライアント ツール (SOAP Client、REST Client、Messaging Clientなど) で文字データを送受信する場合のベスト プラクティスについて説明します。 XML、CSV、固定長、またはプレーン テキストなどの文字データを送信する場合、フォーマット タイプには MQFMT_STRING 定数 MQSTR の値を設定します。 SOAP Client ツールの場合、ツールの [その他] タブの [発信メッセージのエンコード] オプションで、リクエストのエンコードに使用する文字セットを指定します。 他のツール (REST Client、Messaging Client など) は、製品の [その他] 設定タブに設定された文字エンコーディングを使用します。 使用可能なオプションは以下のとおりです。 他のエンコーディングを指定した場合、MQ メッセージの文字セットは、デフォルトの MQCCSI_Q_MGR になります。これは、「メッセージの文字データは、キュー マネージャーの文字セットを使用する」ことを意味します。 クライアント ツールの MQGetMessageOptions の下にある [MQGMO_CONVERT] ボックスを有効にします ( [トランスポート] タブ)。 このオプションは、キュー マネージャーにメッセージをクライアント ツールの文字セットに変換するよう指示します。メッセージの本来の文字セットが、クライアントでサポートされている文字セット (IBM_037、IBM_437 など) に含まれていない場合、この設定が重要です。 変換を実行するために使用される文字セットは、(前のセクションで説明した) put メッセージの設定の場合と同じです。必要な JAR ファイルのクラスパスへの追加
com.ibm.mq.allclient.jar
com.ibm.mq.allclient.jar
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mq.headers.jar
com.ibm.mq.pcf.jar
com.ibm.mq.commonservices.jar
connector.jar
com.ibm.mq.jar
connector.jar
[WebSphere MQ Installation directory]/java/lib
から jar ファイルを取得することができます。Java ランタイム
-J-Dcom.ibm.mq.cfg.useIBMCipherMappings=false
MQ オプションの設定
MQ アドレス
ホスト IBM MQ を実行しているホストの名前を指定します。 ポート IBM MQ のポート番号 (デフォルトは 1414) を指定します。 チャネル サーバー定義チャネルの名前を指定します。 キュー マネージャー キュー マネージャーの名前を指定します。 Put キュー メッセージの送信先のキューを指定します。 Get キュー メッセージの取得先のキューを指定します。 CCDT ファイル CCDT ファイル (.tab 拡張子) の場所を指定します。 キュー マネージャー キュー マネージャーの名前を指定します。 Put キュー メッセージの送信先のキューを指定します。 Get キュー メッセージの取得先のキューを指定します。 キュー マネージャー キュー マネージャーの名前を指定します。 Put キュー メッセージの送信先のキューを指定します。 Get キュー メッセージの取得先のキューを指定します。 認証
その他のパラメーター
メッセージ交換パターン
MQRFH2 ヘッダー
<mcd>
(Message content descriptor) フォルダーの構成を可能にします。<mcd>
フォルダーには WebSphere MQ メッセージのメッセージ データの構成を説明する要素を含めることができます。これらはすべて文字列であり、大文字と小文字を区別します。<psc>
(Publish/subscribe command) フォルダーの構成を可能にします。<psc>
フォルダーはコマンド メッセージをブローカーに伝達するために使用されます。NameValueData フィールドでは psc フォルダーは1つのみ許可されます。詳細については、 http://www-01.ibm.com/support/knowledgecenter/SSKM8N_7.0.0/com.ibm.etools.mft.doc/aq06950_.htm (コマンド メッセージ) を参照してください。<usr>
フォルダーのコンテンツ モデルは以下の特性があります。Put メッセージ
メッセージ ID がレポートまたは応答メッセージの生成方法を指定することができます。
レポートまたは応答メッセージの相関 ID の設定方法を制御するには、次のいずれかを指定します。
宛先キューに配信できない元のメッセージの配置を制御するには、次のいずれかを指定できます。Get メッセージ
キュー マネージャー オプション
MQ キュー マネージャー プロパティ
この値を変更すると、接続するキューマネージャーの WebSphere MQ ヘッダー情報の変換方法に影響があります。WebSphere MQ ヘッダーのすべてのデータは、 MQMessage.applicationIdData と MQMessage.putApplicationName フィールドのデータを除いて、 ASCII コードセットの不可変部から引き出されます。
これらの 2 つのフィールドの ASCII コードセットの可変部から文字を使用しない場合は、 CCSID を 819 から他の任意の ASCII コード セットに変更できます。接続先のキュー マネージャーのそれと同じになるようにクライアント CCSID を変更する場合は、メッセージ ヘッダーの変換を行わないため、キュー マネージャーでのパフォーマンス上の利点を得ることができます。CCSID フィールドに値が提供されていない場合は、 SOAtest/Virtualize はデフォルト値として 1208 (UTF-8) を提供します。SSL
CipherSuite
ピア名
キーストア
トラストストア
スクリプト フック:
from com.ibm.mq import *
def changeExpiry(context):
putMessage = context.get("mqPutMessage")
putMessage.expiry = 999
WebSphere MQ エラー メッセージの解釈
データを送受信する - ベスト プラクティス
Put メッセージ
Get メッセージ
Overview
Content Tools