ナビゲーションをスキップ

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 記述ファイル

次に、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
int      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

  • -associated_fields :

AssociatedFieldHandling を true に設定する。これにより、VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合は、その値を set および get アクセサ メソッドで使用できる。指定しない場合、AssociatedFieldHandling のデフォルト値は false。

  • -bean_names :

JavaBeans の命名規則に従って、set および get アクセサ名を作成する。フィールド名の最初の文字は、set または get プレフィックスを付加する前に大文字に変更される。配列フィールドに対するインデックスの付いた set アクセサのシグネチャは、デフォルト シグネチャの void setAfield(T value, int index) から void setAfield(int index, T value) に変更される。

  • -compat_names :

VIEW 記述ファイルからフィールド名を取得して set または get プレフィックスを追加する方法で、set および get アクセサ名を作成する。WebLogic Server 8.1 SP2 より前のリリースとの互換性がある。-bean_names または -compat_names を指定しない場合、デフォルト値は -compat_names になる。

  • -modify_strings :

Tuxedo に送信する文字列のエンコードと Tuxedo から受信する文字列のデコードに対して異なる Java コードを生成する。エンコードのコードでは、各文字列の最後に null 文字を追加する。デコードのコードでは、最初の null 文字を受け取った箇所で各文字列を切り詰める。

  • -xcommon :

TypedView の代わりに、TypedView を拡張した TypedXCommon として出力クラスを生成するために使用する。

  • -xtype :

TypedView の代わりに、TypedView を拡張した TypedXCType として出力クラスを生成するために使用する。

注意 : -compat_names-bean_names は相互に排他的なオプション。

package

.java ソース ファイルに含まれるパッケージ名。

例 : examples.wtc.atmi.simpview

viewfile

VIEW 記述ファイルの名前。

例 : Infoenc


 

たとえば、

java weblogic.wtc.jatmi.viewj -compat_names examples.wtc.atmi.simpview infoenc
java weblogic.wtc.jatmi.viewj32 -compat_names -modify_strings examples.wtc.atmi.simpview infoenc

 


VIEW バッファとの情報の受け渡し方法

viewj および viewj32 コマンドの出力は、VIEW 記述ファイルの各フィールドに対する set および get アクセサ メソッドが含まれた .java ソース ファイルになります。VIEW バッファとの間で情報を受け渡すには、Java アプリケーションでこれらの set および get アクセサ メソッドを使用します。

VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合、その値を set および get アクセサ メソッドで使用するかどうかを指定するには、AssociatedFieldHandling フラグを使用します。

AssociatedFieldHandling フラグの状態を設定または取得するには、次のいずれかの方法を使用します。

 


JATMI アプリケーションでの VIEW バッファの使用方法

JATMI アプリケーションに VIEW バッファを取り込む際には、下記の手順に従います。

  1. VIEW 記述子ファイルの作成方法」で説明されているとおりに、アプリケーション用の VIEW 記述ファイルを作成します。
  2. viewj コンパイラの使用方法」で説明されているとおりに、VIEW 記述ファイルをコンパイルします。
  3. VIEW バッファとの情報の受け渡し方法」で説明されているとおりに、set および get アクセサ メソッドを使用して、VIEW バッファに情報を渡したり、VIEW バッファから情報を受け取ったりします。
  4. クライアントでアクセサを使用して VIEW バッファと情報を受け渡す方法の例については、WebLogic Server 配布キットの examples/wtc/atmi/simpview/ViewClient.java ファイルを参照してください。

    注意 : このリリースの WTC のサンプルは、BEA dev2dev Web サイトの「コードライブラリ」ページで入手できます。

  5. VIEW コンパイラの出力ファイルをソース コードにインポートします。
  6. 必要な場合は、「VIEW 型バッファ」で説明されているとおりに、Tuxedo アプリケーション用の VIEW 記述ファイルをコンパイルし、その出力を C ソースファイルにインクルードします。
  7. コンパイル済み Java VIEW 記述ファイルの完全修飾クラス名と VIEW バッファ タイプ (VIEW または VIEW32) を指定した Resources MBean で WTCServer MBean をコンフィグレーションします。コンパイル済み Java VIEW 記述ファイルのクラスを CLASSPATH に指定する必要があります。
  8. Tuxedo アプリケーションをビルドし、起動します。
  9. WebLogic Server アプリケーションをビルドし、起動します。

FML32 バッファに対して VIEW32 データを追加および取得する方法

wtc.jatmi.FViewFld ヘルパー クラスを使用して、FML32 バッファに対して VIEW32 データを追加および取得することができます。このクラスを使用することで、プログラマは FML32 バッファに対して VIEW32 フィールド タイプを使用する JATMI ベースのアプリケーションを簡単に開発できます。

コンフィグレーションの変更は不要です。引き続き、WLS コンフィグレーション ファイルの WTCResources セクションにある ViewTbl32Classes 属性を使用して、VIEW32 クラス パスをコンフィグレーションします。

このヘルパー クラスでは、以下のアクセス メソッドを使用できます。

コード リスト 8-2 TypedFML32 バッファに対して埋め込み TypedVIEW32 バッファを追加および取得する方法

String toConvert = new String("hello world");
TypedFML32 MyData = new TypedFML32(new MyFieldTable());
Long d1 = new Long(1234);
Float d2 = new Float(12.32);
MyView data = new myView();
FviewFld vfld;
data.setadmount((float)100.96);
data.setstatus((short)3);
vfld = new FviewFld("myView", data);

try {
  myData.Fchg(MyFieldTable.FLD0, 0, toConvert);
  myData.Fchg(MyFieldTable.FLD1, 0, 1234);
  myData.Fchg(MyFieldTable.FLD2, 0, d2);
  myData.Fchg(MyFieldTable.myview, 0, vfld);
} catch (Ferror fe) {
  log("An error occurred putting data into the FML32 buffer.The error is " + fe);
}

try {
  myRtn = myTux.tpcall("FMLVIEW", myData, 0);
} catch(TPReplyException tre) {
.
}
TypedFML32 myDataBack = (TypedFML32)myRtn.getReplyBuffer();
 Integer myNewLong;
 Float myNewFloat;
 myView View;
 String myNewString;

try {
  myNewString = (String)myDataBack.Fget(MyFieldTable.FLD0, 0);
  myNewLong = (Integer)myDataBack.Fget(MyFieldTable.FLD1, 0);
  myNewFloat = (Float)myDataBack.Fget(MyFieldTable.FLD2, 0);
  vfld = (FviewFld)myDataBack.Fget(MyFieldTable.myview, 0);
  view = (myView)vfld.getViewData();
} catch (Ferror fe) {
  .
}

次のコード リストは、コード リスト 8-2 のサンプルに関連する FML 記述 (MyFieldTable) の例です。

*base 20000 
#name    number  type   flags   comments
FLD0     10      string -       -
FLD1     20      long   -       -
FLD2     30      float  -       -
myview   50      view32 -       defined in View description file

 

フッタのナビゲーションのスキップ  ページの先頭 前 次