![]() ![]() ![]() ![]() |
以下の節では、Oracle WebLogic Tuxedo Connector VIEW バッファの使い方について説明します。
注意 : | TypedView および TypedView32 バッファ タイプは WebLogic Server の Javadoc には含まれていません。代わりに TypedView および TypedView32 を参照してください。 |
注意 : | Oracle Tuxedo VIEW バッファの詳細については、「VIEW 型バッファ」を参照してください。 |
Oracle WebLogic Tuxedo Connector を使用すると、非依存型 C 構造体から派生した Oracle Tuxedo VIEW バッファ タイプと同様の Java VIEW バッファを作成することができます。これにより、Oracle WebLogic Server アプリケーションおよび Oracle Tuxedo アプリケーションが共通の構造体を用いて情報を受け渡しできます。Oracle WebLogic Tuxedo Connector VIEW バッファは、FML VIEW も FML VIEW/Java 会話もサポートしていません。
注意 : | fbname フィールドと null フィールドは、非依存型 Java 構造体や C 構造体とは関係がなく、Java や C の VIEW コンパイラには無視されます。これらのフィールドにはプレースホルダとして値 (たとえば、ダッシュ) を入れる必要があります。 |
Oracle WebLogic Server アプリケーションと Oracle Tuxedo アプリケーションは、VIEW 記述で定義された同一の情報構造を共有する必要があります。VIEW 記述ファイルの各構造体には下記の形式を使用します。
$ /* VIEW 構造体 */
VIEW viewname
type cname fbname count flag size null
次に、Oracle Tuxedo アプリケーションと情報を送受信するために VIEW バッファを使用するサンプル VIEW 記述を示します。この VIEW のファイル名は infoenc
です。
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 - #size ignored by viewj/viewj32
END
VIEW 型バッファをコンパイルするには、引数としてパッケージ名と VIEW 記述ファイルの名前を指定して、viewj
コマンドを実行します。出力ファイルはカレント ディレクトリに作成されます。
viewj
コンパイラを使用するには、次のコマンドを入力します。
java weblogic.wtc.jatmi.viewj[options]
[package] viewfile
viewj32
コンパイラを使用するには、次のコマンドを入力します。
java weblogic.wtc.jatmi.viewj32[options]
[package] viewfile
viewj
および viewj32
コマンドの出力は、VIEW 記述ファイルの各フィールドに対する set
および get
アクセサ メソッドが含まれた .java
ソース ファイルになります。VIEW バッファとの間で情報を受け渡すには、Java アプリケーションでこれらの set
および get
アクセサ メソッドを使用します。
VIEW 記述ファイルで関連する長さと数のフィールドが指定されている場合、その値を set
および get
アクセサ メソッドで使用するかどうかを指定するには、AssociatedFieldHandling
フラグを使用します。
AssociatedFieldHandling
フラグの状態を設定または取得するには、次のいずれかの方法を使用します。
viewj
および viewj32
コンパイラの -associated_fields
オプションを使用して、AssociatedFieldHandling
フラグを true に設定する。void setAssociatedFieldHandling(boolean state)
メソッドを呼び出して、AssociatedFieldHandling
フラグの状態を設定する。 boolean getAssociatedFieldHandling()
メソッドを呼び出して、AssociatedFieldHandling
の現在の状態を返す。
注意 : | TypedView および TypedView32 バッファ タイプは WebLogic Server の Javadoc には含まれていません。代わりに TypedView および TypedView32 を参照してください。 |
JATMI アプリケーションに VIEW バッファを取り込む際には、下記の手順に従います。
クライアントでアクセサを使用して VIEW バッファと情報を受け渡す方法の例については、Oracle WebLogic Server 配布キットの examples/wtc/atmi/simpview/ViewClient.java
ファイルを参照してください。
CLASSPATH
に指定する必要があります。
FML32 バッファに対して VIEW32 データを追加および取得する場合、wtc.jatmi.FViewFld
ヘルパー クラスを使用できます。このクラスを使用することで、プログラマは FML32 バッファに対して VIEW32 フィールド タイプを使用する JATMI ベースのアプリケーションを簡単に開発できます。
コンフィグレーションの変更は不要です。引き続き、WLS コンフィグレーション ファイルの WTCResources
セクションにある ViewTbl32Classes
属性を使用して、VIEW32 クラス パスをコンフィグレーションします。
このヘルパー クラスでは、以下のアクセス メソッドを使用できます。
FViewFld(String vname, TypedView32 vdata)
;FviewFld(FviewFld to_b_clone)
;void setViewName(String vname)
String getViewName()
;void setViewData(TypedView32 vdata)
void TypedView32 getViewData()
;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.setamount((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
XmlViewCnv
クラスを使用すると、XML から View/View(32) への変換、および View/View(32) から XML への変換を実行できます。次のコードは、XML バッファ フォーマットとの間での変換に XmlViewCnv
クラスを使用する例です。
import examples.wtc.atmi.simpview.infoenc; // View クラスのインポート
weblogic.wtc.gwt.XmlViewCnv;
import weblogic.wtc.jatmi.TypedBuffer;
public class xml2view
{
public static void main(String[] args) {
String xmlDoc =
"<VIEW32><infoenc><amount>1000.0</amount><infoenc></VIEW32>";
infoenc convertMe = new infoenc();
convertMe = (infoenc) XmlViewCnv.XMLToView(
xmlDoc,
convertMe.getClass(),
convertMe.getSubtype());
convertMe = (infoenc) echo.Echo(convertMe);
result = XmlViewCnv.ViewToXML(
(TypedBuffer) convertMe,
convertMe.getClass(),
true);
System.out.println(result);
}
}
![]() ![]() ![]() |