WebSphere MQ V7.0.1 機能検証 ISE エンタープライズ・ミドルウェア 2009年11月
by user
Comments
Transcript
WebSphere MQ V7.0.1 機能検証 ISE エンタープライズ・ミドルウェア 2009年11月
WebSphere MQ V7.0.1 機能検証 ISE エンタープライズ・ミドルウェア 2009年11月 分散系 2 トピック 分散系 マルチ・インスタンス・キュー・マネージャー 自動再接続クライアント イベントの追加 構成イベント コマンド・イベント その他の拡張 IBM Message Service Client for .NET (XMS for .NET) WCFのMQ用カスタム・チャネルのサポート OCSPサポートの追加 サービス定義ウィザード(MQ Explorer) パブリッシュEXITの追加 Pub/Subの拡張 この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受け ておらず、当資料に記載された内容に関して当ワークショップの主催者である日本アイ・ビー・エム システムズ・エンジニアリング株式会社は何ら保証 するものではありません。 従って、この情報の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、資料の内容によって受けたいかなる被害 に関しても一切の保証をするものではありません。 当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。 3 マルチ・インスタンス・キュー・マネージャー 4 マルチ・インスタンス・キュー・マネージャーとは WebSphere MQ V7.0.1(以下MQ V7.0.1)の新しい可用性ソリューション機能の1つ HAコーディネーター製品(ex. HACMP など)を使用せずに同一キュー・マネージャーを複数マシ ンで稼動させることが可能(Active-Standby構成) 共有キュー・マネージャー・データを外部(NFSや別サーバなど)に配置することで可用性が向上 自動フェール・オーバーが可能 アクティブ・インスタンスで障害が発生した場合、ネットワーク障害で共有キュー・マネージャー・ データに接続されていない場合など、自動でスタンバイ・インスタンスへフェールオーバー 2つ以上のキュー・マネージャー・インスタンスを構成することが可能 3つ目以降のキュー・マネージャー・インスタンスはスタンバイとして開始しておくことは不可 z/OS以外の全プラットフォーム(*)で対応 併せてMQ V7.0.1より strmqm、endmqm、dspmq などにオプションが追加 strmqm -x : マルチ・インスタンスとしてキュー・マネージャーの開始 endmqm -s : アクティブ・インスタンスを停止し、スタンバイ・インスタンスへフェールオーバー dspmq -x : キュー・マネージャー・インスタンスについての情報を表示 など (*) i5/OSとSolarisは現時点(2009.11月)では未対応。詳細は以下参照。 http://www-01.ibm.com/support/docview.wss?uid=swg21398427&myns=swgws&mynp=OCSSFKSJ&mync=R 5 動作イメージ マルチ・インスタンス・キュー・マネージャー通常稼動時 マシンAのキュー・マネージャーがアクティブ・インスタンスとして、マシンBのキュー・マネー ジャーがスタンバイ・インスタンスとして稼動 クライアントはマシンAへのCONNAMEで接続 MQクライアント MQクライアント キューマネージャー・データ マシン A キュー・ キュー・マネージャー: マネージャー:QM1 アクティブ・ アクティブ・インスタンス <QMGRS>/data <QMGRS>/log ネットワーク・ファイル・システム キュー・ キュー・マネージャー・ マネージャー・データを データを所有 6 マシン B キュー・ キュー・マネージャー: マネージャー:QM1 スタンバイ・ スタンバイ・インスタンス 動作イメージ アクティブ・インスタンスがダウンし、スタンバイ・インスタンスへフェール・オーバー開始 マシンBのキュー・マネージャー・インスタンスがキュー・マネージャー・データの所有処理を開始する クライアントからの接続は切断 アプリケーションにはBrokenは返らない Client connections broken MQクライアント MQクライアント マシン B マシン A キュー・マネージャー:QM1 アクティブ・インスタンス フェール・ フェール・オーバー開始 オーバー開始 キュー・ キュー・マネージャー: マネージャー:QM1 スタンバイ・ スタンバイ・インスタンス ネットワーク・ファイル・システム キュー・ キュー・マネージャー・ マネージャー・データの データの所有処理の 所有処理の開始 7 動作イメージ スタンバイ・インスタンスがアクティブ・インスタンスとして稼動開始 キュー・マネージャー・データの所有 クライアントはマシンBへのCONNAMEで再接続 MQクライアント MQクライアント Client connections reconnect マシン A マシン B キュー・マネージャー:QM1 キュー・ キュー・マネージャー: マネージャー:QM1 アクティブ・ アクティブ・インスタンス ネットワーク・ファイル・システム キュー・ キュー・マネージャー・ マネージャー・データを データを所有 8 前提条件 ログ・ディレクトリとデータ・ディレクトリを配置するための共用ネットワーク・ファイルシステム に配置 AIX : NFS v4以上 Windows : Windows共有、CIFS(Common Internet File System)など ファイル・システムの要件 (InfoCenter) http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqzag.do c/fa70111_.htm 同一IDのmqmユーザ/グループを使用 AIXでは同一UID、GIDのmqmユーザ/グループ Windowsではmqmドメイン・ローカル・グループ 注意:Windowsでドメイン・ローカル・グループを使用する理由 ドメイン・ローカル・グループ – ドメイン、およびフォレストのユーザおよびグループを同一メンバーとして所有することができる – ドメイン内のアクセス許可のみに使用することができる ~InfoCenterより~ ローカル・グループの場合 ドメイン・ローカル・グループの場合 9 設定の流れ(AIXの場合) ① キュー・マネージャー・データ用の共用ファイル・システムのセットアップ dataとlogディレクトリ作成 同一UID、GIDのmqmユーザ/グループを作成 作成したディレクトリにアクセス権限(変更可能レベル)を付与 作成したファイルシステムの共有設定(export) キューマネージャー・データ <QMGRS>/data マシン A <QMGRS>/log ① ネットワーク・ファイル・システム 10 マシン B 設定の流れ(AIXの場合) ② 共用ファイル・システムへのアクセス キュー・マネージャーを稼動させる両マシンに①で作成したUID、GIDのmqmユーザと mqmグループの作成 両マシンから共用ファイル・システムをマウント ファイル・システムの検査 /usr/mqm/bin/配下のamqmfsckを実行 例) ./amqmfsck -v マウントしたパス ③ MQ V7.0.1の導入 マシン A マシン B ②、 ③ ②、 ③ ネットワーク・ファイル・システム 11 設定の流れ(AIXの場合) ④ アクティブ・インスタンス・キュー・マネージャーの作成と開始 crtmqm -ld ログパス -md QMGRデータ・パス QMGR名 strmqm -x QMGR名 ⑤ スタンバイ・インスタンス・キュー・マネージャー定義の出力 アクティブ・インスタンスにてdspmqinf コマンドの実行結果としてスタンバイ・インスタンス作 成用のaddmqinfが出力される dspmqinf -o command QMGR名 ⑥ スタンバイ・インスタンス・キュー・マネージャーの作成と開始 ⑤の実行結果のaddmqinfコマンドを使用してスタンバイ・インスタンス作成 例:addmqinf -s QueueManager -v Name=MQ701 -v Directory=MQ701 -v Prefix=/var/mqm -v DataPath=/mnt/NFS4FileSystem/mq701/data/MQ701 マシン A ② マシン B キュー・ キュー・マネージャー: マネージャー:QM1 スタンバイ・ スタンバイ・インスタンス キュー・ キュー・マネージャー: マネージャー:QM1 アクティブ・ アクティブ・インスタンス ④、 ⑤ ⑥ ネットワーク・ファイル・システム 12 設定の流れ(Windowsの場合) ① MQ V7.0.1の導入 Windows環境ではこのタイミングでmqmドメイン・ローカル・グループが作成されるため、 事前にサーバーの役割を「ドメイン・コントローラー」にしておく ② キュー・マネージャー・データ用の共用ファイル・システムのセットアップ dataとlogディレクトリ作成 作成したディレクトリにアクセス権限(変更可能レベル)を付与 Windows環境ではmqmドメイン・ローカル・グループをアクセス許可(変更権限) 作成したファイルシステムの共有設定(Windows共有など) キューマネージャー・データ <QMGRS>/data マシン A <QMGRS>/log キュー・ キュー・マネージャー: マネージャー:QM1 アクティブ・ アクティブ・インスタンス ① マシン B ② ① ネットワーク・ファイル・システム 13 設定の流れ(Windowsの場合) ③ アクティブ・インスタンス・キュー・マネージャーの作成と開始 crtmqm -ld ログパス -md QMGRデータ・パス QMGR名 strmqm -x QMGR名 ④ スタンバイ・インスタンス・キュー・マネージャー定義の出力 アクティブ・インスタンスにてdspmqinf コマンドの実行結果としてスタンバイ・インスタンス作成用の addmqinfが出力される dspmqinf -o command QMGR名 ⑤ スタンバイ・インスタンス・キュー・マネージャーの作成と開始 ⑤の実行結果のaddmqinfコマンドを使用してスタンバイ・インスタンス作成 例:addmqinf -s QueueManager -v Name=MQ701 -v Directory=MQ701 -v Prefix="C:¥Program Files¥IBM¥WebSphere MQ" -v DataPath=¥¥MQFileServer¥WinShareDir¥mq701¥data¥MQ701 マシン A ② マシン B キュー・ キュー・マネージャー: マネージャー:QM1 スタンバイ・ スタンバイ・インスタンス キュー・ キュー・マネージャー: マネージャー:QM1 アクティブ・ アクティブ・インスタンス ⑤ ⑥ ネットワーク・ファイル・システム 14 考慮点・制約 2つ以上のキュー・マネージャー・インスタンスを構成することが可能 可用性を考慮しても3つ目以降はスタンバイとして開始しておくことができないため手動での起 動が必要 IPアドレスは引き継がないため、接続するチャネルにはCONNAMEには両ホストの情 報登録が必要 最初に起動したキュー・マネージャー・インスタンスがアクティブとして稼動 運用にて起動順序を決めておく方が良い マルチ・インスタンス・キュー・マネージャーの情報は、共用キュー・マネージャー・データ・ ディレクトリーにある qm.ini および qmstatus.ini ファイルに保管 Windowsもレジストリではない 同一マルチ・インスタンス・キュー・マネージャーは同一バージョン(MQ V7.0.1以上)であ ることが必須 15 考慮点・制約 ログおよびデータ・ディレクトリーは、FATファイル・システムには格納できない(Windows) Windows環境でマルチ・インスタンス・キュー・マネージャーを稼動させる場合、ドメイン・ コントローラ上に作成しなくてはいけない 通常、業務サーバ(MQやWASなどが稼動)と、管理サーバ(ユーザ情報を管理するドメイン・ コントローラなど)を同一ネットワークセグメントに配置することはないため、セキュリティへの対応 も考慮する必要がある Windows環境でのマルチ・インスタンス・キュー・マネージャーの起動オプションは「手動」 に設定 起動オプションを「自動」で起動すると、-xオプションなし(STANDBYを許可しない)でキュー・ マネージャーが開始されてしまうため 16 参考 以下のディレクトリにキュー・マネージャー情報、アクティブ/スタンバイのホスト名を保持 場所 AIX:/{NFSマウント・ルート名}/{キュー・マネージャー名}/data/MQ701 Windows:¥¥{共有ルート名}¥data 各ファイル Active (WindowsではActive.dat) –現在アクティブ・インスタンスを稼働させているホストの情報を保持 Master (WindowsではMaster.dat) –現在アクティブ・インスタンスを稼働させているホストの情報を保持 –スタンバイ・インスタンスのAmqzxma0(実行コントローラ)が数秒間隔で定期的に当ファイルのロッ クを確認 Standby (WindowsではStandby.dat) –キュー・マネージャーをstandbyモードで稼働させているホストの情報を保持 17 参考 MQエクスプローラでのマルチ・インスタンス・ キュー・マネージャーの表示例 [アクティブ・インスタンス] [スタンバイ・インスタンス] 18 参考 MQエクスプローラでのマルチ・インスタンス・キュー・マネージャーの表示例 リモート・キュー・マネージャーとして登録した場合 19 クライアント自動再接続 20 概要 クライアント自動再接続機能とは クライアント・ライブラリーが障害を検知して、再接続を行う機能 同一、または異なるキュー・マネージャーへの再接続が可能 ライブラリー・レベルでの再接続。アプリケーションはキュー・マネージャーの再接続を検 知しない 自動でコネクション・ハンドルが入れ替わるため、アプリケーションでの考慮が必要 再接続間隔は徐々に長くなる [幕張でのテスト結果より] 再接続タイムアウトを設定することが可能 自動再接続例 MQクライアント MQクライアント マシン A キューマネージャー: キューマネージャー:QM1 マルチ・ マルチ・インスタンス マシン B フェール・オーバー ネットワーク・ファイル・システム 21 キューマネージャー: キューマネージャー:QM1 アクティブ・ アクティブ・インスタンス 設定方法 クライアント自動再接続を使用するための設定項目 自動再接続のON/OFF MQCONNXのMQCNOオプション、mqclient.ini 接続先キュー・マネージャーの登録 MQSERVER環境変数、チャネル定義テーブル タイムアウト時間、自動再接続までの待機時間 mqclient.ini、コールバック関数コンテキスト(MQCBC) 22 設定方法 クライアント自動再接続のON/OFF デフォルトでは自動再接続されないため、MQCONNX、mqclient.iniでの設定が必要 基本的にはMQCONNXの設定が優先 –mqclient.iniにDefRecon=DISABLEDが設定されている場合はこちらが優先 MQCONNX、mqclient.iniのいずれにも設定がない場合は、無効 MQCONNX MQCNOオプションに以下のMQCNOオプションを設定 自動再接続可能なのはクライアント接続のみ (ローカル接続で設定すると MQRC_OPTIONS_ERROR エラーが返る) –MQCNO_RECONNECT_AS_DEF mqclient.ini の設定に従う mqclient.ini に設定がない場合はDISABLED –MQCNO_RECONNECT QmgrName パラメーターの値 MQCONNX と整合する任意のキュー・マネージャーに自動再接続 –MQCNO_RECONNECT_Q_MGR 最初に接続されていたキュー・マネージャーにのみ自動再接続可能 複数インスタンス・キュー・マネージャーを使用している場合、スタンバイ・キュー・マネージャーへの自動再接続 可能 –MQCNO_RECONNECT_DISABLED 自動再接続なし 23 設定方法 (続き) mqclient.iniのCHANNELSスタンザで以下を設定 DefRecon=NO|YES|QMGR|DISABLED –NO MQCONNX でオーバーライドされない限り、 クライアントは自動再接続されない –YES MQCONNX でオーバーライドされない限り、 クライアントは自動再接続する –QMGR MQCONNX でオーバーライドされない限り、 クライアントは、同じキュー・マネージャーに対してのみ自動再接 続する。QMGR オプションは MQCNO_RECONNECT_Q_MGR と同じ –DISABLED クライアント・プログラムが MQCONNX MQI 呼び出しを使用して要求しても、 再接続は無効 24 設定方法 接続先キュー・マネージャーの登録 MQSERVER環境変数 アプリケーションの起動環境に設定 MQSERVER=クライアント接続チャネル名/プロトコル/アドレス情報 #1,アドレス情報 #2 – AIXの場合:export MQSERVER='SYSTEM.AUTO.SVRCONN/TCP/HostA (1414),HostB(1414)‘ – Windowsの場合:SET MQSERVER='SYSTEM.AUTO.SVRCONN/TCP/HostA (1414),HostB(1414)‘ 通常のクライアント接続と同様に「チャネル名」、「プロトコル」、「アドレス情報」を‘/’(スラッシュ)区切りで指定 – アドレス情報はコンマ( , )区切りで複数リストすることが可能 チャネル定義テーブル キュー・マネージャー側でクライアント接続チャネルを定義 DEFINE CHANNEL(チャネル名) CHLTYPE(CLNTCONN) TRPTYPE(プロトコル) CONNAME(アドレス情報#1,アドレス情報#2) QMNAME(キュー・マネージャー名) チャネル定義テーブルに複数のエントリを事前に定義しておく チャネル定義はチャネル定義テーブル・ファイルに保存されるので、アプリケーション側に配布 – ファイル転送を行う場合は、バイナリ・モードで転送 25 設定方法 タイムアウト時間、自動再接続までの待機時間 自動再接続タイムアウト時間 mqclient.iniのCHANNELSスタンザで以下を設定 MQReconnectTimeout = n(秒) –クライアント自動再接続のタイムアウト時間を設定 – デフォルトは1800(30分) 自動再接続までの待機時間 コールバック関数コンテキスト(MQCBC)のReconnectDelayフィールドにミリ秒単位で設定 –自動再接続までの待機時間を変更することが可能 – MQCBCのReasonフィールドの値がMQRC_RECONNECTINGである場合のみ使用 26 前提環境・条件 前提環境 MQサーバー、MQクライアント共にMQ V7.0.1以上の環境 アプリケーションがスレッド化されている チャネルのSHARECNV属性は0よりも大きい デフォルトは“10” 接続先のキュー・マネージャーで下記事象が発生した場合のみ、クライアントは自動再接続を開 始することが可能 通信障害 キュー・マネージャー、リスナーの障害 endmqm –s、またはendmqm –r でキュー・マネージャーが停止した場合 その他のオプションでのendmqm 、STOP CHANNEL 、STOP CONN は該当しない 27 アプリケーションの考慮点 クライアント自動再接続機能は、ライブラリ・レベルで行われるため、クライアント・アプリ ケーションは再接続の検知ができない コールバック機能のイベント・ハンドラーを用いて、接続が再試行されているかどうかを検出する ことが可能 再接続の試行を開始した時には MQRC_RECONNECTING、再接続が正常に行われた後には MQRC_RECONNECTED を使用してイベント・ハンドラーに通知が行われる グループメッセージでの論理的な順序保証のオプションはサポートされない MQPMO_LOGICAL_ORDER MQGMO_LOGICAL_ORDER 同期点なしのパーシステントメッセージの書き込み(MQPUT) は、取り消される可能性 がある 仕掛かり中のトランザクションはバックアウトされる 拡張トランザクション・クライアントはクライアント自動再接続機能をサポートしない 28 イベントの追加 29 イベントの追加 以下のイベントが新規追加 構成イベント MQオブジェクトを操作する際に、生成されるイベント 変更前後のオブジェクト属性、変更操作したユーザーのID等を取得することが可能 コマンド・イベント MQSCコマンドなど、キュー・マネージャーに対して操作を行う際に、生成されるイベント 発行されたコマンドのタイプ、MQSCコマンドのテキスト、実行したユーザーのID等を取得可能 MQSCコマンドの発行 キュー・マネージャー コマンド・イベント・メッセージ オブジェクト作成、 変更 イベント・キュー 構成イベント・メッセージ 30 構成イベント MQオブジェクトを操作する際、生成されるイベント 下の4種のイベントを生成 オブジェクト作成イベント オブジェクト変更イベント オブジェクト削除イベント オブジェクト・リフレッシュ・イベント 監査証跡に利用可能 オブジェクトが予期せずに変更された場合、変更したユーザーおよび時刻などを保管するなど イベント・スイッチ キュー・マネージャー属性でイベント生成のON/OFFを指定 CONFIGEV(DISABLED|ENABLED) イベント・キュー SYSTEM.ADMIN.CONFIG.EVENT イベント・データに含まれる情報 種別 説明 発生元情報 変更が行われたキュー・マネージャー、変更を行ったユーザーの ID、および行われた変更方法 コンテキスト情報計 コマンド・メッセージからのメッセージ・データ内のコンテキスト情報 オブジェクト識別 オブジェクトの名前、タイプ オブジェクト属性 オブジェクト内のすべての属性値 31 <参考>イベント発生条件 以下のいずれかのMQSCコマンド、または PCF でこれらに相当するコマンドが発行された場合 DEFINE/ALTER AUTHINFO DEFINE/ALTER CFSTRUCT DEFINE/ALTER CHANNEL DEFINE/ALTER NAMELIST DEFINE/ALTER PROCESS DEFINE/ALTER QMODEL/QALIAS/QREMOTE DEFINE/ALTER STGCLASS DEFINE/ALTER TOPIC DEFINE MAXSMSGS ALTER QMGR (CONFIGEV 属性が DISABLED であり、ENABLED に変更されない場合を除く) 以下のいずれかのMQSCコマンド、または PCF でこれらに相当するコマンドが発行された場合 DELETE AUTHINFO DELETE CFSTRUCT DELETE CHANNEL DELETE NAMELIST DELETE PROCESS DELETE QMODEL/QALIAS/QREMOTE DELETE STGCLASS DELETE TOPIC REFRESH QMGR 以下のいずれかのコマンド、または PCF でこれらに相当するコマンドが、ローカル・キューに対して発行された場合 DELETE QLOCAL(一時動的キューは対象外) DEFINE/ALTER QLOCAL(一時動的キューは対象外) 一時動的キュー以外に対して MQSET 呼び出しが発行された場合 32 構成イベントの注意点 すべてのオブジェクトに対する構成イベントを生成することが可能 MQオブジェクトの構成などを一度に取得したい場合などに利用可能 REFRESH QMGR、または PCF コマンドで生成 生成されるイベントのフィルタリングが可能 – オブジェクト名 – オブジェクト・タイプ – リフレッシュ間隔 構成イベント・メッセージが生成されないケース コマンドまたは MQSET 呼び出しが失敗した場合 イベント・キューへのイベント・メッセージの書き込みが失敗した場合 一時動的キューに対する操作 TRIGGER キュー属性に対して内部変更が行われた場合 構成イベント・キュー SYSTEM.ADMIN.CONFIG.EVENTに対する操作 (ただし、REFRESH QMGR コマンドによる場合は除く) クラスタリングを変更するREFRESH/RESET CLUSTER コマンドと RESUME/SUSPEND キュー・マネージャーの作成/削除 33 コマンド・イベント MQSC または PCF コマンドが正常に実行された際に、生成されるイベント 実行されたコマンドの監査証跡に利用可能 オブジェクトが予期せずに変更された場合、変更したユーザーおよび時刻などを保管することが可能 イベント・スイッチ キュー・マネージャー属性でイベント生成のON/OFFを指定 CMDEV (ENABLED | DISABLED | NODISPLAY ) ENABLED :MQSC コマンドまたは PCF コマンドが正常に実行された場合イベント生成 NODISPLAY :MQSC コマンドまたは PCF コマンドが正常に実行された場合(DISPLAY コマンド (MQSC) および照会コマンド (PCF)を除く) DISABLED :オフ イベント・キュー: SYSTEM.ADMIN.COMMAND.EVENT イベント・データに含まれる情報 種別 説明 発生元情報 キュー・マネージャー、コマンドを発行したユーザー ID、およびコマンドの 発行方法 (例えばコンソー ル・コマンドによるものなど) コンテキスト情報 コマンド・メッセージからのメッセージ・データ内のコンテキスト情報 コマンド情報 発行されたコマンドのタイプ コマンド・データ PCF コマンドでは、コマンド・データ MQSC コマンドでは、コマンド・テキスト 34 コマンド・イベントの注意点 ALTER QMGR、または PCF コマンド Change Queue Manager実行時のイベント 実行前、もしくは、実行後に、CMDEV(ENABLED)が指定されてる場合、イベントが生成 コマンド・イベントが生成されないケース コマンドが失敗した場合 イベント・キューへのイベント・メッセージの書き込みが失敗した場合 35 その他の拡張 36 IBM Message Service Client for .NET (XMS for .NET) サポート・パックIA9Hの統合 IA9H IBM Message Service Client for .NETが製品に統合 IBM Message Service Client for .NETの特徴 Java以外の言語で使用可能なメッセージングAPI C, JMSプロバイダー C++, .NET版を提供 MQ JMS 1.1に準拠 2つのメッセージング・モデル –Point to point(PTP) –Publish/Subscribe(Pub/Sub) 主要なクラス XMSアプリケーション C/C++/C# JMS 他社メッセー ジング製品 他社メッセー ジング製品 – Connection, Session, Destination, Producer, Comsumer… メッセージング・サービス 5タイプのメッセージ – TextMessage, BytesMessage, ObjectMessage, StreamMessage, MapMessage MQ v7.0新機能を使用可能 非同期PUT/GET、共用会話、Pub/Sub… 37 JMS JMS クライアント IBM Message Service Client for .NET (XMS for .NET) 前提 Microsoft® Windows® XP (Service Pack 1 適用済み) or Microsoft Windows 2003 Server.NET Framework v2.0 v7.0.1.0 or later MQクライアント・ライブラリ、キュー・マネージャー クライアント接続の場合、MQ v7.0, v6.0, v5.3キュー・マネージャーへ接続可能 ローカル接続の場合、MQ v7.0.1のみ接続可能 .NET Framework v2.0 提供サンプル 配置ディレクトリー C:¥Program Files¥IBM¥WebSphere MQ¥Tools¥dotnet¥samples¥cs配下 – SampleProducer – SampleComsumer – SampleCommon 38 WCFのMQ用カスタム・チャネルのサポート WCFは、.NET上の新しいサービス指向のプログラミング・モデル WCFアプリケーションはカスタム・チャネル・スタックを通じて、様々な通信プロトコルを利用できる HTTP、TCPIP、MSMQなど MQ用のカスタム・チャネルにより、WCFアプリケーションとMQアプリケーションの連携が可能 .NET Framwork 3.0または3.5のサポート XMS .NETの機能を利用 MQ V7.0.1は、このWCFプログラム・モデルにおけるえMQ用カスタム・スタック・チャネルを提供 MQを意識せずにWCFクライアント、サービス間でデータ送受信が可能 WCFアプリケーション MQアプリケーション Native WMQ Application WCF Client Application WCF Service Application WCF Services Layer WCF Services Layer WCF Channel Stack WCF Channel Stack Protocols.. Protocols.. Message Encoder Message Encoder WMQ Transport WMQ Q 39 WMQ Transport SOAP/JMSアプリケーション WMQ SOAP/JMS SOAP Layer Web Service WCFのMQ用カスタム・チャネルのサポート 前提 MicrosoftR .NET Framework v3.0 以降 XMS.NETの機能を利用 開発環境 Microsoft Visual Studio 2008 または Windows Software Development Kit for .NET 3.0 以降 Microsoft .NET Framework V3.5 以降を、ソリューション・ファイルを作成するマシンに導入することが必要 主要クラス Namespace: IBM.XMS.WCF 以下 Transport Binding Name: IBM.XMS.WCF.SoapJmsIbmTransportBindingElement Transport Binding Importer: IBM.XMS.WCF.SoapJmsIbmTransportBindingElementImporter Transport Binding Config: IBM.XMS.WCF.SoapJmsIbmTransportBindingElementConfig 提供サンプル 配置ディレクトリー MQInstallDir¥tools¥wcf¥samples¥ MQInstallDir¥tools¥wcf¥docs¥examples – svcutil.exe.config:Microsoft WCF svcutil クライアント・プロキシー生成ツールで カスタム・チャネルを認識できるようにす るために必要な構成設定 40 OCSPサポートの追加 SSLで使用するX.509デジタル証明書の有効期限切れを検知するためのプロトコルと してOCSPプロトコルを新たにサポート OCSPとは オンラインで証明書の失効情報を確認するためのプロトコル( RFC2560で規定) 証明書利用者(OCSP リクエスタ)は、OCSP レスポンダ(OCSP サーバーとも呼ばれる)に 失効情報を問い合わせる OCSP レスポンダは、問い合わせに対して証明書の状態を返す 良好/ 失効/ 不明 OSCPのリクエスト、レスポンスはHTTP/HTTPSプロトコル上で行われる 証明書失効情報の伝達 CA認証局 証明書発行 失効情報の問い合わせ OCSPレスポンダ 証明書の状態 有効/失効/不明 OCSPリクエスタ 41 OCSP設定 OCSPレスポンダが以下のいずれかで設定されている場合、失効確認が有効となる 検査対象の証明書内の AuthorityInfoAccess (AIA) 証明書拡張 認証情報オブジェクト MQクライアント・アプリケーション ※CA証明書を使用する場合のみ、OCSP設定は有効 認証情報オブジェクトでのOCSPレスポンダの指定 AUTHINFOオブジェクトの作成 AUTHTYPE:OCSP OCSPURL:OCSPレスポンダのURLを指定 DEFINE AUTHINFO( authinfo_name ) AUTHTYPE( OCSP ) OCSPURL ( string ) NAMELISTに作成したAUTHINFOを指定 DEFINE NAMELIST( namelist_name) names( authinfo_name) キュー・マネージャーのSSLCRLNL属性に作成したNAMELISTを指定 ALTER QMGR SSLCRLNL( namelist_name) MQクライアントでOCSPレスポンダを指定 MQCONNX: MQAIR構造体にOCSP情報を設定し、MQAIR構造体のアドレスをMQSCO構 造体に引き渡す.さらにMQSCO構造体のアドレスをMQCONNX実行時に引数としてわたす SSLサーバ側で上記の設定がされている状態でクライアント接続チャネルを作成 42 OCSPからのレスポンス OCSPからのレスポンス OCSPレスポンダへの問い合わせに対して、以下のいずれかが返る 良好:証明書は有効です。 失効:証明書は失効しています。 不明:この結果になるのは、次の 3 つのうちのいずれかが原因である可能性があります。 – WebSphere MQ が OCSP 応答側にアクセスできない。 – OCSP 応答側が応答を送信したが、WebSphere MQ が応答のデジタル署名を検証できない。 – OCSP 応答側が、その証明書に関する失効データを保持していないことを示す応答を送信した。 レスポンスへの対応 OCSP応答「不明」を受信した場合、OCSPAuthentication設定値(qm.ini, SSLスタンザ)により 動作が異なる OCSPAuthentication=REQUIRED (デフォルト)| OPTIONAL | WAR REQUIRED: 接続を拒否し、AMQ9716エラーを返す OPTIONAL: チャネルの開始を許可 WARN: チャネルは開始されるが、AMQ9717 警告をエラー・ログに出力 43 サービス定義ウィザード WSDL記述を生成可能なGUIウィザード Eclipse プラグインとして提供 ナビゲータ・ビューからサービス定義ウィザードを開始 生成されたWSDL 44 パブリッシュEXITの追加 パブリッシュされたメッセージがサブスクライバーによって受信される前に、任意のロジック を呼び出すことが可能 z/OSはサポート外 以下の操作を行うことが可能 各サブスクライバーにパブリッシュされるメッセージの内容を検査 各サブスクライバーにパブリッシュされるメッセージの内容を変更 メッセージのPUT先キューを変更 メッセージをサブスクライバーに送信しないことを選択 パブリッシュ出口は、以下の操作時、キュー・マネージャー・プロセスで実行 1 つ以上のサブスクライバーへのパブリッシュ操作 1 つ以上のリテイン・メッセージが送信されるサブスクライブ操作(MQSUB) 1 つ以上のリテイン・メッセージが送信されるサブスクリプション要求操作(MQSUBRQ) 45 パブリッシュEXITの追加 構文 MQ_PUBLISH_EXIT(ExitParms, PubContext, SubContext) 各パラメーターの説明 パラメータ タイプ 説明 ExitParms MQPSXP 入出力 出口パラメーターの構造。 この構造には、出口の呼び出しに関する情報が含まれます。 PubContext MQPBC 入力 パブリケーション・コンテキストの構造。 この構造には、パブリケーションのパブリッシャーに関するコンテキスト情報が含まれます。 SubContext MQSBC 入出力 サブスクリプション・コンテキストの構造。 この構造には、パブリケーションを受信するサブスクライバーに関するコンテキスト情報が 含まれます。 コンパイル方法は、チャネル出口と同様 記述例 #include “cmqc.h” #include “cmqxc.h” MQ_PUBLISH_EXIT MyPublishExit; void MQENTRY MyPublishExit( PMQPSXP pExitParms, PMQPBC pPubContext, PMQSBC pSubContext ) { /* C language statements to perform the function of the exit */ } 46 パブリッシュEXITの追加 キュー・マネージャー構成ファイルで設定 qm.ini ファイルのPublishSubscribe スタンザを設定 PublishExitPath=[path]│module_name パブリッシュ出口コードを含むモジュールの名前とパス PublishExitFunction=function_name パブリッシュ出口コードを含むモジュールへの関数エントリー・ポイントの名前 PublishExitData=string キュー・マネージャーがパブリッシュ出口を呼び出している場合、入力として MQPSXP 構造が渡されます。 PublishExitData 属性を使用して指定されたデータは、構造の ExitData フィールドに入ります Windowsの場合は、MQ Explorerから設定 設定後、キュー・マネージャーの再起動が必要 47 Pub/Subその他の拡張 MQPMOオプションの追加 MQPMO_WARN_IF_NO_SUBS_MATCHED パブリケーションと一致するサブスクリプションがない場合、MQCC_WARNING および MQRC_NO_SUBS_MATCHED 理由コードを戻す WMBv7からPubSubエンジンをMQv701に統合 Publicationノードから、WMBではなくMQのPubSubエンジンをMQAPI経由で呼び出す WMB Contents Based Filtering インターフェース MQ 48 Contents Based Filtering z/OS 49 トピック z/OS 64bitストレージの活用 ログ圧縮書き出し GROUP UR LE バッチ・アプリケーションの構築 移行 この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受け ておらず、当資料に記載された内容に関して当ワークショップの主催者である日本アイ・ビー・エム システムズ・エンジニアリング株式会社は何ら保証 するものではありません。 従って、この情報の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、資料の内容によって受けたいかなる被害 に関しても一切の保証をするものではありません。 当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。 50 64bitストレージの活用 51 64bitストレージの活用 V7.0.1より以下のコンポーネントも64bitストレージ(Above 2GB)を使用する ロック 未解決のUOWでのメッセージに対するロック、キューのオープン・ハンドルなど キューのインデックス インデックス指定されたキューに保持できるメッセージ数の増加が可能 セキュリティ セキュリティ情報に関するコントロール・ブロック Pub/Subエンジン(V7.0.0より対応) トピック・ツリー、サブスクリプションに関するコントロール・ブロック MEMLIMITの設定 MEMLIMITとは 各アドレス・スペースにおけるAbove 2GBの使用量を制限するOSのパラメーター z/OS V1.9のデフォルト:MEMLIMIT=0GB ⇒2GB aboveが使えない z/OS V1.10のデフォルト:MEMLIMIT=2GB MEMLIMITの設定値を確認し、変更が必要な場合はMQ開始プロシージャーに設定する 例) z/OS V1.9のデフォルト:MEMLIMIT=0GBの場合⇒ MEMLIMIT=2GをssidMSTRに設定 //PROCSTEP EXEC PGM=CSQYASCP,REGION=OM,MEMLIMIT=2G 参照テクニカルフラッシュ 「z/OS V1.10: PARMLIB(SMFPRMxx) MEMLIMITパラメーターの省略時値変更に伴う影響とその対応」 http://www-06.ibm.com/jp/domino01/mkt/cnpages1.nsf/page/default-000698D5 52 ログ圧縮書き出し 53 ログ圧縮書き出し パーシステント・メッセージをMQPUTする際に書き出すログ・レコードの 圧縮が可能 圧縮ロジックはRLE(連長圧縮) ブランクやPadding文字(SBCS)が連続するようなデータには有効 MQヘッダー部も圧縮対象 共用キューへのPUTは対象外 メリット /デメリット 【メリット】 ログ書き出し量の減少に伴うスループットの向上 ログ・データ・セットのサイズの縮小 【デメリット】 圧縮アルゴリズムはRLEなので、圧縮効率がよくないデータもあり得る DBCS文字は圧縮されない CPUコストがかかる 54 ログ圧縮書き出しの管理 ログ圧縮機能の設定 前提:ZPARM-CSQ6SYSPのOPMODE=NEWFUNC必須 CSQ6LOGPのCOMPLOGまたはSET LOGコマンドで指定 NONE :ログ・データ圧縮を使用しない(デフォルト値) RLE :ログ・データ圧縮を実行 ANY :最大限のログ・レコード圧縮を実現できる圧縮アルゴリズムをキュー・マネージャーが選択。結果的 に RLE 圧縮が行われる DISPLAY LOGコマンドで現行設定を確認可能 MQ Explorerでの指定は不可 SMF type 115-QJST(ログマネージャー統計)にログ圧縮関連のフィールドが追加 圧縮レートは、ログマネージャー統計で確認可能 55 ログ圧縮レート(SMF) ログ圧縮関連のフィールド フィールド名 説明 qjstcmpreq 圧縮要求回数(number of compression requests) qjstcmpfail 圧縮ができなかった回数 (the number of times the queue manager was unable to achieve any reduction in record length) qjstcmpuncmp 圧縮前バイト数(the total bytes before compression) qjstcmpcomp 圧縮後バイト数(the total of compressed bytes written to the log) 幕張テスト結果 SMF Dump用サンプルジョブ(CSQ4SMFJ)を使用してSMFレコードを処理 「あ」(DBCS)80バイト×100msg、「A」(SBCS)80バイト×100msg送信後のログマネージャー統計データ フィールド 数値 説明 qjstcmpreq 00000200 200メッセージ圧縮(*) qjstcmpfail 00000000 圧縮できないメッセージなし qjstcmpuncmp 0000000000102000 圧縮対象サイズ qjstcmpcomp 0000000000039800 圧縮後サイズ (*)MQMDも圧縮対象なのでユーザーデータ部がDBCSのみのメッセージも含め、200メッセージすべてが圧縮された 56 <参考> ログ圧縮書き出し 幕張テスト結果 PersistentメッセージをMQPUTし、ログのLAST RBAを確認 テスト方法 1. DISPLAY LOGコマンドにてLAST RBA確認 2. テストJOBにてパーシステント・メッセージ10件をMQPUT 3. DISPLAY LOGコマンドにてLAST RBA確認 ケース1:SBCS繰り返し文字列を含む100ByteをMQPUT ログ圧縮設定 DISPLAY LOGコマンド NONE TEST前 676CB 423627 - 10MSG-PUT① 6A0FC 434428 10801 10MSG-PUT② 6CA28 444968 10540 10MSG-PUT③ 6E7AC 452524 7556 10MSG-PUT④ 704CC 459980 7456 RLE LAST RBA(HEX) 約30%のログ量削減 57 DEC 差(DEC) <参考> ログ圧縮書き出し 幕張テスト結果 ケース2:SBCS繰り返し文字列を含む1024ByteをMQPUT ログ圧縮設定 DISPLAY LOGコマンド NONE TEST前 8C6D395 147248021 - 10MSG-PUT① 8C72206 147268102 20081 10MSG-PUT② 8C77000 147288064 19962 10MSG-PUT③ 8C7BE75 147308149 20085 10MSG-PUT④ 8C7DC9B 147315867 7718 10MSG-PUT⑤ 8C7FAD4 147323604 7737 10MSG-PUT⑥ 8C8188F 147331215 7611 RLE LAST RBA(HEX) DEC 差(DEC) 約60%のログ量削減 開発元での測定結果はパフォーマンス・レポート参照 “MP1G: WebSphere MQ for z/OS V7.0.1 Performance Report” http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24024589&loc=en_US&cs=utf-8&lang=en 58 <参考> ログ印刷ユーティリティの出力結果 ログ印刷ユーティリティ(CSQ1LOGP)では圧縮ログの出力も可能 <圧縮ログ 圧縮ログ> ログ> 000008CBEB81 URID(000008CBEAD4) RM(DATA) LRID(00A10014.C3D4D7C8) TYPE( REDO ) SUBTYPE( INSERT ) RECORD LENGTH(0101) **** 00DD0028 0400000C C9500000 08CBEAD4 000008CB EB59 0000 00A10014 C3D4D7C8 01010000 000001FE 000000B3 80830008 04000011 0101F609 0020 86000103 8300010A 84000750 00001101 01A68300 01018300 08016000 00110100 0040 469E0004 0160D415 83000901 C4CAB051 2E55D38F 83000150 84FF8400 04D4C440 0060 40830001 01870001 0884FF86 00060311 0000056E 88408700 0901C3E2 D840D4F7 0080 F1C18840 08C4CAB0 512E55D3 8F9C00B0 4004D4F7 F1C1AC40 06D4D8D4 F0F0F486 00A0 40A000A0 40830008 02D4D8D4 C2D7E4E3 954010F2 F0F0F9F0 F9F1F5F0 F9F5F2F0 00C0 F8F7F784 40D0C1 * I& M * CMPH c 6 *f c d & wc c * -M c D L c &d d MD * c g d f >h g CSQ M7 *1Ah D L M71A MQM004f * c MQMBPUTn 2009091509520 *877d A <通常ログ 通常ログ> ログ> 000008CBEB81 URID(000008CBEAD4) RM(DATA) LRID(00000004.00001101) TYPE( SUBTYPE( INSERT ) RECORD LENGTH(01F6) **** 02140028 0400000C C9500000 08CBEAD4 000008CB EB59 0000 00000004 00001101 01F60900 00000000 00030000 000A0000 00005000 0020 A6000000 01000000 01600000 11010046 00000000 00000000 00000000 0040 00000000 00000000 00000000 00000160 D4150000 0001C4CA B0512E55 0060 0050FFFF FFFF0000 0000D4C4 40400000 00010000 00000000 0008FFFF 0080 00000000 03110000 056E4040 40404040 40400000 00000000 0001C3E2 00A0 F1C14040 40404040 4040C4CA B0512E55 D38F0000 00000000 00000000 00C0 00000000 00000000 00000000 00004040 40404040 40404040 40404040 00E0 40404040 40404040 40404040 40404040 40404040 40404040 40404040 0100 F1C14040 40404040 40404040 40404040 40404040 40404040 40404040 0120 40404040 40404040 40404040 4040D4D8 D4F0F0F4 40404040 40400000 0140 00000000 00000000 00000000 00000000 00000000 00000000 00004040 0160 40404040 40404040 40404040 40404040 40404040 40404040 40400000 0180 D4C2D7E4 E3404040 40404040 40404040 40404040 40404040 4040F2F0 01A0 F1F5F0F9 F5F2F0F8 F7F74040 4040C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 01C0 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 01E0 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 C1C1C1C1 59 REDO ) 00110101 00000000 D38F0000 FFFF0000 D840D4F7 00000000 40404040 4040D4F7 40404040 00000000 40404040 0002D4D8 F0F9F0F9 C1C1C1C1 C1C1C1C1 C1C1 * I& M * 6 & *w * -M D L * & MD * > CSQ M7 *1A D L * * M7 *1A * MQM004 * * MQ *MBPUT 200909 *1509520877 AAAAAAAAAAAAAAAAAA *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA *AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA キュー共用グループ単位の URリカバリー (GROUPUR) 60 キュー共用グループ単位のURリカバリー(GROUPUR) 2フェーズコミット環境で、ピア・リカバリーが可能 障害時に in-doubtをグループ内の他のキュー・マネージャーが解消できる トランザクション・マネージャは障害のあったキュー・マネージャーに接続しなくてもよい トランザクション・マネージャーが拡張トランザクショナル・クライアントで接続している場合に 使用可能 WASからのクライアント接続で2フェーズコミットを利用する場合など 管理 前提:ZPARM-CSQ6SYSPのOPMODE=NEWFUNC必須 CFストラクチャー:CSQSYSAPPLを定義 新規システム用の共用キューSYSTEM.QSG.UR.RESOLUTION.QUEUEを定義し、CSQSYSAPPL ストラクチャーに配置 QMGR属性(GROUPUR)で制御 ENABLED: XAクライアント・アプリケーションが、QSG名を使用してグループUR処理を開始できる DISABLED: XAクライアント・アプリケーションは、QMGR名を指定して接続する(グループURは使用できない) 61 キュー共用グループ単位のURリカバリー(GROUPUR) QSG1 CF CSQADMIN GROUPUR (ENABLED) SYSTEM.QSG.UR. RESOLUTION. QUEUE CEC1 QM01MSTR QM02MSTR CSQSYSAPPL QM01CHIN QM02CHIN TCPIP/VTAM TCPIP/VTAM APPL STRUCTURE (User Queue) • アプリケーションが GenericAddress経由で QM01に接続 • 2PC処理中にQM01がダウン • アプリケーションは接続リトライ を行いQM02に接続し、2PC 処理中のトランザクション処理 を継続する CEC2 Network(GENERIC ADDRESS / PORT) • XAOpenStringにQSG 名指定 WAS TM(ETC) XA Client APPL 62 • ConnectionFactory にQSG名指定 GROUPUR (ENABLED) LE バッチ・アプリケーションの構築 63 LE バッチ・ バッチ・アプリケーションの アプリケーションの構築 LE環境のダイナミック・リンク・ライブラリー (DLL)を提供 従来のスタブではなく、DLL経由でMQIを発行 31 ビット LE 呼び出しインターフェース 31 ビット XPLINK 呼び出しインターフェース XPLINKとは OS/390 V2R10 からの機能 ファンクション・コールのオーバーヘッドを削減し、Cプログラムのパフォーマンスが向上 実行パス・レングスの最適化 小さい関数を多数コールするようなプログラミング・モデルで効果大 –オブジェクト指向プログラミング→ CPUコスト削減とパフォーマンスの向上 DLL を使用するには サイドデッキ と呼ばれるものに対してバインドまたはリンク サイドデッキはSCSQDEFS ライブラリーで提供される 31 ビット LE DLL 31 ビット XPLINK DLL 同等のスタブ名 1 フェーズ・コミット CSQBMQ1 CSQBMQ1X CSQBSTUB RRS による2 フェーズ・コミット (RRSVerbを使用) CSQBRR1 CSQBRR1X CSQBRSTB RRS による2 フェーズ・コミット (MQI Verbを使用) CSQBRI1 CSQBRI1X CSQBRRSI 64 XPLinkを使用する場合のサンプル生成JCL //*------------------------------------------------------------------//M71BXCB JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID //EDCXCB PROC INFILE=, //* BIND STEP: < INPUT ... REQUIRED //*------------------------------------------------------------------- // CREGSIZ='148M', // CRUN=, < COMPILER RUNTIME OPTIONS // CPARM=, < COMPILER OPTIONS // LIBPRFX='CEE', < PREFIX FOR LIBRARY DSN // LNGPRFX='CBC', < PREFIX FOR LANGUAGE DSN // BPARM='LIST=NOIMP', < BINDER OPTIONS // BREGSIZ='20M', < BINDER REGION SIZE // TUNIT='SYSALLDA', < UNIT FOR TEMPORARY FILES // TSPACE='(32000,(30,30))', < SIZE FOR TEMPORARY FILES // OUTFILE='&&GSET(GO),DISP=(NEW,PASS),UNIT=SYSALLDA,SPACE=(TRK,(7,7, // < COMPILER REGION SIZE //BIND // //STEPLIB DD DSNAME=&LIBPRFX..SCEERUN2,DISP=SHR 1)),DSNTYPE=LIBRARY' //* COMPILE STEP: //COMPILE EXEC PGM=CCNDRVR,REGION=&CREGSIZ, DD DSNAME=&LIBPRFX..SCEERUN,DISP=SHR //SYSIN DD DSNAME=&INFILE,DISP=SHR //SYSLIB DD DSNAME=&LIBPRFX..SCEEH.H,DISP=SHR // DD DSNAME=&LIBPRFX..SCEEH.SYS.H,DISP=SHR // DD DISP=SHR,DSN=MQM701B.SCSQC370 //SYSLIN DD DSNAME=&&LOADSET,UNIT=&TUNIT., // DISP=(MOD,PASS),SPACE=(TRK,(3,3)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200) //SYSOBJ DD DSNAME=CEE.SCEEOBJ,DISP=SHR // DD DSNAME=MQM701B.SCSQDEFS,DISP=SHR //SYSLIN DD DSNAME=*.COMPILE.SYSLIN,DISP=(OLD,DELETE) // DD DSNAME=&LIBPRFX..SCEELIB(CELHS003),DISP=SHR // DD DSNAME=&LIBPRFX..SCEELIB(CELHS001),DISP=SHR // DD DDNAME=SYSIN //SYSDEFSD DD DUMMY DD DUMMY // PEND //STEPLIB DD DSNAME=&LIBPRFX..SCEERUN2,DISP=SHR // DD DSNAME=&LIBPRFX..SCEEBND2,DISP=SHR //SYSIN PARM=('&CRUN/XPLINK GOFF &CPARM') DD DSNAME=&LNGPRFX..SCCNCMP,DISP=SHR DD DSNAME=&LIBPRFX..SCEERUN,DISP=SHR //SYSLIB //SYSLMOD DD DSNAME=&OUTFILE //*------------------------------------------------------------------- // // //SYSPRINT DD SYSOUT=* //*------------------------------------------------------------------- // EXEC PGM=IEWL,REGION=&BREGSIZ,COND=(4,LT,COMPILE), PARM='AMODE=31,MAP,RENT,DYNAM=DLL,CASE=MIXED,&BPARM' //STEP1 EXEC EDCXCB, // CPARM='OPTF(DD:OPTF)', // BPARM='XREF,MAP,DYNAM=DLL', // INFILE='MQM005.PGM.SRC(CSQ4BCK1)' //COMPILE.OPTF DD * RENT,CHECKOUT(ALL),SSCOM,DEFINE(MVS),NOMARGINS,NOSEQ,XPLINK,DLL SE(DD:SYSLIBV) //BIND.SYSLMOD DD DISP=SHR,DSNAME=MQM005.PGM.LOAD //BIND.SYSIN DD * ENTRY CEESTART ..... INCLUDE SYSOBJ(CSQBMQ1X) 65 NAME CSQ4BCK1(R) /* 移行 66 移行 移行パス V7.0.1では、V6.0、V7.0.0からの移行・フォールバックをサポート V6向けAPAR - PK95835 V7向けAPAR - PK95837 V7.0.1では2つのモードがある ZPARMのOPMODE=(mode,velificationLevel)パラメーターでモードで指定 デフォルト値はOPMODE=(COMPAT,701) SET SYSTEMコマンドによる動的変更は不可⇒ZPARMの再生成、キュー・マネージャーのリスタートが必要 modeの指定 COMPATモード – 移行前のバージョンへのフォール・バック可 – V7.0.1の新機能(キュー共用グループUR,ログの圧縮)は利用不可 NEWFUNCモード – 移行前のバージョンへのフォール・バック不可 – V7.0.1の新機能(キュー共用グループUR,ログの圧縮)を利用可能 – 新機能で問題が見つかった場合 ⇒OPMODE=(COMPAT,701) を設定することで新規機能をオフにできる (ただし、移行前のバージョンへのフォールバックは不可) 67 移行 velificationLevelの指定 パラメータ・モジュールのバージョン/リリース・レベルの指定 パラメータ・モジュールの生成時に使用するCSQ6SYSP マクロのバージョン/リリース・レベルの確認 ⇒一致しない場合は、生成時にエラーが報告される modeのCOMPAT指定と共に使用 OPMODE=(COMPAT,vrm) 指定の意味 リリース vrm 以前に導入された機能のみが使用可能 ただし、vrm が現在のコード・リリースと一致する場合は例外 ⇒ vrm で導入された新規機能は使用 できない VerificationLevel がキュー・マネージャーのコード・レベルと一致しない場合 ⇒強制的に OPMODE=COMPAT が設定される OPMODE=NEWFUNC を不注意に設定して取り消し不能になることを防ぐため – 旧バージョンのパラメータ・モジュールを新バージョンでそのまま使用した場合に発生する可能性がある DISPLAY SYSTEMコマンドでフォールバック可能な移行元バージョンが表示される MQMA DISPLAY SYSTEM MQMB DISPLAY SYSTEM CSQJ322I MQMA DISPLAY SYSTEM report CSQJ322I MQMB DISPLAY SYSTEM report Parameter Parameter Initial value Initial value ----------- ---------------------- ----------- ---------------------- OPMODE OPMODE COMPAT , 700 ..... ...... 68 COMPAT , 600