bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo のファイル形式とデータ記述方法 > セクション 5 ―ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス |
Tuxedo のファイル形式とデータ記述方法
|
移植性
BEA Tuxedo システムの MIB を使用した管理作業をサポートするために必要な既存の FML32 および ATMI 関数、さらにこのリファレンス・ページに定義するヘッダ・ファイルとフィールド・テーブルは、すべてのサポート対象ネイティブ・プラットフォームとワークステーション・プラットフォームで使用可能です。
相互運用性
この MIB は、BEA Tuxedo 6.0 以降が実行されているサイト (ネイティブおよび Workstation の両方) からのみアクセスできます。
BEA Tuxedo 6.0 より前のリリースが実行されているサイトがアプリケーション内でアクティブ化された場合、この MIB による管理アクセスは次のとおり制限されます。
リリースが異なるサイト (共にリリース 6.0 以降) を相互運用する場合、当該リリースの MIB マニュアル・ページに定義されるように、旧サイト上の情報はアクセスおよび更新可能で、以降のリリースで利用可能な情報のサブセットとなります。
使用例
以下に、アプリケーション・キュー・スペース、キュー、メッセージ、およびトランザクションに対する各種操作の実行方法を示すコードを示します。
各コードの前には、次のように、FML32 型付きバッファを割り当てるコードを追加してください。
rqbuf = tpalloc("FML32", NULL, 0);
バッファにデータを入力したら、各コードの後には、次のような、要求を送信し、応答を受信するコードを追加します。
flags = TPNOTRAN | TPNOCHANGE | TPSIGRSTRT;
rval = tpcall(".TMIB", rqbuf, 0, rpbuf, rplen, flags);
詳細については、MIB(5) を参照してください。
フィールド・テーブル
属性フィールド識別子にアクセスするには、フィールド・テーブル tpadm が必要です。そのためには、次のようにシェルで入力します。
$ FIELDTBLS=tpadm
$ FLDTBLDIR=${TUXDIR}/udataobj
$ export FIELDTBLS FLDTBLDIR
ヘッダ・ファイル
次のヘッダ・ファイルが必要です。
#include <atmi.h>
#include <fml32.h>
#include <tpadm.h>
ライブラリ
${TUXDIR}/lib/libtmib.a, ${TUXDIR}/lib/libqm.a, ${TUXDIR}/lib/libtmib.so.<rel>, ${TUXDIR}/lib/libqm.so.<rel>, ${TUXDIR}/lib/libqm.lib
buildclient を使用するときには、ライブラリを手動でリンクする必要があります。次のように使用してください。 -L${TUXDIR}/lib -ltmib -lqm
アプリケーション・キュー・スペースの作成
通常、アプリケーション・キュー・スペースを作成するには 2 つの操作が必要です。最初の操作ではキュー・スペースを割り当てる BEA Tuxedo システム・デバイスを作成し、次の操作ではキュー・スペース自体を作成します。
/* 上記を参照してバッファを割り当てる */
/* SITE1 に新しいデバイスを作成するための要求を作成*/
Fchg32(rqbuf, TA_OPERATION, 0, "SET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_DEVICE", 0);
Fchg32(rqbuf, TA_STATE, 0, "NEW", 0);
Fchg32(rqbuf, TA_CFGDEVICE, 0, "/dev/q/dsk001", 0);
Fchg32(rqbuf, TA_LMID, 0, "SITE1", 0);
size = 500;
Fchg32(rqbuf, TA_DEVSIZE, 0, (char *)size, 0);
/* 上記を参照して要求を作成 */
/* 再使用のために同じバッファを再初期化する */
Finit32(rqbuf, (FLDLEN) Fsizeof32(rqbuf));
/* キュー・スペースを作成するための要求を作成 */
Fchg32(rqbuf, TA_OPERATION, 0, "SET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_APPQSPACE", 0);
Fchg32(rqbuf, TA_STATE, 0, "NEW", 0);
Fchg32(rqbuf, TA_APPQSPACENAME, 0, "QSPACE1", 0);
Fchg32(rqbuf, TA_QMCONFIG, 0, "/dev/q/dsk001", 0);
Fchg32(rqbuf, TA_LMID, 0, "SITE1", 0);
Fchg32(rqbuf, TA_ERRORQNAME, 0, "errque", 0);
ipckey = 123456;
Fchg32(rqbuf, TA_IPCKEY, 0, (char *)ipckey, 0);
maxmsg = 100;
Fchg32(rqbuf, TA_MAXMSG, 0, (char *)maxmsg, 0);
maxpages = 200;
Fchg32(rqbuf, TA_MAXPAGES, 0, (char *)maxpages, 0);
maxproc = 50;
Fchg32(rqbuf, TA_MAXPROC, 0, (char *)maxproc, 0);
maxqueues = 10;
Fchg32(rqbuf, TA_MAXQUEUES, 0, (char *)maxqueues, 0);
maxtrans = 100;
Fchg32(rqbuf, TA_MAXTRANS, 0, (char *)maxtrans, 0);
/* 上記を参照して要求を作成 */
アプリケーション・キュー・スペースへのキューの追加
以下のコードでは、上の例で作成したキュー・スペースに新しいキューを作成します。
/* 要求を作成 */
Fchg32(rqbuf, TA_OPERATION, 0, "SET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_APPQ", 0);
Fchg32(rqbuf, TA_STATE, 0, "NEW", 0);
Fchg32(rqbuf, TA_APPQNAME, 0, "errque", 0);
Fchg32(rqbuf, TA_APPQSPACENAME, 0, "QSPACE1", 0);
Fchg32(rqbuf, TA_QMCONFIG, 0, "/dev/q/dsk001", 0);
Fchg32(rqbuf, TA_LMID, 0, "SITE1", 0);
Fchg32(rqbuf, TA_APPQORDER, 0, "PRIO", 0);
/* 上記を参照して要求を作成 */
アプリケーションが認識しているアプリケーション・キュー・スペースの一覧表示
アプリケーションが認識しているアプリケーション・キュー・スペースを一覧表示するには、2 段階の検索を行います。まず、/Q トランザクション・マネージャ TMS_QM を使用するグループがアプリケーション環境設定から検索され、次に各グループが参照しているキュー・スペースが検索されます。以下のコードは、キュー・スペースを使用する各 GROUP エントリに 1 つの論理マシンが対応付けられていると仮定します (つまり、サーバ移行は未使用)。
コード リスト 10-1 アプリケーションが認識しているアプリケーション・キュー・スペースの一覧表示
/* すべての TMS_QM グループを検索する要求を作成 */
Fchg32(rqbuf, TA_OPERATION, 0, "GET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_GROUP", 0);
Fchg32(rqbuf, TA_TMSNAME, 0, "TMS_QM", 0);
fldid1 = TA_OPENINFO;
fldid2 = TA_LMID;
Fchg32(rqbuf, TA_FILTER, 0, (char *)fldid1, 0);
Fchg32(rqbuf, TA_FILTER, 0, (char *)fldid2, 1);
/* アプリケーションに参加したと見なして要求を作成 */
rval = tpcall(".TMIB", rqbuf, 0, rpbuf, rplen, flags);
/* TMS_QM グループごとに、キュー・スペースを検索する要求を作成 */
rval = Fget32(*rpbuf, TA_OCCURS, 0, (char *)occurs, NULL);
for (i = 0; i occurs; i++) {
/* バッファを再初期化して、すべての共通属性を設定 */
Finit32(rqbuf, (FLDLEN) Fsizeof32(rqbuf));
Fchg32(rqbuf, TA_OPERATION, 0, "GET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_APPQSPACE", 0);
/* デバイスとキュー・スペース名を調べるための OPENINFO を取得 */
/* OPENINFO の形式は、<resource-mgr>:<qmconfig>:<appqspacename> */
/* Windows の場合は、<resource-mgr>:<qmconfig>;<appqspacename> */
rval = Fget32(rpbuf, TA_OPENINFO, i, openinfo, NULL);
/* デバイスは、OPENINFO の 2 つ目のフィールド */
qmconfig = strchr(openinfo, ':')+ 1;
/* キュー・スペース名は、OPENINFO の 3 つ目のフィールド */
#if defined(_TMDOWN) || defined(_TM_NETWARE)
#define pathsep ";" /* PATH の区切り文字*/
#else
#define pathsep ":"/* PATH の区切り文字 */
#endif
appqspacename = strchr(qmconfig, pathsep);
appqspacename[0] = '¥e0'; /* qmconfig をヌルで終了するように指定 */
appqspacename++; /* ヌルに値を追加 */
/* APPQSPACENAME と QMCONFIG キーを設定 */
Fchg32(rqbuf, TA_APPQSPACENAME, 0, appqspacename, 0);
Fchg32(rqbuf, TA_QMCONFIG, 0, qmconfig, 0);
/* LMID を取得 (このグループに対する移行はないものと見なす) */
rval = Fget32(rpbuf, TA_LMID, i, lmid, NULL);
Fchg32(rqbuf, TA_LMID, 0, lmid, 0);
/* 要求を作成 */
rval = tpcall(".TMIB", rqbuf, 0, rpbuf2, rplen2, flags);
}
上記のコードでは、キュー・スペースが作成されていても、アプリケーションのコンフィギュレーションに対応する GROUP エントリがないと、キュー・スペースは検索されません。このようなキュー・スペースは、キュー・スペースのキー・フィールド (TA_APPQSPACENAME、TA_QMCONFIG、および TA_LMID) の優先順位が分かっていなければ検索できません。
アプリケーション・キュー内のメッセージの一覧表示
以下のコードでは、論理デバイス SITE1 上のデバイス /dev/q/dsk001 のキュー・スペース QSPACE1 内のキュー STRING にあるメッセージをすべて検索します。
/* 要求を作成 */ Fchg32(rqbuf, TA_OPERATION, 0, "GET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_APPQMSG", 0);
Fchg32(rqbuf, TA_APPQNAME, 0, "STRING", 0);
Fchg32(rqbuf, TA_APPQSPACENAME, 0, "QSPACE1", 0);
Fchg32(rqbuf, TA_QMCONFIG, 0, "/dev/q/dsk001", 0);
Fchg32(rqbuf, TA_LMID, 0, "SITE1", 0);
/* 上記を参照して要求を作成 */
キュー・スペースを使用するトランザクションの一覧表示
以下のコードでは、キュー・スペース QSPACE1 の中の任意のキューを使用するトランザクションをすべて検索します。
/* 要求を作成 */ Fchg32(rqbuf, TA_OPERATION, 0, "GET", 0);
Fchg32(rqbuf, TA_CLASS, 0, "T_APPQTRANS", 0);
Fchg32(rqbuf, TA_APPQSPACENAME, 0, "QSPACE1", 0);
Fchg32(rqbuf, TA_QMCONFIG, 0, "/dev/q/dsk001", 0);
Fchg32(rqbuf, TA_LMID, 0, "SITE1", 0);
/* 上記を参照して要求を作成 */
ファイル
${TUXDIR}/include/tpadm.h
${TUXDIR}/udataobj/tpadm
関連項目
tpacall(3c)、tpadmcall(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 アプリケーションのプログラミング』
AUTHSVR(5)
名前
AUTHSVR-サーバ提供のユーザ単位の認証
形式
AUTHSVR SRVGRP="identifier" SRVID=number other_parms CLOPT="-A"
説明
AUTHSVR は、BEA Tuxedo に用意されている、認証サービスを備えたサーバです。このサーバを保護されたアプリケーションで使用することにより、クライアントがアプリケーションに参加するときにユーザ単位の認証を行うことができます。このサーバは、アプリケーションへのアクセスを要求しているクライアント・プロセスのための TPINIT 型付きバッファを含むサービス要求を受け付けます。TPINIT 型付きバッファのデータ・フィールドをユーザのパスワードとして使用し、そのパスワードを設定済みパスワードと比較することにより、要求の妥当性をチェックします。要求が妥当であると認められると、クライアントが使用するためのチケットとしてアプリケーション・キーが返されます。
アプリケーション・キーの設定には、tpreturn(3c) の rcode パラメータが使用されます。このパラメータは、妥当性検査に合格するか、パーミッションが拒否されたときに、tpinit(3c) を呼び出したコードに (tpurcode で) 返されます。
AUTHSVR の詳細については、AUTHSVR に関する追加情報を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |