Tuxedoは、12c (12.1.1)リリースからECID伝播サポートが強化されています。図19-1が示すように、様々なTuxedo境界にまたがるECID伝播がサポートされています。
この機能を有効化すると、受信側としてTuxedoは、境界を横断する各リクエスト呼出しの中にECIDがあるかどうかをチェックするようになります。存在する場合は、受信されたECIDは呼出しパス全体に沿って伝播されますが、存在しない場合は、境界ノードとしてドメイン・ゲートウェイは当該呼出しのECIDを生成し、正確に構成されたら伝達しようと試みます。
Tuxedoコンポーネントによって発信される呼出しの場合、ネイティブ・クライアント、WSクライアントまたはJoltクライアントなどのクライアントは、正確に構成されるとECIDを生成できます。
注: | JCAサポートはこの機能の対象外です。 |
この項では、次に示すECID伝播の4つのシナリオについて説明します。
Tuxedoでは、OCI (Oracle Call Interface)を経由したECIDのOracle DBへの伝播をサポートしています。これは一方向の伝播です。理論上、OCI/DBはリクエスト呼出しを発信することはないため、反対方向(DBからTuxedoへ)の伝播をサポートする必要はありません。
OCIでは、登録APIおよびコールバック関数インタフェースが実装されています。コールバック関数の実装によって、伝播の詳細が処理されます。プロセスは次に示すとおりです。
WTCは、WLSアプリケーションとTuxedoサービス間の相互運用性を確立します。インタフェースとして、WTCにはTuxedoとWLS間のECIDの伝播を実行する完全な機能があります。
WebサービスをSALTゲートウェイ(GWWS)を通してSOAPまたはRESTのいずれかのモードで使用している場合も、呼出しの方向(TuxedoからのWLSの呼出しか、WLSからのTuxedoの呼出しか)を問わず、ECIDをTuxedoとWLS*の間で伝播できます。WLS*で他のOracle製品と一緒にECIDコンテキストを伝播するときと同様に、このモードでは、ECIDがHTTPヘッダーに含められます。
注: | * WLSは、WLS 12c (12.1.3)以上のリリースである必要があります。 |
Tuxedo内のECID伝播(ドメイン内およびドメイン間の両方)では、メッセージ内のMETA_TCM
フィールドが活用されます。Tuxedoクライアント、サーバーおよびドメイン・ゲートウェイではすべて、メッセージのMETA_TCM
セクション内でECIDを取得または設定するサポートが強化されています。
Tuxedo内では、次の3つのATMI APIを使用してECID生成/伝播が実行されます。
境界コンポーネントとして、ネイティブ/WS/Joltクライアントおよびドメイン・ゲートウェイは、各リクエスト・メッセージが正しく構成されるとそれに対してECIDを生成できます。
コール・パスに12cよりも低いバージョンのOracle Tuxedoを持ったドメイン/マシンが存在する場合、エンドツーエンドのECID伝播は、個々のユーザー・シナリオに応じて行われます。
DOM1、DOM2およびDOM3という3つのドメインがあるとします。DOM1およびDOM3はOracle Tuxedo 12c内に、DOM2はTux11gR1内にあります。DOM1ではECID_USERLOG
およびECID_CREATE
が両方とも有効化されていますが、DOM3ではECID_USERLOG
のみが有効化されています。
一方で、DOM1のクライアントがDOM2のtpcallサービス1を呼び出した後、サービス1がDOM3のtpcallサービス2を呼び出すときにtpallocを介して新しいバッファを割り当てると、ECIDはDOM3のULOGには記録されません。つまり、DOM1のECID情報は保持できません。
他方で、DOM1のクライアントがDOM2のtpcallサービス1を呼び出した後、サービス1がDOM3のtpcallサービス2を呼び出すときに、サービス1の呼出し時のバッファを再利用すると、ECIDはDOM3のULOGに記録されます。つまり、DOM1のECID情報は、DOM3によって伝播および取得できます。
この項では、ECID伝播を有効化するための次の構成について説明します。
UBBCONFIG(5)
のRESOURCESセクションでは、ECIDの処理動作を有効化および指定するための新しいフラグを使用してOPTIONS
フィールドが拡張されます。
オプション「ECID_CREATE
」: ECID作成機能が有効化されます。境界ノード(ネイティブ/WS/Joltクライアントおよびドメイン・ゲートウェイ)は、ECIDを生成できます。
オプション「ECID_USERLOG
」: このオプションを指定すると、文字列がnullでないかぎり、ECIDがユーザーログに付加されます。
前述のいずれのオプションも設定しない場合、Tuxedo全体へのECID伝播はデフォルトで有効化されますが、このドメインのULOGでECIDを作成したり出力することはできません。この場合、tmadmin > psr -v
を使用してECIDを取得できます。また、これら2つのオプションは、MIB操作によっても更新できます。
OCIコールバック関数によりOracle DBへのECID伝播を実行するには、「-L
」オプションで関連サーバーを指定する必要があります。例:
simpserv CLOPT="-A -L default --" SRVGRP=GROUP1 SRVID=2
「– L
」を指定してアクティブ化すると、サーバーはECID伝播のためOCIの登録APIを呼び出します。
OCIライブラリ(WIN32プラットフォームの場合「oci.dll」、それ以外のプラットフォームは「libclntsh.so」)をロードします。
oci_lib_name
で指定された名前を持つOCIライブラリをロードします。そのようなoci_lib_name
は絶対パスまたはリーフ名の場合があり、システム・ライブラリ・パス全体で検出できます。
「ECID_USERLOG
」がUBBCONFIG
で構成されている場合に、現在アクティブな呼出しのECIDを出力するようユーザーログが拡張されています。例:
233331.lclnx16!simpserv.19461.2664420416.0: ECID <004fVWEOfCE6iKO5IjK6yf0004k8000000>: sleep 15
サーバーが実行中の場合にECIDを出力するよう、tmadmin printserver (psr -v)
コマンドが拡張されています。例:
Group ID: GROUP1, Server ID: 1
Machine ID: SITE1
Process ID: 19461, Request Qaddr: 1009713159, Reply Qaddr: 1009713159
Server Type: USER
Prog Name: /nfs/ucfhomes/xuhchen/lclnx16/TUX12gR164/LC/bld/samples/atmi/simpapp/simpserv
Queue Name: 00001.00001
Options: ( none )
Generation: 1, Max message type: 1073741824
Creation time: Tue Sep 27 23:32:44 2011
Up time: 0:05:22
Requests done: 2
Load done: 100
Current Service: TOUPPER,(ecid: c9ca469656eb23b5:79482783:132ae1bef3b:-8000-0000000000000010)
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』