bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo のファイル形式とデータ記述方法 > セクション 5 ―ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス |
Tuxedo のファイル形式とデータ記述方法
|
診断
WS_MIB(5) への接続時には、2 つの一般的なタイプのエラーがユーザに返される場合があります。1 つは、管理要求に対する応答を検索する 3 つの ATMI 関数 (tpcall()、tpgetrply()、および tpdequeue()) が返すエラーです。これらのエラーは、該当するリファレンス・ページの記述に従って解釈されます。
ただし、要求がその内容に対応できるシステム・サービスに正常にルーティングされても、システム・サービス側でその要求を処理できないと判断されると、アプリケーション・レベルのサービス障害としてエラーが返されます。このような場合、tpcall() と tpgetrply() は、tperrno を TPESVCFAIL に設定してエラーを返し、以下のようにエラーの詳細を示す TA_ERROR、TA_STATUS、および TA_BADFLD フィールドと一緒に、元の要求を含む応答メッセージを返します。TMQFORWARD(5) サーバ経由でシステムに転送された要求に対してサービス障害が発生すると、元の要求で識別される異常終了キューに障害応答メッセージが追加されます (TMQFORWARD に対して -d オプションが指定されたと見なされる)。
管理要求の処理中にサービス・エラーが発生すると、TA_STATUS という FM32 フィールドにエラーの内容を説明したテキストが設定され、TA_ERROR という FM32 フィールドにはエラーの原因 (下記参照) を示す値が設定されます。以下のエラー・コードは、いずれもマイナスであることが保証されています。
以下の診断コードは TA_ERROR で戻されるもので、管理要求が正常に完了したことを示します。これらのコードはマイナスでないことが保証されています。
相互運用性
このリファレンス・ページで定義されているヘッダ・ファイルおよびフィールド・テーブルは、BEA Tuxedo リリース 5.0 以降で利用できます。これらのヘッダやテーブルで定義するフィールドはリリースが変わっても変更されません。ただし、以前のリリースで定義されていない新しいフィールドが追加される場合があります。AdminAPI には、要求を作成するために必要なヘッダ・ファイルとフィールド・テーブルがあれば、どのサイトからでもアクセスできます。T_WSL および T_WSH クラスは、BEA Tuxedo システム・リリース 6.0 で新しく追加されたクラスです。そのため、AdminAPI を介して旧リリースのサイト上で WSL プロセスと WSH プロセスをローカル管理することはできません。ただし、このリファレンス・ページに定義された管理機能の多くは、リリース 6.0 のサイトと相互運用していれば、リリース 6.0 より前のサイトでも使用できます。リリースが異なるサイト (共にリリース 6.0 以降) を相互運用する場合、当該リリースの MIB マニュアル・ページに定義されるように、旧サイト上の情報はアクセスおよび更新可能で、以降のリリースで利用可能な情報のサブセットとなります。
移植性
BEA Tuxedo システムの MIB を使用した管理作業をサポートするために必要な既存の FML32 および ATMI 関数、さらにこのリファレンス・ページに定義するヘッダ・ファイルとフィールド・テーブルは、すべてのサポート対象ネイティブ・プラットフォームとワークステーション・プラットフォームで使用可能です。
使用例
以下の例は、TM_MIB(5) と WS_MIB(5) を組み合わせてワークステーション・グループを順番に非アクティブ化するコードです。
フィールド・テーブル
属性フィールド識別子にアクセスするには、フィールド・テーブル tpadm が必要です。そのためには、次のようにシェルで入力します。
$ FIELDTBLS=tpadm
$ FLDTBLDIR=${TUXDIR}/udataobj
$ export FIELDTBLS FLDTBLDIR
ヘッダ・ファイル
次のヘッダ・ファイルがインクルードされます。
#include <atmi.h>
#include <fml32.h>
#include <tpadm.h>
ワークステーション・グループの中断
以下のコードは、ワークステーション・グループの状態を SUSpended に設定します。このように設定すると、ワークステーション・グループはワークステーション・クライアントからの新しい接続を受け入れることができなくなり、現在グループの一部であるすべてのワークステーション・クライアントが一時停止します。このコードと後続のコードは、対象としているワークステーション・グループを識別するためのローカル変数 ta_srvgrp と ta_srvid が既に設定されているという前提で書かれています。
/* 入力バッファと出力バッファの割り当て */ ibuf = tpalloc("FML32", NULL, 1000);
obuf = tpalloc("FML32", NULL, 1000);
/* 要求タイプを定義する MIB(5) 属性を設定 */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_WSL", 0);
/* WS_MIB(5) 属性を設定 */
Fchg32(ibuf, TA_SRVGRP, 0, ta_srvgrp, 0);
Fchg32(ibuf, TA_SRVID, 0, (char *)ta_srvid, 0);
Fchg32(ibuf, TA_SUSPENDED, 0, "ALL", 0);
/* 要求を作成 */
if (tpcall(".TMIB", (char *)ibuf, 0, (char **)obuf, olen, 0) 0) {
fprintf(stderr, "tpcall failed: %s¥en", tpstrerror(tperrno));
if (tperrno == TPESVCFAIL) {
Fget32(obuf, TA_ERROR, 0,(char *)ta_error, NULL);
ta_status = Ffind32(obuf, TA_STATUS, 0, NULL);
fprintf(stderr, "Failure: %ld, %s¥en",
ta_error, ta_status);
}
/* 追加のエラー処理 */
}
/* 今後使用するために論理マシン識別子をコピー */
strcpy(ta_lmid, Ffind32(obuf, TA_LMID, 0, NULL));
WSH オブジェクトのリストの取得
既存の入力バッファを使って、クラスと操作を変更して新しい要求を作成します。特定の T_WSL オブジェクトのキー・フィールド、ta_srvgrp と ta_srvid に関連付けられているすべての T_WSH オブジェクトを検索します。検索を効率化するため、TA_FILTER 属性を設定します。
/* 要求タイプを定義する MIB(5) 属性を設定 */ Fchg32(ibuf, TA_CLASS, 0, "T_WSH", 0);
Fchg32(ibuf, TA_OPERATION, 0, "GET", 0);
longval = TA_WSHCLIENTID;
Fchg32(ibuf, TA_FILTER, 0, (char *)longval, 0);
/* WS_MIB(5) 属性を設定 */
Fchg32(ibuf, TA_LMID, 0, ta_lmid, 0);
/* 別の出力バッファを割り当てて TA_WSHCLIENTID 値を保存 */
wshcltids = tpalloc("FML32", NULL, 1000);
/* 要求を作成 */
tpcall(".TMIB", (char *)ibuf, 0, (char **)wshcltids, olen, 0);
/* 取得数を確認 */
Fget32(wshcltids, TA_OCCURS, 0,(char *)wshcltcnt, NULL);
T_CLIENT オブジェクトの取得
検索した TA_WSHCLIENTID 値を使用して、このワークステーション・グループ内のワークステーション・クライアントの関連付けられた TA_CLIENTID 値のリストを検索します。
/* 要求バッファを初期化 */ Finit32(ibuf, Fsizeof32(ibuf));
/* 要求タイプを定義する MIB(5) 属性を設定 */
Fchg32(ibuf, TA_OPERATION, 0, "GET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_CLIENT", 0);
longval = TA_CLIENTID;
Fchg32(ibuf, TA_FILTER, 0, (char *)longval, 0);
longval = TA_WSHCLIENTID;
Fchg32(ibuf, TA_FILTER, 1, (char *)longval, 0);
/* WS_MIB(5) 属性を設定 */
Fchg32(ibuf, TA_LMID, 0, ta_lmid, 0);
Fchg32(ibuf, TA_WSC, 0, "Y", 0);
if (wshcltcnt == 1) {
/* 1 だけなので、それをキー・フィールドとして使用 */
Fchg32(ibuf, TA_WSHCLIENTID, 0,
Ffind32(wshcltids, TA_WSHCLIENTID, 0, NULL));
}
/* 出力バッファを割り当てて TA_CLIENTID/TA_WSHCLIENTID 値を保存 */
cltids = tpalloc("FML32", NULL, 1000);
/* 要求を作成 */
tpcall(".TMIB", (char *)ibuf, 0, (char **)cltids, olen, 0);
/* 取得数を確認 */
Fget32(cltids, TA_OCCURS, 0,(char *)cltcnt, NULL);
/* 必要な場合、関連付けられていないクライアントを削除 */
if (wshcltcnt > 1) {
for (i=(cltcnt-1); i >= 0 ;i--) {
p = Ffind32(cltids, TA_WSHCLIENTID, i, NULL);
for (j=0; j wshcltcnt ;j++) {
q = Ffind32(wshcltids, TA_WSHCLIENTID, j, NULL);
if (strcmp(p, q) == 0) {
break; /* このクライアントは現在のグループに所属 */
}
}
if (j >= wshcltcnt) {
/* クライアントが見つからないのでリストから削除 */
Fdel32(cltids, TA_CLIENTID, i);
Fdel32(cltids, TA_WSHCLIENTID, i);
cltcnt--;
}
}
}
T_CLIENT オブジェクトへの通知
検索した TA_CLIENTID 値を使用して、このワークステーション・グループ内のワークステーション・クライアントにログオフを通知します。
notstr = tpalloc("STRING", NULL, 100);
(void)strcpy(notstr, "Please logoff now!");
/* 関係するクライアントをループ処理して一時停止 */
for (i=0; i cltcnt ;i++) {
p = Ffind32(cltids, TA_CLIENTID, i, NULL);
/* クライアントにログオフを通知 */
tpconvert(p, (char *)ci, TPCONVCLTID);
tpnotify(ci, notptr, 0, 0);
}
T_CLIENT オブジェクトの非活性化
検索した TA_CLIENTID 値を使用して、このワークステーション・グループ内の残りのワークステーション・クライアントを非活性化します。既に非活性化されているクライアントは SET でエラーを返しますが、これは無視します。
/* 要求バッファを初期化 */
Finit32(ibuf, Fsizeof32(ibuf));
/* 要求タイプを定義する MIB(5) 属性を設定 */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_CLIENT", 0);
Fchg32(ibuf, TA_STATE, 0, "DEAd", 0);
/* 関連するクライアントをループ処理して非活性化 */
for (i=0; i cltcnt ;i++) {
p = Ffind32(cltids, TA_CLIENTID, i, NULL);
Fchg32(ibuf, TA_CLIENTID, 0, p);
/* 要求を作成 */
tpcall(".TMIB", (char *)ibuf, 0, (char **)obuf, olen, 0);
}
T_WSL オブジェクトの非活性化
T_WSL オブジェクトを非活性化します。これにより、関連付けられたアクティブな T_WSH オブジェクトが自動的に非アクティブ化されます。
/* 要求タイプを定義する MIB(5) 属性を設定 */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_WSL", 0);
Fchg32(ibuf, TA_STATE, 0, "INActive", 0);
/* WS_MIB(5) 属性を設定 */
Fchg32(ibuf, TA_SRVGRP, 0, ta_srvgrp, 0);
Fchg32(ibuf, TA_SRVID, 0, (char *)ta_srvid, 0);
/* 要求を作成 */
tpcall(".TMIB", (char *)ibuf, 0, (char **)obuf, olen, 0);
}
ファイル
${TUXDIR}/include/tpadm.h, ${TUXDIR}/udataobj/tpadm
関連項目
tpacall(3c)、tpalloc(3c)、tpcall(3c)、tpdequeue(3c)、tpenqueue(3c)、tpgetrply(3c)、tprealloc(3c)、FML 関数の紹介、Fadd、Fadd32(3fml)、Fchg、Fchg32(3fml)、Ffind、Ffind32(3fml)、MIB(5)、TM_MIB(5)
『BEA Tuxedo アプリケーションの設定』
『BEA Tuxedo アプリケーション実行時の管理』
『C 言語を使用した BEA Tuxedo アプリケーションのプログラミング』
『FML を使用した BEA Tuxedo アプリケーションのプログラミング』
WSL(5)
名前
WSL-ワークステーション・リスナ・サーバ
形式
WSL SRVGRP="identifier"
SRVID="number"
CLOPT="[-A] [servopts options] -- -n netaddr [-d device]
[-w WSHname] [-t timeout-factor] [-T Client-timeout]
[-m minh] [-M maxh] [-x mpx-factor]
[-p minwshport] [-P maxwshport] [-I init-timeout]
[-c compression-threshold] [-k compression-threshold]
[-K {client|handler|both|none}]
[-z bits] [-Z bits] [-H external-netaddr][-N network-timeout]"
機能説明
ワークステーション・リスナは、ワークステーション・クライアントからネイティブ・サービスへのアクセスを可能にする BEA Tuxedo システム提供のサーバです。アプリケーション管理者は、SERVERS セクションでワークステーション・リスナ・サーバをアプリケーション・サーバとして指定することにより、ワークステーションからアプリケーションへのアクセスを許可します。ワークステーション・リスナとワークステーション・ハンドラの処理を指定するには、関連するコマンド行オプションを使用します。
位置指定、サーバ・グループ、サーバ ID、その他の汎用サーバ関連パラメータは、サーバ用に定義されているコンフィギュレーション・ファイル機構を使用してワークステーション・リスナに関連付けられます。ワークステーション・リスナ専用のコマンド行オプションを使用して、カスタマイズすることもできます。
アプリケーションの一部として WSL が起動するたびに、単一の既知のネットワーク・アドレスから、ワークステーション上で作業するユーザのための代替クライアントとして機能する一群のワークステーション・ハンドラ (WSH) へアクセスすることを認めることにより、多数のワークステーション・クライアントがアプリケーションにアクセスできるようになります。WSH は、アプリケーション・ワークステーションからのワークロードに対応するために、必要に応じて WSL によって動的に起動および停止されます。アプリケーション管理者に対する利点としては、少数のネイティブ・サイト・プロセス (WSH) によって、多数のクライアントをサポートすることができるため、ネイティブ・サイトでのプロセス数を減らすことができるという点、また、ネイティブ・サイトが、ワークステーション・サイトにある掲示板上の情報を維持するためのオーバーヘッドを負う必要がなくなるという点が挙げられます。
以下の WSL 固有のコマンド行オプションを使用できます。これらのコマンド行オプションは、CLOPT パラメータの二重ダッシュ (--) の後ろに指定できます。
//#.#.#.#:port_number
注記 一部のポート番号は、お使いのシステムで使用されるトランスポート・プロトコル (TCP/IP など) のために予約されている場合があります。予約されているポート番号を確認するには、トランスポート・プロトコルのマニュアルを調べてください。
[-P maxwshport]
注記 一部のポート番号は、お使いのシステムで使用されるトランスポート・プロトコル (TCP/IP など) のために予約されている場合があります。予約されているポート番号を確認するには、トランスポート・プロトコルのマニュアルを調べてください。
注記 リンク・レベルの暗号化の値 40 は、下位互換性を維持するために提供されています。
注記 リンク・レベルの暗号化の値 40 は、下位互換性を維持するために提供されています。
MAXWSCLIENTS の値がゼロの場合など、WSL がワークステーション・クライアントをサポートするのを妨げるコンフィギュレーションでは、起動時に WSL が異常終了します。
移植性
WSL は、サポートされているすべてのサーバ・プラットフォームで BEA Tuxedo システム提供のサーバとしてサポートされます。
相互運用性
WSL は相互運用するアプリケーションで実行できますが、BEA Tuxedo リリース 4.2 以降のノードで実行する必要があります。
使用例
*SERVERS
WSL SRVGRP="WSLGRP" SRVID=1000 RESTART=Y GRACE=0
CLOPT="-A -- -n 0x0002ffffaaaaaaaa -d /dev/tcp"
WSL SRVGRP="WSLGRP" SRVID=1001 RESTART=Y GRACE=0
CLOPT="-A -- -n 0x0002aaaaffffffff -d /dev/tcp -H 0x0002MMMMdddddddd"
WSL SRVGRP="WSLGRP" SRVID=1002 RESTART=Y GRACE=0
CLOPT="-A -- -n //hostname:aaaa -d /dev/tcp -H //external_hostname:MMMM"
関連項目
buildwsh(1)、servopts(5)、UBBCONFIG(5)
『BEA Tuxedo アプリケーションの設定』
『BEA Tuxedo アプリケーション実行時の管理』
『C 言語を使用した BEA Tuxedo アプリケーションのプログラミング』
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |