WebLogic Tuxedo Connector プログラマーズ ガイド
WebLogic Tuxedo Connector JATMI VIEW
以下の節では、WebLogic Tuxedo Connector VIEW バッファの使い方について説明します。
WebLogic Tuxedo Connector VIEW バッファの概要
注意 : Tuxedo VIEW バッファの詳細については、「VIEW 型バッファ」を参照してください。
WebLogic Tuxedo Connector を使用すると、非依存型 C 構造体から派生した Tuxedo VIEW バッファ タイプと同様の Java VIEW バッファを作成することができます。これにより、WebLogic Server アプリケーションおよび Tuxedo アプリケーションが共通の構造体を用いて情報を受け渡しできます。WebLogic Tuxedo Connector VIEW バッファは、FML VIEW も FML VIEW/Java 会話もサポートしていません。
VIEW 記述ファイルの作成方法
注意 : fbname
フィールドと null
フィールドは、非依存型 Java 構造体や C 構造体とは関係がなく、Java や C の VIEW コンパイラには無視されます。これらのフィールドにはプレースホルダとして値 (たとえば、ダッシュ) を入れる必要があります。
WebLogic Server アプリケーションと Tuxedo アプリケーションは、VIEW 記述で定義された同一の情報構造を共有する必要があります。VIEW 記述ファイルの各構造体には下記の形式を使用します。
$ /* VIEW 構造体 */
VIEW viewname
type cname fbname count flag size null
各要素の説明は次のとおりです。
ファイル名は VIEW 名と同一です。
ファイルごとに 1 つの VIEW しか持てません。
WebLogic Tuxedo Connector viewj
コンパイラと Tuxedo viewc
コンパイラの両方で同一の VIEW 記述ファイルが使用されます。
viewname は情報構造の名前です。
コメント行は、「#」または「$」文字で始めます。
各構造体用の VIEW 記述ファイルに指定しなければならないフィールドを下表で説明します。
表 8-1 VIEW 記述ファイルのフィールド
フィールド
|
説明
|
type
|
フィールドのデータ型。設定できる型は、short、long、float、double、char、string、carray、または dec_t (パック 10 進数)。
|
cname
|
情報構造内でのフィールド名。
|
fbname
|
無視される。
|
count
|
フィールドの反復回数。
|
flag
|
次のいずれかのオプション フラグを指定する。
|
size
|
STRING および CARRAY バッファ タイプの場合、バッファの値の最大長を指定する。その他のバッファ タイプの場合には、このフィールドは無視される。
|
null
|
ユーザ指定の NULL 値、または、マイナス記号 (-) の場合にはフィールドのデフォルト値を示す。VIEW 型バッファで使用される NULL 値は空の C 構造体メンバーを示す。
デフォルトの NULL 値は、数値型の場合はすべて 0 (dec_t では 0.0)。文字型の場合は \Q\0''。STRING および CARRAY 型では " "。
規約により、エスケープ文字として使用される定数にも、NULL 値を指定できる。VIEW コンパイラが認識するエスケープ定数は右のとおり。\ddd (d は 8 進数)、\0、\n、\t、\v、\r、\f、\\、\'、および \"。
STRING、CARRAY、および char 型の NULL 値を、二重引用符または単一引用符で囲んでもかまわない。ユーザ指定の NULL 値内のエスケープされていない引用符は、VIEW コンパイラでは受け付けられない。
VIEW メンバー記述の NULL フィールドでキーワード「NONE」を指定することもできる。この指定は、そのメンバーには NULL 値がないことを意味する。文字列および文字配列メンバーの最大サイズのデフォルト値は 2660 文字である。
|
サンプル VIEW 記述ファイル
次に、Tuxedo アプリケーションと情報を送受信するために VIEW バッファを使用するサンプル VIEW 記述を示します。この VIEW のファイル名は infoenc
です。
コード リスト 8-1 サンプル VIEW 記述
VIEW infoenc
#type cname fbname count flag size null
float amount AMOUNT 2 - - 0.0
short status STATUS 2 - - 0
init term TERM 2 - - 0
char mychar MYCHAR 2 - - -
string name NAME 1 - 16 -
carray carray1 CARRAY1 1 - 10 -
dec_t decimal DECIMAL 1 - 9 - # viewj/viewj32 では size は無視される
END
viewj コンパイラの使用方法
VIEW 型バッファをコンパイルするには、引数としてパッケージ名と VIEW 記述ファイルの名前を指定して、viewj
コマンドを実行します。出力ファイルはカレント ディレクトリに作成されます。
viewj
コンパイラを使用するには、次のコマンドを入力します。
java weblogic.wtc.jatmi.viewj
[options]
[package] viewfile
viewj32
コンパイラを使用するには、次のコマンドを入力します。
java weblogic.wtc.jatmi.viewj32
[options]
[package] viewfile
このコマンドの引数の定義は次のとおりです。
引数
|
説明
|
options
|
AssociatedFieldHandling を true に設定する。これにより、VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合は、その値を set および get アクセサ メソッドで使用できる。指定しない場合、AssociatedFieldHandling のデフォルト値は false。
JavaBeans の命名規則に従って、set および get アクセサ名を作成する。フィールド名の最初の文字は、set または get プレフィックスを付加する前に大文字に変更される。配列フィールドに対するインデックスの付いた set アクセサのシグネチャは、デフォルト シグネチャの void setAfield(T value, int index) から void setAfield(int index, T value) に変更される。
VIEW 記述ファイルからフィールド名を取得して set または get プレフィックスを追加する方法で、set および get アクセサ名を作成する。WebLogic Server 8.1 SP2 より前のリリースとの互換性がある。-bean_names または -compat_names を指定しない場合、デフォルト値は -compat_names になる。
Tuxedo に送信する文字列のエンコードと Tuxedo から受信する文字列のデコードに対して異なる Java コードを生成する。エンコードのコードでは、各文字列の最後に null 文字を追加する。デコードのコードでは、最初の null 文字を受け取った箇所で各文字列を切り詰める。
TypedView の代わりに、TypedView を拡張した TypedXCommon として出力クラスを生成するために使用する。
TypedView の代わりに、TypedView を拡張した TypedXCType として出力クラスを生成するために使用する。
注意 : -compat_names と -bean_names は相互に排他的なオプション。
|
package
|
.java ソース ファイルに含まれるパッケージ名。
例 : examples.wtc.atmi.simpview
|
viewfile
|
VIEW 記述ファイルの名前。
例 : Infoenc
|
たとえば、
VIEW バッファは次のようにしてコンパイルします。
java weblogic.wtc.jatmi.viewj -compat_names
examples.wtc.atmi.simpview infoenc
VIEW32 バッファは次のようにしてコンパイルします。
java weblogic.wtc.jatmi.viewj32 -compat_names -modify_strings
examples.wtc.atmi.simpview infoenc
VIEW バッファとの情報の受け渡し方法
viewj
および view
j32
コマンドの出力は、VIEW 記述ファイルの各フィールドに対する set
および get
アクセサ メソッドが含まれた .java
ソース ファイルになります。VIEW バッファとの間で情報を受け渡すには、Java アプリケーションでこれらの set
および get
アクセサ メソッドを使用します。
VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合、その値を set
および get
アクセサ メソッドで使用するかどうかを指定するには、AssociatedFieldHandling
フラグを使用します。
set
メソッドは、配列フィールドの数を設定し、文字列または carray フィールドの長さを設定します。
配列に対する get
メソッドは、関連する数のフィールド以下のサイズを持つ配列を返します。
文字列と carray に対する get
メソッドは、関連する長さのフィールド以下の長さを持つデータを返します。
AssociatedFieldHandling
フラグの状態を設定または取得するには、次のいずれかの方法を使用します。
viewj
および viewj32
コンパイラの -associated_fields
オプションを使用して、AssociatedFieldHandling
フラグを true に設定します。
Java アプリケーションで void setAssociatedFieldHandling(boolean state)
メソッドを呼び出して、AssociatedFieldHandling
フラグの状態を設定します。
false の場合、set
および get
メソッドは長さと数のフィールドを無視します。
true の場合、VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合は、その値を set
および get
アクセサ メソッドで使用します。
デフォルトの状態は false です。
Java アプリケーションで boolean getAssociatedFieldHandling()
メソッドを呼び出して、AssociatedFieldHandling
の現在の状態を返します。
JATMI アプリケーションでの VIEW バッファの使用方法
JATMI アプリケーションに VIEW バッファを取り込む際には、下記の手順に従います。
「VIEW バッファとの情報の受け渡し方法」で説明されているとおりに、set および get アクセサ メソッドを使用して、VIEW バッファに情報を渡したり、VIEW バッファから情報を受け取ったりします。
クライアントでアクセサを使用して VIEW バッファと情報を受け渡す方法の例については、WebLogic Server 配布キットの examples/wtc/atmi/simpview/ViewClient.java
ファイルを参照してください。
VIEW コンパイラの出力ファイルをソース コードにインポートします。
必要な場合は、「VIEW 型バッファ」で説明されているとおりに、Tuxedo アプリケーション用の VIEW 記述ファイルをコンパイルし、その出力を C ソースファイルにインクルードします。
コンパイル済み Java VIEW 記述ファイルの完全修飾クラス名と VIEW バッファ タイプ (VIEW または VIEW32) を指定した Resources MBean で WTCServer MBean をコンフィグレーションします。
Tuxedo アプリケーションをビルドし、起動します。
WebLogic Server アプリケーションをビルドし、起動します。