|
以下の節では、Windows および UNIX システムにおける Oracle Tuxedo ATMI Workstation コンポーネントの使用について説明します。
ワークステーション用のクライアント プログラムは、Oracle Tuxedo システムの管理ドメイン内のクライアント プログラム (ネイティブ クライアント) と同じ方法で開発できます。若干の例外を除いて、すべての ATMI および FML 関数をネイティブ クライアントおよびワークステーション クライアントで利用できます。
| 注意 : | ネイティブ クライアントでは利用できるもののワークステーション クライアントでは利用できない ATMI 関数の例として tpadmcall() があります。 |
Oracle Tuxedo リリース 7.1 のワークステーション クライアントは、次のいずれかの場合に、リリース 7.1 より前の Oracle Tuxedo システム アプリケーションと相互運用します。
Oracle Tuxedo リリース 7.1 以降のワークステーション クライアントで、1 つのコンテキストに複数のスレッドがある場合は、リリース 7.1 より前の Oracle Tuxedo システムとは相互運用しません。
ワークステーション クライアントのプログラムをコンパイルし、リンクするには、buildclient(1) コマンドを使用します。ネイティブ ノード (Oracle Tuxedo システムがフル インストールされているノード) でワークステーション クライアントを作成する場合は、-w オプションを指定し、クライアントの作成にはワークステーション ライブラリが必要であることを示します。指定しない場合、デフォルトでは、ネイティブ ノードにあるネイティブ ライブラリとワークステーション ライブラリのうち、ネイティブ ライブラリが使用されます。つまり、-w オプションを指定すると、ワークステーション クライアントでは正しいライブラリが使用されることが保証されます。ワークステーションには、ワークステーション ライブラリしかないため、-w オプションを指定する必要はありません。
以下のコード リストは、ネイティブ ノードでの buildclient(1) コマンドラインの例です。
TUXDIR=/var/opt/tuxedo CC=ncc; export TUXDIR CC
buildclient -w -o wsclt -f wsclt.c -f “userlib1.a userlib2.a”
-o オプションには、出力ファイルの名前を指定します。入力ファイルを指定するには、-f firstfiles オプションを使用し、システム ライブラリより先にリンクされることを示します。上の例に示すように、TUXDIR 環境変数を定義し、buildclient コマンドの実行時にシステム ライブラリが検索されるようにしなければなりません。CC は、デフォルトで cc になりますが、上の例のように、別のコンパイラを設定することもできます。
wud および wud32 は、Oracle Tuxedo システムに組み込まれているワークステーション用のドライバ プログラムです。これらのドライバ プログラムは、ワークステーション ライブラリを使用して作成する、標準的な Oracle Tuxedo のクライアント プログラムである ud および ud32 に基づいています。
Oracle Tuxedo システム サーバに FML バッファを送信するには、wud(1) を使用します。FBFR32 型の FML32 フィールド化バッファの場合は、wud32 を使用します。
wud をセキュリティ付きアプリケーションで実行する場合は、アプリケーション パスワードを指定しないとアプリケーションにアクセスできません。端末から標準入力を行う場合に wud を実行すると、アプリケーション パスワードの入力を求められます。wud では通常、スクリプトからクライアント プログラムを実行しますが、この場合、パスワードは APP_PW 環境変数から取得されます。アプリケーション パスワードが必要な場合に、この環境変数が指定されていないと、wud は異常終了します。
APP_PW 環境変数と、コンフィグレーション ファイルの SECURITY パラメータ (APP_PW を指定するとセキュリティ機能が有効になる) を混同しないでください。
開発およびテストが終了したクライアント プログラムは、ワークステーションに移動でき、ユーザ側で利用可能になります。
次の表は、Oracle Tuxedo システムの Workstation コンポーネントをインストールした場合のワークステーション クライアントのディレクトリ構造を示しています。
ワークステーション クライアントでは、いくつかの環境変数を使用します。次の表は、ワークステーション クライアントがアプリケーションに参加しようとするときに、tpinit(3c) または TPINITIALIZE(3cbl) によってチェックされる環境変数を示しています。これらの環境変数の設定方法については、『Oracle Tuxedo アプリケーションの設定』の「ワークステーション クライアントの定義」を参照してください。
TPMBENC で定義されたコードセットのエンコーディング名は属性として自動的にバッファに追加され、バッファ データと共に送信先のサーバ プロセスに送信される。
TPMBACONV が設定されていると見なすと、TPMBENC で定義されたコードセットのエンコーディング名は、受信されたバッファ内のコードセット エンコーディング名と自動的に比較される。名前が同じではない場合、MBSTRING バッファのデータは、ワークステーション クライアントに配信される前に、TPMBENC で定義されたエンコーディングに自動的に変換される。
|
|||
TPMBENC で定義されたエンコーディングに自動的に変換するかどうかを指定する。デフォルトでは自動変換は無効になっている。受信した MBSTRING バッファのデータは、エンコーディングの変換はされないままでワークステーション クライアントに配信される。TPMBACONV を Y (yes) などの NULL 以外の値に設定すると、自動変換が有効になる。
|
|||
URLENTITYCACHEDIR 変数には、キャッシュするファイルの絶対パス名を指定する。URLENTITYCACHEDIR を指定しない場合、デフォルトのディレクトリは URLEntityCachedir になる。このディレクトリはワークステーション クライアント プロセスの現在の作業ディレクトリ内に作成され、適切な書き込み権が設定されている。
|
|||
WSRPLYMAX を使用して低い制限値を設定するかどうかは、マシンの空きメモリに応じて異なる。応答をディスクに書き込むと、パフォーマンスが大幅に低下する。
|
|||
WSTYPE を指定しない場合は、ネイティブ サイトで指定していなくてもエンコードが行われる。ワークステーションのサイトとネイティブ サイトには、明示的に同じ WSTYPE を指定し、エンコードまたはデコードの処理が実行されないようにする。
|
UNIX ワークステーション上のワークステーション クライアントでは、使用する Oracle Tuxedo システムの機能に応じて、上記以外の環境変数が必要になる場合があります。状況に応じて必要となる変数については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「compilation(5)」リファレンス ページを参照してください。
作成した環境ファイルは、tpinit(3c) または TPINITIALIZE(3cbl) の呼び出し時に読み込まれます。次のコード リストは、2 つの異なるアプリケーションで使用されるサンプル ファイルです。
TUXDIR=/opt/tuxedo
[application1]
;これはコメントです
/* これはコメントです */
# これはコメントです
// これはコメントです
set FIELDTBLS=app1_flds
set FLDTBLDIR=/opt/app1/udataobj
[application2]
FIELDTBLS=app2_flds
FLDTBLDIR=/opt/app2/udataobj
variable=valueまたはset variable=value
ここで、variable は、先頭がアルファベット文字またはアンダースコア文字で、全体が英数字またはアンダースコア文字のみからなる文字列です。また、value には改行文字を除くすべての文字を使用できます。
value では、${env} という形式の文字列は、既に環境内にある変数を使用して展開される。前方参照はサポートされていません。値が設定されていない場合、変数は空の文字列に置換されます。円マーク (¥) を使用して、ドル記号およびそれ自体をエスケープすることができます。その他すべてのシェルのクォートおよびエスケープのメカニズムは無視され、展開された value がそのまま環境に入れられます。[label]
label はセクションの名前であり、上記の variable の規則が適用されます。31 文字を超える部分は切り捨てられます。
[] というラベルもグローバルなセクションを示します。その他の変数は、ラベルがアプリケーション用に指定したラベルと一致する場合にのみ、環境に組み込まれます。
tuxreadenv(3c) 関数を呼び出すと、環境ファイルが読み込まれ、プラットフォームに関係なく、プロセス全体の環境に環境変数が追加されます。変数を利用するには tuxgetenv(3c) を使用し、変数をリセットするには、tuxputenv(3c) を使用します。
void tuxreadenv(char *file, char *label)
file が NULL の場合、デフォルトのファイル名が使用されます。各プラットフォームのデフォルトのファイル名は次のとおりです。
label の値が NULL の場合は、グローバル セクションの変数だけが環境に組み込まれます。label が他の値の場合、グローバル セクションの変数と、label に一致するセクション内の変数が環境に入れられます。
次の場合は、userlog にエラー メッセージが記録されます。
tpinit(3c) を明示的に呼び出すか、または別の ATMI 関数を呼び出して暗黙的に呼び出すたびに、ワークステーション クライアントには tuxreadenv(3c) が自動的に呼び出されます。環境に設定されている WSENVFILE は、環境ファイルを示します。設定されていない場合は、tuxreadenv() にファイル名として NULL が渡され、デフォルトのファイルが使用されます。環境に設定されている WSAPP は、環境ファイルのセクションのラベルとして使用されます。設定されていない場合は、tuxreadenv() にラベル名として NULL が渡されます。アプリケーション クライアントは、tuxreadenv() を明示的に呼び出すこともできます。
実装された環境は、プラットフォームごとに異なる方法で使用できます。環境に対する共通のインタフェースは、既存の tuxgetenv(3c) 関数および tuxputenv(3c) 関数により提供されます。これらの関数により、次の変数にアクセスできます。
Oracle Tuxedo アプリケーションに参加するには、マルチスレッドのワークステーション クライアントは、たとえシングルコンテキスト モードで動作している場合でも、必ず TPMULTICONTEXTS フラグを設定して tpinit() 関数を呼び出さなければなりません。
|