このセクションでは、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」を参照してください。
必要な JAR ファイルのクラスパスへの追加
MQ オプションを使用するには、WebSphere MQ クライアントまたは WebSphere MQ サーバー インストールの jar ファイルを追加する必要があります。MQ クライアントは http://www.ibm.com/software/integration/wmq/clients/ からダウンロードできます。
WebSphere MQ 9 の場合、次の jar ファイルが必要です。
com.ibm.mq.allclient.jar
WebSphere MQ 8 の場合、次の jar ファイルが必要です。
com.ibm.mq.allclient.jar
WebSphere MQ 7 の場合、次の 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
WebSphere MQ 6 の場合、次の jar ファイルが必要です。
com.ibm.mq.jar
connector.jar
上記のすべてのバージョンについて、[WebSphere MQ Installation directory]/java/lib
から jar ファイルを取得することができます。
SOAtest/Virtualize のクラスパスに jar ファイルを追加するには、以下の操作を行います。
- [Parasoft] > [設定] を選択します。
- [Parasoft] > [システム プロパティ] ページを開きます。
- [Jar の追加] をクリックし、必要な Jar ファイルを選択して追加します。
Java ランタイム
IBM Java ランタイムは、SOAtest/Virtualize に含まれる Java ランタイムとは異なる CipherSuite 名を使用します。 製品と共にインストールされた Java を使用するには、次の JVM プロパティを設定します。
-J-Dcom.ibm.mq.cfg.useIBMCipherMappings=false
あるいは、IBM JDK を使用することもできます。IBM Java は次の Web サイトから入手できます。
https://www.ibm.com/developerworks/java/jdk/IBM JRE を使用するように SOAtest と Virtualize を構成する場合、詳細については「Java ランタイムの設定」 を参照してください。
MQ オプションの設定
適切なツールの [トランスポート] タブで [トランスポート] メニューから [Websphere MQ] を選択すると、以下のオプションが [トランスポート] タブの左側のパネルに表示されます。
MQ アドレス
MQ 接続設定を指定する場合、以下のいずれかのモードを選択できます。
- デフォルト モード: 接続の詳細情報 (たとえばホスト、ポート、チャネルなど) を手動で入力できます。
- CCDT モード: 接続の詳細情報が記載されたクライアント チャネル定義テーブル (CCDT) ファイルを指定できます。
- バインディング モード: キュー マネージャーと接続アプリケーションが同じシステムで実行されている場合、このモードを使用します。IBM WebSphere MQ Java API は、Java Native Interface (JNI) を使用してキュー マネージャーに直接接続します。バインディング トランスポートを使用するには、IBM MQ Java Native Interface ライブラリにアクセスできる環境で JMS の IBM MQ クラスを実行する必要があります。
デフォルト モードを使用する場合、以下のフィールドを設定します。
オプション | 説明 |
---|---|
ホスト | IBM MQ を実行しているホストの名前を指定します。 |
ポート | IBM MQ のポート番号 (デフォルトは 1414) を指定します。 |
チャネル | サーバー定義チャネルの名前を指定します。 |
キュー マネージャー | キュー マネージャーの名前を指定します。 |
Put キュー | メッセージの送信先のキューを指定します。 |
Get キュー | メッセージの取得先のキューを指定します。 |
CCDT モードを使用する場合、以下のフィールドを設定します。
オプション | 説明 |
---|---|
CCDT ファイル | CCDT ファイル (.tab 拡張子) の場所を指定します。 |
キュー マネージャー | キュー マネージャーの名前を指定します。 |
Put キュー | メッセージの送信先のキューを指定します。 |
Get キュー | メッセージの取得先のキューを指定します。 |
バインディング モードを使用している場合、以下のフィールドを設定します。
オプション | 説明 |
---|---|
キュー マネージャー | キュー マネージャーの名前を指定します。 |
Put キュー | メッセージの送信先のキューを指定します。 |
Get キュー | メッセージの取得先のキューを指定します。 |
認証
リクエストを認証するには、[認証の実行] を有効にし、[ユーザー名] および [パスワード] を入力します。不正なユーザー名とパスワードが使用された場合、リクエストは認証されません。
その他のパラメーター
[キープアライブ接続] を有効にすると、テストでキュー マネージャーへの接続が維持され、後続のテスト間で MQ ブラウズ カーソルを使用できるようになります。無効にすると、このテストの実行後にキュー マネージャーへの接続が閉じられます。 後続のテストでは新しい接続が開かれます。デフォルトでオンになっています。
メッセージ交換パターン
[メッセージ交換パターン] で使用可能なオプションは次のとおりです。
同期レスポンスを期待する: SOAtest/Virtualize がレスポンスを受信するかどうかを指定します。[同期レスポンスを期待する] が選択されている場合、SOAtest/Virtualize はメッセージを送信し、レスポンスを受信します。[同期レスポンスを期待する] が選択されていない場合、SOAtest/Virtualize は一方向のメッセージを送信し、レスポンスを受信しません。
MQRFH2 ヘッダー
このセクションは、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" ヘッダーを生成します。
- メッセージ コンテンツ記述子: このパネルでは
<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> (Application [user] defined properties) フォルダーの構成を可能にします。
<usr>
フォルダーのコンテンツ モデルは以下の特性があります。- コロンを含まない任意の有効な XML 名を要素名として使用できる。
- 単純な要素 (グループではない) のみ許可される。
- すべての要素が文字列のデフォルト タイプを扱う。
- すべての要素はオプションだが、フォルダー内で複数回発生しない。
- MQRFH2 インスタンスは 1 つ以下の <usr> フォルダーを含めることができる。
- Java Messaging Service: このパネルでは <jms> (Java Messaging Service) フォルダーの構成を可能にします。<jms> フォルダーのコンテンツ モデルは、以下の MQRFH2 JMS フィールドを含みます。
- Dst - JMSDestination ヘッダー フィールドを表します。
- Div - JMSDeliveryMode ヘッダー フィールドを表します。
- Exp - JMSExpiration ヘッダー フィールドを表します。
- Pri - JMSPriority ヘッダー フィールドを表します。
- Tms - JMSTimestamp ヘッダー フィールドを表します。
- Cid - JMSCorrelationID ヘッダー フィールドを表します。
- Rto - JMSReplyTo ヘッダー フィールドを表します。
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 メッセージ
[Put メッセージ] で使用可能なオプションは次のとおりです。
- MQPutMessageOptions.options: MQQueue.put() のアクションを制御します。以下の値を任意、または何も使用しないように指定できます。
- MQPMO_SYNCPOINT: リクエストが通常の作業単位のプロトコル内で動作することを意味します。メッセージは作業単位がコミットされるまで作業単位外で見ることができません。作業単位がバックアウトされた場合はメッセージが削除されます。
- MQPMO_NO_SYNCPOINT: リクエストが通常の作業単位のプロトコル内で動作することを意味します。メッセージは直ちに有効となり、作業単位がバックアウトされても削除されません。このオプションまたは MQPMO_SYNCPOINT のどちらも指定しない場合、作業単位プロトコルの Put リクエストが含められるかどうかは環境に依存します。MQPMO_SYNCPOINT を参照してください。MQPMO_SYNCPOINT を MQPMO_NO_SYNCPOINT と一緒に指定することはできません。
- MQPMO_NO_CONTEXT: コンテキストがないことを示すために、識別コンテキストおよび登録元コンテキストの両方が設定されます。これは、 MQMD 構造体 のコンテキスト フィールドが次の値に設定されることを意味します。
- 文字フィールドは空白
- バイト フィールドは Null
- 数値フィールドはゼロ
- MQPMO_SET_IDENTITY_CONTEXT: メッセージが関連するコンテキスト情報を持つことを意味します。アプリケーションが MQMD 構造体で識別コンテキストを指定します。登録元コンテキストの情報はキュー マネージャーによって MQPMO_DEFAULT_CONTEXT と同様の方法で生成されます。
- MQPMO_SET_ALL_CONTEXT: メッセージが関連するコンテキスト情報を持つことを意味します。アプリケーションが MQMD 構造体で識別コンテキストおよび登録元コンテキストを指定します。
- MQPMO_FAIL_IF_QUIESCING: このオプションはキュー マネージャーが静止状態の場合に MQPUT 命令または MQPUT1 命令が失敗するように強制します。
- MQPMO_NEW_MSG_ID: キュー マネージャーは MQMD 構造体の MsgId フィールドの内容を新しいメッセージ識別子で置き換えます。このメッセージ識別子はメッセージとともに送信され、 MQPUT 命令または MQPUT1 命令の出力でアプリケーションに戻されます。
- MQPMO_NEW_CORREL_ID: キュー マネージャーは MQMD 構造体の CorrelId フィールドの内容を、新しい相関識別子で置き換えます。この相関識別子はメッセージとともに送信され、 MQPUT 命令または MQPUT1 命令の出力でアプリケーションに返されます。
- MQPMO_LOGICAL_ORDER: このオプションは、キュー マネージャーにアプリケーションがメッセージをグループおよび論理メッセージのセグメントに登録する方法を通知します。MQPUT 命令でのみ指定できます。 MQPUT1 命令では有効ではありません。このオプションの詳細については、 WebSphere MQ アプリケーション プログラミング リファレンスを参照してください。
- MQPMO_ALTERNATE_USER_AUTHORITY: MQPUT1 命令の ObjDesc パラメーターの AlternateUserId フィールドに、キューにメッセージを挿入する権限の確認に使用されるユーザー識別子が含まれることを示します。命令は、この AlternateUserId が指定のオプションでキューを開くために許可される場合にのみ成功します。アプリケーションを実行しているユーザー識別子にその許可が与えられているかどうかは関係ありません。
- MQPMO_RESOLVE_LOCAL_Q: メッセージが挿入されるローカル キューの名前で MQPMO 構造体の ResolvedQName を満たすため、およびローカル キューをホストするローカル キュー マネージャーの名前で ResolvedQMgrName を満たすためにこのオプションを使用します。
- MQQueue.access() のキュー オープン オプション:
- MQOO_OUTPUT: メッセージを挿入するキューを開きます。キューは後続の MQPUT 命令で使用するために開かれます。
MQOO_PASS_IDENTITY_CONTEXT: メッセージがキューに挿入されるときに MQPMO_PASS_IDENTITY_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。メッセージに MQOO_SAVE_ALL_CONTEXT オプションで開かれる入力キューから識別コンテキスト情報を与えます。MQOO_OUTPUT オプションは指定する必要があります。
- MQOO_PASS_ALL_CONTEXT: メッセージがキューに挿入されるときに MQPMO_PASS_ALL_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。MQOO_SAVE_ALL_CONTEXT オプションで開かれた入力キューからメッセージに識別コンテキストおよび登録元コンテキストの情報を与えます。このオプションは MQOO_PASS_IDENTITY_CONTEXT を含むので、MQOO_PASS_IDENTITY_CONTEXT を指定する必要はありません。MQOO_OUTPUT オプションは指定する必要があります。
- MQOO_SET_ALL_CONTEXT: メッセージがキューに挿入されたときに MQPMO_SET_ALL_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。これは、メッセージに MQPUT または MQPUT1() 命令上で指定された MsgDesc 引数に含まれる識別コンテキストおよび登録元コンテキストの情報を与えます。MQOO_OUTPUT オプションは指定する必要があります。
MQOO_SET_IDENTITY_CONTEXT: メッセージがキューに挿入されたときに MQPMO_SET_IDENTITY_CONTEXT オプションが PutMsgOpts パラメーターで指定されることを許可します。これは、 MQPUT() 命令または MQPUT1 命令で指定された MsgDesc パラメーターに含まれる識別コンテキストの情報をメッセージに与えます。このオプションは MQOO_PASS_IDENTITY_CONTEXT を含むので、MQOO_PASS_IDENTITY_CONTEXT を指定する必要はありません。MQOO_OUTPUT オプションは指定する必要があります。
- MQOO_ALTERNATE_USER_AUTHORITY: ObjDesc 引数の AlternateUserId フィールドは、この MQOPEN 命令の検証に使用するためにユーザー識別子を含みます。命令は、この AlternateUserId が指定した接続オプションでオブジェクトを開くために許可される場合にだけ成功です。アプリケーションを実行しているユーザー識別子にその許可が与えられているかどうかは関係ありません。
- MQOO_FAIL_IF_QUIESCING: キュー マネージャーが静止状態の場合、 MQOPEN 命令は失敗します。このオプションはすべてのオブジェクト タイプに有効です。
MQMD.report: 別のメッセージについてのレポート メッセージです。このフィールドは SOAtest/Virtualize がどのレポートまたはレスポンス メッセージが必要か、アプリケーション メッセージ データが含まれるかどうか、そしてまたどのようにレポートや返信内のメッセージや相関 ID が設定されるかを指定するために、元のメッセージを送信することを可能にします。MQC クラスからの 1 つ以上の定数を含みます。
次の中からそれぞれ 1 つのタイプを選択します。
- 例外:
- MQRO_EXCEPTION: メッセージ チャネル エージェントは、メッセージが別のキュー マネージャーに送信され、指定の宛先キューに届かなかった場合にこのタイプのレポートを生成します。たとえば、宛先キューまたは中間送信キューが一杯であったり、メッセージがキューより大きい場合などです。
MQRO_EXCEPTION_WITH_DATA: 元のメッセージのアプリケーション メッセージ データの最初の 100 バイトはレポート メッセージに含まれるということ以外、MQRO_EXCEPTION と同様です。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。
- MQC.MQRO_EXCEPTION_WITH_FULL_DATA: 例外は必要なデータすべてをレポートします。元のメッセージのすべてのアプリケーション メッセージ データがレポート メッセージに含まれるということ以外、MQRO_EXCEPTION と同じです。
- 有効期限:
- MQRO_EXPIRATION: 有効期限が経過してメッセージがアプリケーションへの配信の前に破棄される場合、キュー マネージャーによってこのタイプのレポートが生成されます。このオプションを設定しない場合、この理由でメッセージが破棄されてもレポート メッセージは生成されません。
MQRO_EXPIRATION_WITH_DATA: これは、元のメッセージからアプリケーション メッセージ データの最初の 100バイトがレポート メッセージに含まれていることを除いて、MQRO_EXPIRATION と同じです。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。
MQRO_EXPIRATION_WITH_FULL_DATA: 元のメッセージからすべてのアプリケーション メッセージ データがレポート メッセージに含まれることを除いて、 MQRO_EXPIRATION と同じです。
- 受信時に確認:
- MQRO_COA: このタイプのレポートは、メッセージが送信先キューに置かれたときに宛先キューを所有しているキュー マネージャーによって生成されます。元のメッセージのメッセージ データは、レポート メッセージに含まれていません。メッセージが作業単位の一部として挿入され、宛先キューがローカル キューである場合、キュー マネージャーによって生成された COA レポート メッセージは、作業単位がコミットされている場合にのみ取得できます。
- MQRO_COA_WITH_DATA: 元のメッセージのアプリケーション メッセージ データの最初の 100 バイトがレポート メッセージに含まれていることを除いて、MQRO_COA と同じです。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。
- MQRO_COA_WITH_FULL_DATA: 元のメッセージのすべてのアプリケーション メッセージ データがレポート メッセージに含まれていることを除いて、MQRO_COA と同じです。
- 送信時に確認:
- MQRO_COD: アプリケーションがキューからメッセージを削除する方法で、宛先キューからメッセージを取得するとき、このタイプのレポートはキュー マネージャーによって生成されます。元のメッセージのメッセージ データは、レポート メッセージに含まれていません。メッセージ作業単位の一部として取得されている場合は、レポートメッセージは同じ作業単位内で生成されます。そのため作業単位がコミットされるまでレポートを利用できません。作業単位がバックアウトされる場合、レポートは送信されません。
- MQRO_COD_WITH_DATA: 元のメッセージのアプリケーション メッセージ データの最初の 100 バイトは、レポート メッセージに含まれていることを除いて、 MQRO_COD と同じです。元のメッセージが 1 つ以上の MQ ヘッダー構造を持つ場合、それらはレポート メッセージに含まれ、アプリケーション データの 100 バイトに追加されます。
- MQRO_COD_WITH_FULL_DATA: 元のメッセージのすべてのアプリケーション メッセージ データがレポート メッセージに含まれていることを除いて、MQRO_COD と同じです。
- MQRO_NEW_MSG_ID: これはデフォルトの動作であり、レポートまたは応答がこのメッセージの結果として生成された場合、新しい MsgId がレポートまたは応答メッセージのために生成されることを示しています。
- MQRO_PASS_MSG_ID: レポートまたは応答がこのメッセージの結果として生成されている場合は、このメッセージの MsgId はレポートまたは応答メッセージの MsgId にコピーされます。
- MQRO_COPY_MSG_ID_TO_CORREL_ID: これはデフォルトの動作であり、レポートまたは応答がこのメッセージの結果として生成された場合、このメッセージの MsgId がレポートまたは返信メッセージ の CorrelId にコピーされることを示しています。
- MQRO_PASS_CORREL_ID: レポートまたは応答が、このメッセージの結果として生成されている場合は、このメッセージの CorrelId がレポートや応答メッセージの CorrelId にコピーされます。
- MQRO_DEAD_LETTER_Q: これはデフォルトの動作であり、メッセージが送信先キューに配信できない場合に配信不能キューにメッセージを配置します。メッセージが送信者から要求された場合は例外レポート メッセージが生成されます。
- MQRO_DISCARD_MSG: 宛先キューに配信できない場合に、メッセージを破棄します。メッセージが送信者から要求された場合は例外レポート メッセージが生成されます。
- MQRO_PASS_DISCARD_AND_EXPIRY: このオプションがメッセージに設定されており、レポートまたは応答がそのために生成された場合は、レポートのメッセージ記述子が次のものを継承します。
- 設定されていた場合は MQRO_DISCARD_MSG。
- メッセージの残りの有効期限 (有効期限レポートでない場合)。有効期限レポートの場合は有効期限を 60 秒に設定されます。
- 例外:
- Expiry: 有効期限 (10 分の 1 秒単位) を入力します。メッセージを 挿入するアプリケーションによって設定されます。メッセージの有効期限が経過した後は、キュー マネージャーによって破棄の対象となります。メッセージが MQC.MQRO_EXPIRATION フラグの 1 つを指定した場合、メッセージが廃棄されるとレポートが生成されます。
- Correlation ID: メッセージの correlationID フィールドに使用する相関 ID を入力します。
- Message sequence number: グループ内の論理メッセージのシーケンス番号を入力します。
- Reply queue manager name: 送信できるメッセージに返信またはレポート (応答) するキュー マネージャーの名前を入力します。
- Reply queue name: 返信を送信できるキューの名前を入力します。
- Put application name: メッセージを挿入するアプリケーションの名前を入力します。
- Originating application data: 元のアプリケーションのデータを入力します。これは、メッセージの送信元についての追加情報を提供するために SOAtest によって使用されます。
- User ID: ユーザー ID を入力します。これはメッセージのアイデンティティの一部であり、どのユーザーが発信したかを識別します。
Get メッセージ
[Get メッセージ] で使用可能なオプションは次のとおりです。
MQGetMessageOptions.options: SOAtest/Virtualize によって内部的に呼び出される MQQueue.get() の動作をコントロールするオプションです。
以下の値を任意、または何も使用しないように指定できます。
MQGMO_WAIT: SOAtest/Virtualize は適切なメッセージが到達するまで待機します。待機する最大時間は WaitInterval で指定されます。
MQGMO_NO_WAIT: SOAtest/Virtualize は適切なメッセージが利用できない場合は待機しません。これは、 MQGMO_WAIT オプションの反対であり、プログラムのドキュメンテーションを支援するために定義されています。
- MQGMO_SYNCPOINT: リクエストが通常の作業単位のプロトコル内で動作することを意味します。メッセージは他のアプリケーションに対して利用不可能なものとしてマークされますが、作業単位がコミットされたときにのみキューから削除されます。作業単位がバックアウトされた場合は、メッセージが再び利用可能になります。
- MQGMO_NO_SYNCPOINT: リクエストが通常の作業単位のプロトコル内で動作することを意味します。メッセージは直ちにキューから削除されます (ブラウズ要求である場合を除く)。作業単位をバックアウトすることによって、メッセージを再び利用可能にすることはできません。
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_BROWSE_MSG_UNDER_CURSOR: MQGMO の MatchOptions フィールドで指定された MQMO_* オプションに関わらず、ブラウズ カーソルが指すメッセージを破壊することなく取得します。ブラウズ カーソルが指すメッセージは、MQGMO_BROWSE_FIRST または MQGMO_BROWSE_NEXT オプションのいずれかを使用して最後に取得されたものです。どちらの命令もこのキューに対して発行されていない場合、またはブラウズ カーソル下にあったメッセージが破壊されて取得されている場合は、命令に失敗します。ブラウズ カーソルの位置は、この命令によって変更されません。
MQGMO_MSG_UNDER_CURSOR: MQGMO の MatchOptions フィールドで指定された MQMO_* オプションに関わらず、ブラウズ カーソルが指すメッセージを取得します。メッセージはキューから削除されます。ブラウズ カーソルが指すメッセージは、MQGMO_BROWSE_FIRST または MQGMO_BROWSE_NEXT オプションのいずれかを使用して最後に取得されたものです。
- MQGMO_LOCK: ブラウズされたメッセージをロックし、キューのために開いているその他のハンドルからメッセージを見えなくします。
MQGMO_UNLOCK: メッセージをアンロックします。アンロックされるメッセージは、 MQGMO_LOCK オプションを用いた MQGET 命令によってあらかじめロックされている必要があります。このハンドルでロックされたメッセージがない場合、命令は MQRC_NO_MSG_LOCKED を完了します。
- MQGMO_ACCEPT_TRUNCATED_MSG: メッセージ バッファーがメッセージ全体を保持するのに小さすぎる場合、 MQGET 命令がバッファーが保持できるだけのメッセージをバッファーに満たすことを可能にします。
- MQGMO_FAIL_IF_QUIESCING: キュー マネージャーが静止状態の場合に MQGET 命令が失敗することを強制します。z/OS 上でまた、接続 (CICS または IMS アプリケーション) が静止状態の場合にこのオプションは MQGET 命令が失敗することを強制します。
MQGMO_CONVERT: SOAtest/Virtualize のデータ変換をリクエストします。変換は、データがメッセージ バッファーにコピーされる前に characterSet および MQMessage のエンコーディング属性に一致させます。
- MQGetMessageOptions.matchOptions: どのメッセージを回収するかを決定する選択条件です。次の照合オプションを設定できます。
- MQMO_MATCH_CORREL_ID: 取得されるメッセージは、 MQGET 命令の MsgDesc パラメーターの CorrelId フィールドの値に一致する相関識別子を持っている必要があります。この照合は、適用するかもしれないその他の照合 (たとえば、メッセージ識別子など) に追加されます。
- MQMO_MATCH_GROUP_ID: 取得されるメッセージは、MQGET 命令の MsgDesc パラメーターの GroupId フィールドの値に一致するグループ識別子を持っている必要があります。この照合は、適用するかもしれないその他の照合 (たとえば、相関識別子など) に追加されます。
- MQMO_MATCH_MSG_ID: 取得されるメッセージは、MQGET 命令の MsgDesc パラメーターの MsgId フィールドの値に一致するメッセージ識別子を持っている必要があります。この照合は、適用するかもしれないその他の照合 (たとえば、相関識別子など) に追加されます。
- MQMO_MATCH_MSG_SEQ_NUMBER: 取得されるメッセージは、MQGET 命令の MsgDesc パラメーターの MsgSeqNumber フィールドの値に一致するメッセージ シーケンス番号を持っている必要があります。この照合は、適用するかもしれないその他の照合 (たとえば、グループ識別子など) に追加されます
- MQMO_NONE: 返されるメッセージを選択する上で照合は使用しないでください。キュー上のすべてのメッセージが取得対象です。MQMO_NONE はプログラムのドキュメント化を助けます。このオプションはその他の MQMO_* オプションと使用されることは意図されていません。しかし、値がゼロであると、そのような使用が検出されません。
- MQQueue.access() のキュー オープン オプション:
MQOO_BROWSE: メッセージをブラウズするためにキューを開きます。このキューは次のいずれかのオプションを用いた後続の MQGET 命令に使用するために開かれます: MQGMO_BROWSE_FIRST、 MQGMO_BROWSE_NEXT および MQGMO_BROWSE_MSG_UNDER_CURSOR。これはキューが現在 MQOO_INPUT_EXCLUSIVE のために開いている場合にも許可されます。MQOO_BROWSE オプションを用いた MQOPEN 命令はブラウズ カーソルを確立し、キュー上の最初のメッセージの前に物理的に位置づけます。
- MQOO_INPUT_AS_Q_DEF: デフォルトで定義されたキューを使用したメッセージを取得するためにキューを開きます。キューは、後続の MQGET 命令で使用するために開かれます。アクセスの種類は、 DefInputOpenOption キュー属性の値によって、共有か排他的となります。
- MQOO_INPUT_SHARED: 共有アクセスのメッセージを取得するためにキューを開きます。キューは、後続の MQGET 命令で使用するために開かれます。命令は、キューがこのオプションまたは MQOO_INPUT_SHARED を持つその他のアプリケーションによって現在開かれている場合に成功します。しかしキューが MQOO_INPUT_EXCLUSIVE で現在開かれている場合、エラー コード MQRC_OBJECT_IN_USE で失敗します。
- MQOO_INPUT_EXCLUSIVE: 排他的アクセスでメッセージを取得するためにキューを開きます。キューは、後続の MQGET 命令で使用するために開かれます。命令は、このオプションまたは任意の種類の入力のその他のアプリケーションによってキューが現在開かれている場合にエラー コード MQRC_OBJECT_IN_USE で失敗します。
MQOO_ALTERNATE_USER_AUTHORITY: ObjDesc 引数の AlternateUserId フィールドは、この MQOPEN 命令の検証に使用するためにユーザー識別子を含みます。この命令は、指定したアクセス オプションでオブジェクトを開くために AlternateUserId が認証される場合にのみ成功します。SOAtest/Virtualize を実行しているユーザー識別子にその許可が与えられているかどうかは関係ありません。
- MQOO_FAIL_IF_QUIESCING: キュー マネージャーが静止状態の場合、 MQOPEN 命令は失敗します。このオプションはすべてのオブジェクト タイプに有効です。
- 待機間隔: MQQueue.get() 命令が適切なメッセージを受信するのを待機する最大時間 (ミリ秒) を入力します。MQC.MQGMO_WAIT に関連して使用されます。MQMO_WAIT が選択されない場合は効果がありません。値 -1 は MQGMO_NO_WAIT を選択することと同等です。
キュー マネージャー オプション
[キュー マネージャー オプション] で使用可能なオプションは次のとおりです。
- MQQueueManager バインド オプション: バインド オプションを指定しているキュー マネージャー名への接続を生成します。
MQCNO_FASTPATH_BINDING: このオプションでは、 SOAtest とローカル キュー マネージャー エージェントを同じ実行ユニットの一部であるようにします。これは、 SOAtest/Virtualize とローカル キュー マネージャーのエージェントの実行が別々のユニットで実行される通常のバインディング方法とは対照的になります。
MQCNO_STANDARD_BINDING: この接続オプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムから キュー マネージャーを保護します。
MQCNO_SHARED_BINDING: この接続オプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムからのキュー マネージャーを保護します。しかし、いくつかのリソースは SOAtest/Virtualize とローカル キュー マネージャー エージェントの間で共有されます。
MQCNO_ISOLATED_BINDING: このオプションは、マネージャー とローカル キュー マネージャー エージェント (キューイング操作を管理するコンポーネント) の実行を (一般的には、独立したプロセスで) 別々のユニットで実行するようにします。この設定は、キュー マネージャーの完全性を維持します。つまり、誤ったプログラムから キュー マネージャーを保護します。SOAtest/Virtualize プロセスやローカル キュー マネージャー エージェントがリソースを共有しないという点で、互いに分離されます。
MQ キュー マネージャー プロパティ
[MQ キュー マネージャー プロパティ] で使用可能なオプションは次のとおりです。
MQC.CCSID_PROPERTY: これはクライアントで使用される CCSID を構成します。これは、バインディング モードで WebSphere MQ に直接接続するときには適用できません。
この値を変更すると、接続するキューマネージャーの WebSphere MQ ヘッダー情報の変換方法に影響があります。WebSphere MQ ヘッダーのすべてのデータは、 MQMessage.applicationIdData と MQMessage.putApplicationName フィールドのデータを除いて、 ASCII コードセットの不可変部から引き出されます。
これらの 2 つのフィールドの ASCII コードセットの可変部から文字を使用しない場合は、 CCSID を 819 から他の任意の ASCII コード セットに変更できます。接続先のキュー マネージャーのそれと同じになるようにクライアント CCSID を変更する場合は、メッセージ ヘッダーの変換を行わないため、キュー マネージャーでのパフォーマンス上の利点を得ることができます。CCSID フィールドに値が提供されていない場合は、 SOAtest/Virtualize はデフォルト値として 1208 (UTF-8) を提供します。
SSL
以下の SSL の設定を行うことができます。
CipherSuite
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』ブックを参照してください。
以下はスクリプトのアクセス キーです。
- QueueManager – mqManager
- GetQueue – mqGetQue
- PutQueue – mqPutQue
- PutMessage – mqPutMessage
- GetMessage – mqGetMessage
- PutMessageOptions – mqPutMessageOptions
- GetMessageOptions – mqGetMessageOptions
挿入するメッセージの Expiry 時間を 999 に変更する場合の例:
from com.ibm.mq import *
def changeExpiry(context):
putMessage = context.get("mqPutMessage")
putMessage.expiry = 999
上記のスクリプトでツールを実行完了すると、Traffic ヘッダーの Expiry フィールドが 999 に変更されます。
★Add MQ Hook タブで設定された任意のオプションは、他のタブで設定した任意のオプションよりも上書きして優先されます。
WebSphere MQ エラー メッセージの解釈
失敗が発生したとき、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など) で文字データを送受信する場合のベスト プラクティスについて説明します。
Put メッセージ
XML、CSV、固定長、またはプレーン テキストなどの文字データを送信する場合、フォーマット タイプには MQFMT_STRING 定数 MQSTR の値を設定します。
SOAP Client ツールの場合、ツールの [その他] タブの [発信メッセージのエンコード] オプションで、リクエストのエンコードに使用する文字セットを指定します。
他のツール (REST Client、Messaging Client など) は、製品の [その他] 設定タブに設定された文字エンコーディングを使用します。
使用可能なオプションは以下のとおりです。
- IBM_037
- IBM_437
- ISO_8859_1
- US_ASCII
- UTF16
- UTF8
他のエンコーディングを指定した場合、MQ メッセージの文字セットは、デフォルトの MQCCSI_Q_MGR になります。これは、「メッセージの文字データは、キュー マネージャーの文字セットを使用する」ことを意味します。
Get メッセージ
クライアント ツールの MQGetMessageOptions の下にある [MQGMO_CONVERT] ボックスを有効にします ( [トランスポート] タブ)。
このオプションは、キュー マネージャーにメッセージをクライアント ツールの文字セットに変換するよう指示します。メッセージの本来の文字セットが、クライアントでサポートされている文字セット (IBM_037、IBM_437 など) に含まれていない場合、この設定が重要です。
変換を実行するために使用される文字セットは、(前のセクションで説明した) put メッセージの設定の場合と同じです。