次の項では、WindowsおよびUNIXシステムにおけるOracle Tuxedo ATMIワークステーション・コンポーネントの使用について説明します。
ワークステーション用のクライアント・プログラムは、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システムのワークステーション・コンポーネントをインストールした場合のワークステーション・クライアントのディレクトリ構造を示しています。
ワークステーション・クライアントでは、いくつかの環境変数を使用します。次の表は、ワークステーション・クライアントがアプリケーションに参加しようとするときに、tpinit(3c)またはTPINITIALIZE(3cbl)によってチェックされる環境変数を示しています。これらの環境変数の設定方法については、『Oracle Tuxedoアプリケーションの設定』の「ワークステーション・クライアントの定義」を参照してください。
Oracle Tuxedo 8.1以降を実行するワークステーション・マシンが、割り当てられたMBSTRING型付きバッファに格納するコードセットのエンコーディング名を指定します。ワークステーション・クライアントがMBSTRINGバッファを割り当てて送信すると、
TPMBENC で定義されたコードセットのエンコーディング名は属性として自動的にバッファに追加され、バッファ・データとともに送信先のサーバー・プロセスに送信されます。
ワークステーション・マシンがMBSTRINGバッファを受信して、別の環境変数
TPMBACONV が設定されているとみなすと、TPMBENC で定義されたコードセットのエンコーディング名は、受信されたバッファ内のコードセット・エンコーディング名と自動的に比較されます。名前が同じではない場合、MBSTRINGバッファのデータは、ワークステーション・クライアントに配信される前に、TPMBENC で定義されたエンコーディングに自動的に変換されます。
|
|||
Oracle Tuxedo 8.1以降を実行するワークステーション・マシンが、受信したMBSTRINGバッファのデータを、
TPMBENC で定義されたエンコーディングに自動的に変換するかどうかを指定する。デフォルトでは自動変換は無効になっている。受信したMBSTRINGバッファのデータは、エンコーディングの変換はされないままでワークステーション・クライアントに配信される。TPMBACONV をY (yes)などのNULL以外の値に設定すると、自動変換が有効になる。
|
|||
Oracle Tuxedo 8.1以降を実行するワークステーション・マシンがDTD、スキーマ、およびエンティティ・ファイルをキャッシュするディレクトリを指定する。特に、ワークステーション・クライアント上で動作するApache Xerces-C++パーサーが、DTD、XMLスキーマ、およびエンティティ・ファイルをキャッシュする場所を指定する。
URLENTITYCACHEDIR 変数には、キャッシュするファイルの絶対パス名を指定します。URLENTITYCACHEDIR を指定しない場合、デフォルトのディレクトリはURLEntityCachedir になります。このディレクトリはワークステーション・クライアント・プロセスの現在の作業ディレクトリ内に作成され、適切な書込み権が設定されています。
|
|||
ATMI関数が、アプリケーションからの応答をディスクにダンプする前にバッファに格納するために使用するコア・メモリーの最大容量。tpinit(3c)およびTPINITIALIZE(3cbl)で使用されます。tpgetrply(3c)およびTPGETRPLY(3cbl)で取得した応答および非請求メッセージは、この領域に格納されます。この領域がメッセージでいっぱいの場合、オーバーフローしたメッセージはディスク・ファイルに書き込まれます。システムで指定されているデフォルトの最大値は、256,000バイト。
WSRPLYMAX を使用して低い制限値を設定するかどうかは、マシンの空きメモリーに応じて異なります。応答をディスクに書き込むと、パフォーマンスが大幅に低下します。
|
|||
ワークステーションの種類。ワークステーション・クライアントによって呼び出されたtpinit(3c)およびTPINITIALIZE(3cbl)内で、ネイティブ・サイトとの間でエンコード/デコードの責任範囲について調整するときに使用されます。
WSTYPE を指定しない場合は、ネイティブ・サイトで指定していなくてもエンコードが行われます。両サイトには、明示的に同じWSTYPE 値を指定し、エンコード/デコードの機能を無効にします。
|
UNIXワークステーション上のワークステーション・クライアントでは、使用するOracle Tuxedoシステムの機能に応じて、前述以外の環境変数が必要になる場合があります。状況に応じて必要となる変数については、『Oracle Tuxedoファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』の「compilation(5)」リファレンス・ページを参照してください。
作成した環境ファイルは、tpinit(3c)またはTPINITIALIZE(3cbl)の呼出し時に読み込まれます。次のリストは、2つの異なるアプリケーションで使用されるサンプル・ファイルです。
TUXDIR=/opt/tuxedo
[application1]
;this is a comment
/* this is a comment */
#this is a comment
//this is a comment
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()
関数を呼び出さなければなりません。