目次 前 次 PDF


Oracle Tuxedo Javaプログラミングの紹介

Oracle Tuxedo Javaプログラミングの紹介
このトピックには次の項が含まれます:
概要
Oracle TuxedoサービスはPure Java言語を使用して開発できます。Java言語で実装されるサービスは、他のTuxedoサービスと同様に機能します。Tuxedo Javaサーバー(TMJAVASVR)によって通知されるサービスを、ATMIインタフェースを使用してクライアントまたはTuxedoサーバーから呼び出すことができます。同様に、Tuxedoサーバーによって通知されるサービスを、TJATMIインタフェースを使用してjava実装サービスから呼び出すことができます。
さらに、java実装サービスは、ネイティブ・クライアント、/WSクライアント、Joltクライアントなど、あらゆる種類のTuxedoクライアントから呼び出すことができます。
Tuxedoサービスを実装するために、TJATMIインタフェース、JATMI TypedBuffer、POLO javaオブジェクトなど、様々な主要Javaテクノロジの使用がサポートされます。
プログラミングのガイドライン
次のガイドラインは、Javaサービス開発の基本的な手順です。
Javaサービスを実装するJavaサーバー・クラスは、TuxedoJavaServerクラスを継承し、デフォルトのコンストラクタを有している必要があります。
Javaサーバー・クラスでは、Javaサービスとして通知されるJavaメソッドは、入力引数としてTPSVCINFOインタフェースのみを使用する必要があります。また、publicとして宣言する必要があります。
Javaサーバー・クラスは、Tuxedo Javaサーバーの起動時に呼び出されるtpsvrinit()メソッドを実装する必要があります。
Javaサーバー・クラスは、Tuxedo Javaサーバーの停止時に呼び出されるtpsvrdone()メソッドを実装する必要があります。
Javaサービスが、Tuxedo Java ATMI (tpcalltpbeginなど)を使用できる状態にある必要があります。
Javaサービスが、tpreturnを使用してクライアントに結果を返したり、例外をスローして終了できる状態にある必要があります。
プログラミング環境
プログラミング環境の詳細は、「UBBCONFIGにおける構成」を参照してください。
Tuxedo Javaサーバー・スレッドおよびJavaクラス・インスタンス・モデル
Tuxedo 12cリリース1 (12.1.1)では、Tuxedo Javaサーバーで従来のTuxedoマルチスレッド・モデルが使用されるため、マルチスレッド・モードで稼働する必要があります。
起動後に、Tuxedo Javaサーバーでは、構成ファイルに定義されている各クラス用に1つのグローバル・オブジェクト(インスタンス)が作成されます。各動作スレッドは、Javaサービスの処理時にそのグローバル・オブジェクト(インスタンス)を共有します。
Tuxedo Javaサーバーの初期化メソッドと終了メソッド
メソッドの動作は、Tuxedo 12cリリース2 (12.1.3以上)とTuxedo 12cリリース1 (12.1.1)で異なります。
Tuxedo 12cリリース2 (12.1.3以上)の動作
Javaサーバーでサポートしている初期化メソッドおよび終了メソッドは、tpsvrinit()tpsvrinit(String [])tpsvrdone()tpsvrthrinit()tpsvrthrinit(String [])およびtpsvrthrdone()です。
注意:
tpsvrinit()およびtpsvrdone()は必須です。他の4つのメソッドはオプションです。
アプリケーション・サーバー・クラスのロード時に、Javaサーバーはこれらすべての初期化メソッドおよび終了メソッドを検索し、次の規則に従って対応する初期化メソッドを呼び出します。
 
表1-1 標準の初期化メソッドの呼出し規則
実装済初期化メソッド
<server-clopt>の指定
呼び出されるメソッド
tpsvrinit()
あり
tpsvrinit()
tpsvrinit()
なし
tpsvrinit()
tpsvrinit(), tpsvrinit(String [])
あり
tpsvrinit(String [])
tpsvrinit(), tpsvrinit(String [])
なし
tpsvrinit()
Javaサーバーは、インスタンス化およびアクティブ化時に対応するスレッド・レベルの初期化メソッドを呼び出します(ユーザー・サーバー・クラスの下に実装されている場合)。呼出し規則は次のとおりです。
 
表1-2 標準のスレッド初期化メソッドの呼出し規則
実装済初期化メソッド
<server-clopt>の指定
呼び出されるメソッド
tpsvrthrinit()
あり
tpsvrthrinit()
tpsvrthrinit()
なし
tpsvrthrinit()
tpsvrthrinit(), tpsvrthrinit(String [])
あり
tpsvrthrinit(String [])
tpsvrthrinit(), tpsvrthrinit(String [])
なし
tpsvrthrinit()
tpsvrthrinit(String [])
あり
tpsvrthrinit(String [])
tpsvrthrinit(String [])
なし
メソッドは呼び出されません。
サーバーのディスパッチ・スレッドの非アクティブ化時に、tpsvrthrdone()メソッドが呼び出されます(サーバー・クラスに実装されている場合)。
tpsvrthrinit()およびtpsvrthrdone()は、Javaサーバーがシングル・スレッド・モードで実行されている場合は呼び出されません。
注意:
ユーザーは、初期化メソッドおよび終了メソッドでJava APIを呼び出すことができます。
Tuxedo 12cリリース1 (12.1.1)の動作
tpsvrinit()処理
ユーザーは、tpsvrinit()メソッドを実装する必要があります。tpsvrinit()はサーバーの起動時に呼び出されるため、このメソッドにクラス範囲の初期化を設定することをお薦めします。あるクラスのtpsvrinit()が失敗した場合、警告メッセージがユーザー・ログに報告され、Javaサーバーは実行を続けます。
tpsvrdone()処理
ユーザーは、tpsvrdone()メソッドを実装する必要があります。tpsvrdone()はサーバーの停止時に呼び出されるため、このメソッドにクラス範囲のクリーンアップ処理を設定することをお薦めします。
Tuxedo Javaサーバーのtpreturn()メソッド
Javaサービスのtpreturn()は、Javaサービス・メソッドの実行をすぐには中断しませんが、Tuxedo Javaサーバーに結果を返します。
Javaサービスにおけるtpreturn()の動作と、既存のTuxedoシステムにおけるtpreturn()の動作の違いを次に示します。
既存のTuxedoシステムでtpreturn()が呼び出される場合、フロー制御はTuxedoに自動的に移ります。
Javaサービスでtpreturn()が呼び出される場合、tpreturn()より後の文もそのまま実行されます。ユーザーは、tpreturn()をJavaサービスにおける最後の実行文にする必要があります。そうできない場合は、tpreturn()の後にJavaのreturn呼出しを使用することをお薦めします。そうしないと、tpreturn()を実行しても、フロー制御がTuxedoシステムに自動的に移りません。
注意:
Javaサービスで、先行するtpreturn()文なしでJavaのreturn文を使用することはお薦めしません。そうすると、Javaサーバーは対応するクライアントにrcode設定0を指定したTPFAILを返します。
Tuxedo Javaサーバーの例外処理
Javaサービスは実行中いつでも例外をスローして終了できます。この場合、Javaサーバーはクライアントに、このサービスのrcode設定を0に指定したTPFAILを返します。
すべての例外情報は$APPDIR/stderrファイルに記録されます。
関連項目
TMJAVASVR(5)
Oracle Tuxedo Javaサーバーの管理
Oracle Tuxedo Javaサーバーの構成
付録: Javaサーバー構成ファイルのスキーマ
Javaを使用したOracle Tuxedoアプリケーションのプログラミング

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved