BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   C 言語を使用した BEA Tuxedo アプリケーションのプログラミング   |   先頭へ   |   前へ   |   次へ   |   目次

 


サービスの宣言と宣言の取り消し

サーバは起動時に、コンフィギュレーション・ファイルの CLOPT パラメータに指定された値に基づいて、提供するサービスを宣言します。

注記 サーバが宣言するサービスは、buildserver コマンドの実行時に最初に定義されます。-s オプションを使用すると、複数のサービスをカンマ区切りで指定できます。また、宣言されたサービスと異なる名前の関数を呼び出して、サービス要求を処理できます。詳細については、『BEA Tuxedo コマンド・リファレンス』の buildserver(1)を参照してください。

デフォルトでは、サーバに組み込まれたすべてのサービスをそのサーバが宣言します。詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の UBBCONFIG(5) または servopts(5) リファレンス・ページを参照してください。

宣言されたサービスでは掲示板のサービス・テーブル・エントリが使用されるので、リソースが消費される場合があります。そのため、サーバの起動時には、提供されるサービスのサブセットだけを利用できるようにします。アプリケーションで利用できるサービスを制限するには、コンフィギュレーション・ファイルの SERVERS セクションで該当するエントリに CLOPT パラメータを定義し、-s オプションの後に必要なサービスをカンマで区切って指定します。また、-s オプションを使用すると、サービス要求を処理するために呼び出される宣言済みのサービスと異なる名前の関数を呼び出すこともできます。詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の servopts(5) リファレンス・ページを参照してください。

BEA Tuxedo アプリケーションの管理者は、tmadmin(1)advertise および unadvertise コマンドを使用して、サーバで提供されるサービスを管理できます。tpadvertise() および tpunadvertise() 関数を使用すると、要求/応答型サーバまたは会話型サーバでのサービスの宣言を動的に制御できます。ただし、宣言されるサービス、または宣言を取り消すサービスは、要求を行うサービスと同じサーバ内になければなりません。

サービスの宣言

tpadvertise(3c) 関数の呼び出しには、次の文法を使用します。

int
tpadvertise(char *svcname, void *func)

次の表は、tpadvertise() 関数の引数を示しています。

tpadvertise( ) 関数の引数

引数

説明

svcname

宣言するサービス名を指すポインタ。サービス名は 15 文字以下の文字列で指定します。15 文字を超える名前は切り捨てられます。NULL 文字列は指定できません。NULL 文字列が指定されると、エラー (TPEINVAL) になります。

func

サービスを実行するために呼び出される BEA Tuxedo システム関数のアドレスを指すポインタ。通常、この名前とサービス名は同じです。NULL 文字列は指定できません。NULL 文字列が指定されると、エラーになります。

サービス宣言の取り消し

tpunadvertise(3c) 関数は、掲示板のサービス・テーブルからサービス名を削除します。サービス名が削除されたサービスは、宣言されていない状態になります。

tpunadvertise() 関数の呼び出しには、次の文法を使用します。

tpunadvertise(char *svcname)
char *svcname;

tpunadvertise() 関数の引数は、次の表で説明する svcname だけです。

tpunadvertise( ) 関数の引数

引数

説明

svcname

宣言するサービス名を指すポインタ。サービス名は 15 文字以下の文字列で指定します。15 文字を超える名前は切り捨てられます。NULL 文字列は指定できません。NULL 文字列が指定されると、エラー (TPEINVAL) になります。

例: サービスの動的な宣言と宣言の取り消し

次のコード例は、tpadvertise() 関数の使用方法を示しています。このコードでは、サーバ TLR が起動時に TLR_INIT サービスだけを提供するようにコーディングされています。初期化後、TLR_INITDEPOSITWITHDRAW という 2 つのサービスを宣言します。両サービスとも tlr_funcs 関数によって実行され、サーバ TLR に組み込まれています。

DEPOSITWITHDRAW を宣言した後、TLR_INIT は自分自身で宣言を取り消します。

動的な宣言と宣言の取り消し

extern void tlr_funcs()
.
.
.
if (tpadvertise("DEPOSIT", (tlr_funcs)(TPSVCINFO *)) == -1)
check for errors;
if (tpadvertise("WITHDRAW", (tlr_funcs)(TPSVCINFO *)) == -1)
check for errors;
if (tpunadvertise("TLR_INIT") == -1)
check for errors;
tpreturn(TPSUCCESS, 0, transb->data,0L, 0);

 

先頭へ戻る 前のトピックへ 次のトピックへ