bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo のファイル形式とデータ記述方法

 Previous Next Contents View as PDF  

APPQ_MIB(5) に関する追加情報

移植性

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_APPQSPACENAMETA_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 に関する追加情報を参照してください。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy