Oracle Tuxedoには、組込みプラグイン・フレームワークがあるので、追加機能を簡単に使用することができます。たとえば、Oracle Tuxedoセキュリティ・メカニズムは、プラグイン・フレームワーク上に作成されます。Oracle Tuxedoでは、サービス・プロバイダとエンド・ユーザー間の契約として機能するインタフェース・セットが定義されています。ここで、「service」というのはOracle Tuxedo ATMIサービスではなく、一般的な用語です。Oracle TSAMエージェントは、Oracle Tuxedoプラグイン・フレームワークを使用して、別のデータ・レシーバを追加することもできます。
次の項では、Oracle Tuxedoプラグイン・フレームワークの主な概念を示します。
インタフェースは、プラグイン実装およびプラグインの呼出し側の間の契約フォーマットです。インタフェースには、以下の属性を存在する必要があります。
インタフェースIDは、Oracle Tuxedoプラグイン・フレームワークに一意に識別されるインタフェース名であり、書式は次のとおりです。
<interface id> ::= <component name>[/<sub-component/name>]/<interface name>
Oracle TSAMエージェント・プラグインの書式は、次のとおりです。
インタフェースには、メジャーのバージョン番号およびマイナーのバージョン番号という2つのバージョンがあります。
データ構造には、プラグイン呼出し側および実装の間で転送される具体的な情報が定義されます。関数の宣言には、プラグインによって実装する必要があるルーチンが定義されます。
プラグインは、Cコードを使用して書かれたダイナミック・ライブラリです。ライブラリには、インタフェースで指定されるメソッドが実装されます。Oracle Tuxedoプラグイン・フレームワークは、1つのインタフェースに対して複数の実装(インターセプタ)をサポートしています。
Oracle Tuxedoは、ファンアウト・インターセプタおよびスタック・インターセプタの2つのタイプをサポートしています。Oracle TSAMエージェントでは、ファンアウト・インターセプタが使用されます。図3-1は、Oracle TSAMエージェント・プラグインのアーキテクチャを示します。
Oracle Tuxedoのインフラストラクチャは、プラグインAメソッドXを呼び出します。プラグインAは、次に示すように、「InterceptionSeq
」属性で指定された順にインターセプトするプラグインのメソッドXを呼び出します。
インターセプタに使用されるプラグインは、すべて同じインタフェースを実装します。インターセプトのシーケンスには、同じプラグインの複数のオカレンスをもつことはできません。
Oracle TSAMエージェントは、ファンアウト・プラグインを提供します。ファンアウト・プラグインを使用すると、インターセプタ・プラグインを書く/作成することができます。
いったんプラグインが書かれると、機能するコンポーネントがプラグインを検索して、該当するメソッドを呼出しできるようにOracle Tuxedoのレジストリに登録する必要があります。Oracle Tuxedoでは、特にプラグインを使用するために次の3つのコマンドが提供されています。
Oracle TSAMエージェント・プラグインの呼出しは、モニタリング・ポイントから始まります。Oracle TSAMエージェントは、メトリックを収集および計算し、プラグインへ渡される引数を構成します。Oracle TSAMエージェントの ファンアウト・プラグインは、登録シーケンスによって、インターセプタ・プラグインを呼び出します。
Oracle TSAMカスタム・プラグインの開発の単純な例がガイドラインとして提供されています。システム環境は、Solaris on Sparcです。機能は基本的なもので、メトリックのバッファを印刷するたけです。このプラグインは、Oracle TSAMエージェントのデフォルト・プラグインと一緒に機能します。
リスト3-1は、Oracle TSAMプラグインcustomplugin.c.
の例を示します。
#include <e_pif.h>
#include <tpadm.h>
#include <fml32.h>
#include <e_perf_mon.h>
static TM32I _TMDLLENTRY print_app(
perf_mon_1 *,
FBFR32 **,
MONITORCTL *,
TM32U);
static TM32I _TMDLLENTRY print_svc(
perf_mon_1 *,
FBFR32 **,
MONITORCTL *,
TM32U);
static TM32I _TMDLLENTRY print_sys(
perf_mon_1 *,
FBFR32 **,
MONITORCTL *,
TM32U);
static TM32I _TMDLLENTRY print_tran(
perf_mon_1 *,
FBFR32 **,
MONITORCTL *,
TM32U);
static TM32I _TMDLLENTRY plugin_destroy (
_TCADEF,
const struct _e_pif_instance_handles *,
TM32U);
static TM32I _TMDLLENTRY plugin_copy (_TCADEF,
void *,
const struct _e_pif_interception_data *,
struct _e_pif_instance_handles *,
TM32U);
static const perf_mon_1 Vtblperfapp_1 = {
print_app,
print_svc,
print_sys,
print_tran,
};
static const _e_pif_plugin_info perf_mon_1_info = {
{ 1, 0 }, /* interface major version */
{ 1, 0 }, /* implementation */
"abc/tuxedo/tsam", /* implementation id */
ED_PERF_MON_INTF_ID, /* interface id */
4, /* virtual table size */
"ABC, Inc.", /* vendor */
"Custom Plug-in for Oracle TSAM", /* product name */
"1.0", /* vendor version */
EF_PIF_SINGLETON, /* m_flags */
plugin_destroy,
plugin_copy
};
int _TMDLLENTRY
plugin_entry(_TCADEF, const char *pIId,
const char *pImplId,
const struct _e_pif_iversion *version,
const struct _e_pif_data *pData,
const struct _e_pif_interception_data *pInterceptionData,
struct _e_pif_instance_handles *pI,
TM32U flags)
{
const char * const * regData = pData->regdata;
char *logfile = NULL;
pI->pVtbl = (void *) &Vtblperfapp_1;
pI->pPluginInfo = (_e_pif_plugin_info *) &perf_mon_1_info;
pI->pPrivData = NULL;
return (EE_SUCCESS);
}
static TM32I _TMDLLENTRY
plugin_destroy (_TCADEF, const struct _e_pif_instance_handles *pIhandles,
TM32U flags)
{
return(EE_SUCCESS);
}
static TM32I _TMDLLENTRY
plugin_copy (_TCADEF, void *iP,
const struct _e_pif_interception_data *pInterceptionData,
struct _e_pif_instance_handles *pIhandles,
TM32U flags)
{
return(EE_SUCCESS);
}
static TM32I _TMDLLENTRY print_app(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
static TM32I _TMDLLENTRY print_svc(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
static TM32I _TMDLLENTRY print_sys(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
static TM32I _TMDLLENTRY print_tran(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
cc -c customplugin.c -I$TUXDIR/include
cc -G -KPIC -o customplugin.so -L$TUXDIR/lib -lfml customplugin.o
リスト3-2は、reg.sh
シェル・スクリプトの例を示します。
#!/bin/sh
epifreg -r -p abc/tuxedo/tsam -i engine/performance/monitoring \
-o SYSTEM -v 1.0 \
-f $APPDIR/customplugin.so -e plugin_entry
epifregedt -s -k "SYSTEM/impl/bea/performance/monfan" \
-a InterceptionSeq=bea/performance/monshm \
-a InterceptionSeq=abc/tuxedo/tsam \
Oracle TSAMコンソールで適切なモニタリング・ポリシーを定義することによって、Oracle TSAMモニタリングを有効化します。
詳細は、Oracle TSAM管理者ガイドおよびOracle TSAMユーザーズ・ガイドを参照してください。
リスト3-3は、メトリックの出力を示します。
TA_MONDEPTH 1
TA_MONSTATUS 1
TA_MONPROCTYPE 2
TA_PID 2459
TA_SRVID 10
TA_MONLOGTIMESEC 1259292914
TA_MONLOGTIMEUSEC 26411
TA_MONFIELDSMAP1 -1
TA_MONFIELDSMAP2 -1
TA_MONMSGSIZE 24
TA_MONMSGQUEUED 0
TA_MONLASTTIMESEC 1259292914
TA_MONLASTTIMEUSEC 26411
TA_MONSTARTTIMESEC 1259292914
TA_MONSTARTTIMEUSEC 10500
TA_MONELAPSETIME 15
TA_DOMAINID dom2:bjsol16:66536
TA_GROUPNAME ATMIGRP1
TA_LMID L1
TA_MONTYPE APP
TA_MONCORRID dom2:bjsol16:66536 L1 tuxclient 2478 1 1 1259292909
TA_MONMSGTYPE ARQ
TA_MONSTAGE Q2ME
TA_MONSVCNAME I_TOUPPER
TA_MONHOSTSVC I_TOUPPER
TA_MONSVCSEQ INITIATOR-I_TOUPPER-11659-0
TA_MONPSVCSEQ INITIATOR
TA_MONQID 1879048194-00010.00010
TA_MONPROCNAME tux_atmi_svr
TA_MONDEPTH 1
TA_MONSTATUS 1
TA_MONPROCTYPE 2
TA_PID 2459
TA_SRVID 10
TA_MONLOGTIMESEC 1259292914
TA_MONLOGTIMEUSEC 29368
TA_MONFIELDSMAP1 -1
TA_MONFIELDSMAP2 -1
TA_MONMSGSIZE 100
TA_MONLASTTIMESEC 1259292914
TA_MONLASTTIMEUSEC 29368
TA_MONSTARTTIMESEC 1259292914
TA_MONSTARTTIMEUSEC 10500
TA_MONERRNO 0
TA_MONURCODE 1
TA_MONELAPSETIME 18
TA_DOMAINID dom2:bjsol16:66536
TA_GROUPNAME ATMIGRP1
TA_LMID L1
TA_MONTYPE APP
TA_MONCORRID dom2:bjsol16:66536 L1 tuxclient 2478 1 1 1259292909
TA_MONMSGTYPE ARP
TA_MONSTAGE ME2Q
TA_MONSVCNAME I_TOUPPER
TA_MONHOSTSVC I_TOUPPER
TA_MONSVCSEQ INITIATOR-I_TOUPPER-11659-0
TA_MONPSVCSEQ INITIATOR
TA_MONPROCNAME tux_atmi_svr
Oracle TSAMプラグイン・インタフェースのすべての内容が「$TUXDIR/include/e_perf_mon.h
」ファイルに定義されます。Oracle TSAMプラグインをビルドする場合は、このファイルをプラグインのソース・コードにインクルードする必要があります。
. The $TUXDIR/include/e_perf_mon.h
file definitions are as follows:
リスト3-4は、バージョンおよび識別子の例を提供します。
#define ED_PERF_MON_MAJOR_VERSION 1
#define ED_PERF_MON_MINOR_VERSION 0
/* Interfaces defined in this module */
#define ED_PERF_MON_INTF_ID "engine/performance/monitoring"
Value Definitions and Data Structure
リスト3-5は、Oracle TSAMフレームワークおよびプラグインのコア・データ構造を表示します。
typedef struct {
unsigned char fieldsmap[MAXMAPSIZE];
char monitoring_policy[MAXPOLICYLEN]; /* monitor policy */
char corr_id[MAXCORRIDLEN]; /* plug-in supplied correlation ID */
int ulen;
void * udata;
long mon_flag;
} MONITORCTL;
表3-1に、MONITORCTLメンバーを示します。
表3-2に、MONITORCTL配列サイズの定義を示します。表3-3に、mon_flagの値を示します。
リスト3-6には、プラグイン実装のメソッド関数表が定義されています。
typedef struct perf_mon_1_Vtbl {
TM32I (_TMDLLENTRY *_ec_perf_mon_app) _((
struct perf_mon_1_Vtbl * ip,
FBFR32 **buf,
MONITORCTL *mon_ctl,
TM32U flags
));
TM32I (_TMDLLENTRY *_ec_perf_mon_svc) _((
struct perf_mon_1_Vtbl * ip,
FBFR32 **buf,
MONITORCTL *mon_ctl,
TM32U flags
));
TM32I (_TMDLLENTRY *_ec_perf_mon_sys) _((
struct perf_mon_1_Vtbl * ip,
FBFR32 **buf,
MONITORCTL *mon_ctl,
TM32U flags
));
TM32I (_TMDLLENTRY *_ec_perf_mon_tran) _((
struct perf_mon_1_Vtbl * ip,
FBFR32 **buf,
MONITORCTL *mon_ctl,
TM32U flags
));
} perf_mon_1, *perf_mon_1_ptr;
各メソッドは、モニタリング・タイプに対応しています。_ec_perf_mon_appは呼出しパス・モニタリング用、_ec_perf_mon_svcはサービス・モニタリング用、_ec_perf_mon_sysはシステム・サーバー・モニタリング用、_ec_perf_mon_tranはトランザクション・モニタリング用に使用されます。各メソッドは、該当するモニタリング・タイプのモニタリング・ポイントから呼び出されます。メソッドの引数は、次のとおりです。
$TUXDIR/include/e_pif.h
Oracle Tuxedoの一般的なプラグイン定義ファイルです。これは、プラグイン・ソース・コードにインクルードする必要があります。
$TUXDIR/include/tpadm.h
Oracle Tuxedoに組み込まれているFML32フィールドの定義ファイルです。パフォーマンス・メトリックのすべては、FML32フィールドとして定義され、一部のパフォーマンス・メトリックはこのファイルで定義されます。
$TUXDIR/include/monflds.h
TSAM組込みFML32フィールド定義ファイル。すべてのパフォーマンス・メトリックは、tpadm.hのほか、このファイルで定義されます。
$TUXDIR/include/fml32.h
収集されたメトリックは、Oracle Tuxedo FML32バッファに格納されます。これらの項目にアクセスするには、FML32のルーチンを使用する必要があります。したがって、fml32.h
をインクルードする必要があります。
Oracle TSAMエージェント・プラグインを実装するには、次の手順に従います。
リスト3-7は、「e_perf_mon.h
」関数表で定義された「perf_mon_1
」の例を示します。
static const perf_mon_1 Vtblperfapp_1 = {
print_app,
print_svc,
print_sys,
print_tran,
};
リスト3-8は、プラグイン情報変数の定義方法を示します。
static const _e_pif_plugin_info perf_mon_1_info = {
{ 1, 0 }, /* interface version */
{ 1, 0 }, /* implementation version */
"abc/tuxedo/tsam", /* implementation id */
ED_PERF_MON_INTF_ID, /* interface id */
4, /* virtual table size */
"ABC, Inc.", /* vendor */
"Custom Plug-in for Oracle TSAM", /* product name */
"1.0", /* vendor version */
EF_PIF_SINGLETON, /* m_flags */
plugin_destroy,
plugin_copy
};
変更可能なメンバーは、「実装バージョン」、「実装id」、「ベンダ」、「製品名」および「ベンダ・バージョン」です。その他の項目は、例と同じである必要があります。
plugin_destroy
およびplugin_copy
は、破棄およびコピーに対するOracle Tuxedoの一般的なプラグインのルーチンです。Oracle TSAMプラグインに対しては、リスト3-9に示すとおりに2つの空の関数を書くことができます。
static TM32I _TMDLLENTRY
plugin_destroy (_TCADEF, const struct _e_pif_instance_handles *pIhandles, TM32U flags)
{
return(EE_SUCCESS);
}
static TM32I _TMDLLENTRY
plugin_copy (_TCADEF, void *iP,
const struct _e_pif_interception_data *pInterceptionData,
struct _e_pif_instance_handles *pIhandles, TM32U flags)
{
return(EE_SUCCESS);
}
各プラグインは「entry」ルーチンを持ち、プラグイン登録処理に指定されている必要があります。このルーチンでは、バーチャル 関数表およびプラグイン情報の構造をプラグイン・インタフェース・ハンドラに指定する必要があります。
リスト3-10は、プラグイン・ルーチンの例を表示します。
int _TMDLLENTRY
plugin_entry(_TCADEF, const char *pIId,
const char *pImplId,
const struct _e_pif_iversion *version,
const struct _e_pif_data *pData,
const struct _e_pif_interception_data *pInterceptionData,
struct _e_pif_instance_handles *pI,
TM32U flags)
{
const char * const * regData = pData->regdata;
char *logfile = NULL;
pI->pVtbl = (void *) &Vtblperfapp_1;
pI->pPluginInfo = (_e_pif_plugin_info *) &perf_mon_1_info;
pI->pPrivData = NULL;
return (EE_SUCCESS);
}
注意: | 例に示す決まった処理を使用することをお薦めします。プラグインを起動するために「entry」ルーチンは一回しか呼び出されません。 |
実装関数表は、「entry」ルーチン内のOracle Tuxedoに登録されます。次の章からは、該当するモニタリング・タイプに基づき、TSAMプラグインの記述方法に焦点を当てます。
警告: | Oracle Tuxedo ATMIの呼出し(FML32オペレーションのtpalloc /tprealloc/tpfre eおよびtptypesを除く) をプラグインで行わないでください。そうするとOracle Tuxedoコンテキストが損なわれる可能性があり、予期しない動作につながる場合があります。 |
呼出しパス・モニタリング・プラグイン・ルーチンは、モニタリング・ポイントから呼び出されます。詳細については、「Oracle TSAMエージェント・データ収集フレームワーク」を参照してください。
この例では、ルーチンは渡されたFML32バッファを出力します。
static TM32I _TMDLLENTRY print_app(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
Understanding Current Monitoring Points
呼出しパス・モニタリングは、最も包括的なOracle Tuxedoアプリケーションのインターセプタです。記録および分析のために複数のメトリックを提供します。
モニタリング・ステージは、FML32フィールド名としてTA_MONSTAGEを使用したメトリックです。表 3-4は、TA_MONSTAGEの値のリストです。
リスト3-11は、モニタリング・ステージの決定の例を表示します。
{
char *stage;
FLDLEN32 len;
stage = Ffind32(*obuf, TA_MONSTAGE,0,&len);
if (stage != NULL ) {
if (strcmp(stage,”STMO”) == 0 ) {
/* ... */
}else if (strcmp(stage,”Q2ME” == 0 ) {
/* ... */
/* other processment */
}
}
「STRING」フィールド・タイプの場合は、高速プロセスを使用するために「Ffind32」ルーチンを使用することをお薦めします。
表3-5に、TA_MONMSGTYPEの値を示します。
モニタリング・ポイントは、常にOracle Tuxedo アプリケーションのプロセスに位置しています。したがって、現在のプロセスを理解することが重要です。Oracle TSAMフレームワークでは、フィールドTA_DOMAINID、TA_PID、TA_LMID、TA_MONPROCNAME、TA_GROUPNAMEおよびTA_SRVIDを使用して、プロセスの場所を示します(表3-6の定義を参照)。
注意: | 一部のプロセスでは、すべてのメトリックを利用できるとは限りません。たとえばクライアント・プロセスの場合、TA_SRVIDは利用できません。 |
モニタリングの段階でメッセージ・タイプとプロセスの場所について必要な情報を取得したら、次の段階はよく使用されるメトリックがFML32バッファでも実行されたかどうか確認することです。メトリックが利用可能かどうかは、前述の条件によります。
表3-7に、一般に使用されるメトリックを示します。
すべて1
|
|||
1STRINGなど、自己記述型バッファ・タイプの場合は、サイズを「0」にすることができます。 |
モニタリングの起動時にプラグインで相関識別子を指定する必要があります。TA_MONSTAGE
値は「STMO
」です。Oracle TSAMフレームワークは、PI_CORRID_REQUIRED
をMONITORCTL mon_flag
に設定します。相関識別子を指定しない場合、エラーが報告されます。Oracle TSAMのデフォルトのプラグインでは、相関識別子が提供されます。次の2つのシナリオを考慮する必要があります。
カスタム・プラグインで、相関識別子の生成を省略することができます。カスタム・プラグインでOracle TSAMのデフォルト・プラグインによって生成された相関識別子を上書きする場合は、Oracle TSAMのデフォルト・プラグインの後に来るカスタム・プラグインのインターセプタ・シーケンスを指定する必要があります。
Oracle TSAMのデフォルト・プラグインをOracle Tuxedoのプラグイン・フレームワークから削除する場合は、カスタム・プラグインで相関IDを指定する必要があります。例:
if (monctl->mon_flag & PI_CORRID_REQUIRED) {
strcpy(monctl->corr_id, mygetid());
}
「mygetid(
)」は、想定される識別子の生成ルーチンを示します。新しい識別子の長さは、MONITORCTLのcorr_idのサイズを超えることはできません。
識別子を作成するには、カスタム・プラグインでOracle TSAMフレームワーク・サービスを使用して相関識別子を取得することができます。リスト3-12は、識別子の生成例を表示します。
extern int _TMDLLENTRY tmmon_getcorrid(char *obuf, int len);
...
if (monctl->mon_flag & PI_CORRID_REQUIRED) {
char new_corrid[MAXCORRIDLEN];
if (tmmon_getcorrid(new_corrid, sizeof(new_corrid)) == 0 ) {
strpcy(monctl->corr_id,new_corrid);
}
}
...
注意: | Oracle TSAMフレームワークの相関ID生成ルーチンを使用する場合、libtsamがプラグインにリンクされている必要があります。 |
サービスのモニタリング手順は単純です。サービス・ルーチンの呼出しの前後にデータが収集されます。リクエストが実行されるときにプラグインが呼び出され、クライアントに応答が返信されます。
この例では、ルーチンは渡されたFML32バッファを出力します。
static TM32I _TMDLLENTRY print_svc(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
表3-8に、サービス・モニタリング・プラグイン・ルーチン・メトリックを示します。
Oracle TSAMは、いくつかのタイプのOracle Tuxedoシステム・サーバー・モニタリング(GWTDOMAIN、BRIDGEおよびGWWS)をサポートしています。モニタリングは、スループット、未処理リクエスト数、およびネットワークのキューに登録されているメッセージ数を対象としています。プラグインは、Oracle TSAMフレームワークによって定期的に呼び出されます。間隔は、モニタリング・ポリシーにより指定されます。実行中のサーバーの操作中にデータが収集されます。
この例では、ルーチンは渡されたFML32バッファを出力します。
static TM32I _TMDLLENTRY print_sys(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
表3-9に、システム・サーバー・モニタリング・プラグイン・ルーチン・メトリックを示します。
Oracle TSAMは、XAトランザクション内の重要なルーチンの呼出しもトレースします。スコープには、tpbegin
、tpcommit
、tpabort
、xa_xxx呼び出し、およびGWTDOMAINSトランザクション・ルーチンが含まれます。
この例では、ルーチンは渡されたFML32バッファを出力します。
static TM32I _TMDLLENTRY print_tran(perf_mon_1 * ip,FBFR32 **buf, MONITORCTL * monctl, TM32U flags)
{
Fprint32(*buf);
return(0);
}
リスト3-10は、通常使用されるトランザクション・モニタリング・プラグイン・ルーチンのメトリックのリストです。
注意: | プラグインは、Oracle Tuxedoインフラストラクチャで実行されます。よくテストしてからOracle Tuxedo本番環境に構成する必要があります。 |
Oracle Tuxedoでは、epifreg
コマンドを使用して、プラグインがOracle Tuxedoレジストリに登録されます。これにより、インフラストラクチャが実行時にプラグインを呼び出すことができます。Oracle TSAMでは、Oracle TSAMフレームワークを使用してプラグインが呼び出されます。
リスト3-13では、プラグインの呼出しにepifreg
コマンドの使用方法を示します。
epifreg -r -p abc/tuxedo/tsam -i engine/performance/monitoring \
-o SYSTEM -v 1.0 -f /test/abc/customplugin.so -e plugin_entry
epifregedt -s -k "SYSTEM/impl/bea/performance/monfan" \
-a InterceptionSeq=bea/performance/monshm \
-a InterceptionSeq=abc/tuxedo/tsam
この場合は、カスタム・プラグインをOracle Tuxedoに登録するために次の2つの手順を実行する必要があります。
epifregedt
」コマンドを使用したファンアウト・プラグインの「InterceptionSeq
」属性変更 Oracle TSAMは、ファンアウト・プラグイン・メカニズムをサポートしています。これにより、複数のプラグインを同時に操作することができます。Oracle TSAMエージェントには、ファンアウト・プラグインおよびデフォルト・インターセプタ・プラグインが備わっています。カスタム・プラグインは追加インターセプタ・プラグインです。
「-a InterceptionSeq=xxx
」オプションを使用すると、ファンアウト・プラグインは、指定した順番でインターセプタ・プラグインを呼び出すことを示します。「xxx」は 実装IDです。この例では、Oracle Tuxedoのデフォルト・インターセプタ・プラグイン実装IDである「bea/performance/monshm
」が、カスタム・プラグイン実装IDである「abc/tuxedo/tsam
」の前に呼び出されます。
epifregedt
」を使用して、適切な「InterceptionSeq
」シーケンスを使用して呼出しシーケンスを変更する必要があります。 「epifunreg
」を使用して、指定したプラグインを登録解除することができます。例:
epifunreg -p abc/tuxedo/tsam
カスタム・プラグインの登録解除後、「epifregedt
」を使用して、現在利用可能なプラグインに基づき、ファンアウト・プラグインの呼出しを再度変更することができます。例:
epifregedt -s -k "SYSTEM/impl/bea/performance/monfan" \
-a InterceptionSeq=bea/performance/monshm
注意: | Oracle Tuxedoアプリケーションの停止後、プラグインの登録、登録解除、変更を行うことを強くお薦めします。 |
tpalloc
/tprealloc/tpfree
およびtptypes
を除いて、Oracle Tuxedo ATMI呼出しをプラグインに使用しないでください。モニタリング・ポイントは、Oracle Tuxedoの通信フレームワークに組み込まれます。組込みATMI呼出しでは、現在のOracle Tuxedoコンテキストが損なわれる可能性があります。