Javaを使用したOracle Tuxedoアプリケーションのプログラミング
ATMI Javaサーバーのユーザー・インタフェース
ここでは、以下の内容について説明します。
TuxedoJavaServer
TuxedoJavaServer
は抽象クラスです。サービスを実装するすべてのユーザー定義クラスによって継承される必要があります。
表3-1 TuxedoJavaServerインタフェース
|
|
|
初期化処理を実行するために、子クラスが実装する必要がある抽象メソッド
|
|
クリーンアップ処理を実行するために、子クラスが実装する必要がある抽象メソッド
|
|
現在アタッチされているTuxedoアプリケーションJavaコンテキストを取得するために使用
|
Oracle Tuxedo Javaコンテキスト
Oracle Tuxedo Javaサーバーで提供されるTJATMIプリミティブにアクセスするには、すべてのTJATMIプリミティブを実装するTuxAppContext
オブジェクトを取得する必要があります。
サービス・クラスはTuxedoJavaServer
から継承するため、サービスでgetTuxAppContext()
を呼び出してコンテキスト・オブジェクトを取得します。ただし、tpsvrinit()
ではTuxAppContext
を取得できません。この時点でTuxAppContext
は準備ができていないためです。tpsvrinit()
でTuxAppContext
オブジェクトを取得しようとすると、tpsvrinit()
が失敗して、例外がスローされます。
Tuxedo JavaアプリケーションのTJATMIプリミティブ
TJATMIは、サービスの呼出し、トランザクションの開始と終了、DataSourceへの接続の取得など、クライアントとサーバー間の通信を提供する一連のプリミティブです。
詳細は、Java Server Javadocを参照してください。
表3-2 TJATMIプリミティブ
|
|
|
要求/応答通信でOracle Tuxedoサービスの同期呼出しに使用する。
|
|
Tuxedo Javaサーバーで戻り値とデータを設定するために使用します。
|
|
|
|
現在のトランザクションをコミットするために使用します。
|
|
現在のトランザクションを強制終了するために使用します。
|
|
トランザクションが進行中かどうかをチェックするために使用します。
|
|
構成したDataSourceへの接続を取得するために使用します。
|
|
ユーザー・ログをTuxedoユーザー・ログ・ファイルに出力するために使用します。
|
注意: |
tpreturn が実行を終了した後も、サービスは実行し続けます。tpreturn() をサービスの最後の実行文として指定してください。 |
Tuxedo JavaアプリケーションのTypedBuffer
ATMI Javaサーバーは、Oracle Tuxedo型付きバッファに対応するOracle WebLogic Tuxedo Connector TypedBufferを再利用します。メッセージは、サーバーの型付きバッファに渡されます。ATMI Javaサーバーによって提供されるバッファ・タイプを表3-3に示します。
表3-3 TypedBuffer
|
|
|
データがNULL文字で終了する文字の配列である場合に使用されるバッファ・タイプ。Oracle Tuxedoの等価タイプ: STRING 。
|
|
データが、NULL可能な文字の未定義配列(バイト配列)である場合に使用されるバッファ・タイプ。Oracle Tuxedoの等価タイプ: CARRAY 。
|
|
データが自己定義である場合に使用されるバッファ・タイプ。データ・フィールドごとに個別の識別子、出現回数、および必要に応じて長さを示す情報を保持します。Oracle Tuxedoの等価タイプ: FML 。
|
|
TypeFMLに似たバッファ・タイプだが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能。Oracle Tuxedoの等価タイプ: FML32 。
|
|
データがXMLベースのメッセージである場合に使用されるバッファ・タイプ。Oracle Tuxedoでは次に相当: XML (Tuxedoリリース7.1以降)。
|
|
VIEW記述ファイルを用いてバッファ構造を定義するためにアプリケーションがJava構造体を使用するとき、使用されるバッファ・タイプ。Oracle Tuxedoの等価タイプ: VIEW
|
|
VIEWに似たバッファ・タイプだが、より大きい文字フィールド、より多くのフィールド、およびより大きいバッファ全体に対して使用可能。Oracle Tuxedoの等価タイプ: VIEW32 。
|
TypedBufferの詳細は、weblogic.wtc.jatmiのパッケージを参照してください。
また、Javaサーバー・クラスでTypedFML/TypedFML32またはTypedView/TypedView32(あるいはその両方)を使用する場合は、「リファレンス」の「Oracle Tuxedo JavaサーバーでのFMLの使用」および「Oracle Tuxedo JavaサーバーでのVIEWの使用」の情報が役立ちます。
Typedbufferサポートの制限事項
- 別の
TypedFML32
に埋め込まれているTypedFML32
のFldid()/Fname()
は機能できません。この問題に対処するには、名前またはIDの転送のかわりにfieldtable
クラスを使用します。
- 現時点で
weblogic.wtc.gwt.XmlViewCnv/XmlFmlCnv
クラスは使用できません。
サービス情報の取得または設定
TPSVCINFO
クラスを使用して、Oracle Tuxedoクライアントによって送信されるサービス情報を取得または設定します。
表3-4 ゲッター関数
|
|
|
Oracle Tuxedoクライアントから送信されるサービス・データを返すために使用する。
|
|
Oracle Tuxedoクライアントから送信されるサービス・フラグを返すために使用する。
|
|
|
|
アプリケーション認証クライアント・キーを取得するために使用されます。
|
|
最初のクライアントのクライアントIDを取得するために使用されます。
|
TuxATMIReply
を使用して、サービス呼出しの返信データとメタデータを取得します。
表3-5 返信のゲッター関数
|
|
|
サービスから返される型付きバッファ(nullの可能性あり)を返します。
|
|
|
例外
tpcall()
などのサービスでJATMIプリミティブによってスローされる例外を捕捉する必要があります。JATMIがスローする例外は2種類あります。
-
TuxATMITPException
: TJATMI障害を表す例外。
-
TuxATMITPReplyException
: サービス障害(TPESVCFAILまたはTPSVCERROR)があった場合にスローされる例外。ユーザー・データがこの例外に関連付けられることがあります。
詳細は、Java Server Javadocを参照してください。
トレース
従来のTuxedo ATMIの場合と同じく、TMTRACE=atmi:ulog
をエクスポートする必要もあります。TJATMI APIトレースは他のATMIトレースとしてULOGに書き込まれます。