4.1.4 Joltでのクライアント/サーバー関係

Oracle Joltは、分散型のクライアント/サーバー環境で動作し、JavaクライアントをOracle Tuxedoをベースとするアプリケーションに接続します。

次の図は、JoltプログラムとJoltサーバーの間のクライアント/サーバー関係を示しています。

図4-1 Joltでのクライアント/サーバー関係

「Joltでのクライアント/サーバー関係」の図

図に示すように、JoltサーバーはネイティブなOracle Tuxedoクライアントのプロキシとして動作し、ネイティブなOracle Tuxedoクライアントで利用できる機能を実装します。Oracle Joltサーバーは、Oracle Joltクライアントからのリクエストを受け取ると、Oracle Tuxedo ATMIインタフェースを介してこれらのリクエストをOracle Tuxedoサービス・リクエストにマッピングします。リクエストおよび関連付けられたパラメータは、メッセージ・バッファにパッケージされ、ネットワーク経由でOracle Joltサーバーに配信されます。Oracle JoltサーバーとOracle Joltアプレットの間のすべての通信は、Oracle Jolt接続マネージャにより、Oracle Joltトランザクション・プロトコルを使用して処理されます。Oracle Joltサーバーは、メッセージからデータを取り出し、必要に応じてデータ変換(数値形式や文字セットなど)を行ってから、メッセージで指定された適切なサービスをOracle Tuxedoにリクエストします。

Oracle Tuxedoシステムが受け取ったサービス・リクエストは、ほかのOracle Tuxedoのリクエストとまったく同じ方法で処理されます。結果はATMIインタフェースを通してOracle Joltサーバーに返され、そこで結果とエラー情報がメッセージにパッケージ化されると、Oracle Joltのクライアント・アプレットに送信されます。Oracle Joltクライアントはメッセージの中身を様々なOracle Joltクライアント・インタフェース・オブジェクトにマップして、リクエストを完了します。

クライアント側では、ユーザー・プログラムにクライアント・アプリケーション・コードが含まれています。Joltクラス・ライブラリが提供するJoltSessionとJoltTransactionがサービス・リクエストを処理します。

次の表で、単純なプログラムの例におけるクライアント側のリクエストおよびJoltサーバー側のアクションについて説明します。

表4-1 Joltクライアント/サーバーの相互作用

Joltクライアント Joltサーバー
1 attr=new JoltSessionAttributes(); attr.setString(attr.APPADDRESS, “//myhost:8000”); クライアントをOracle Tuxedo環境にバインドします。
2 session=new JoltSession(attr, username, userRole, userPassword, appPassword); クライアントをOracle Tuxedoにログオンさせます。
3 withdrawal=new JoltRemoteService( servname, session ); リポジトリ内のサービス属性を検索します。
4 withdrawal.addString(“accountnumber”, “123”); withdrawal.addFloat(“amount”, (float) 100.00); クライアントに変数を設定します(Joltサーバー側の動作なし)
5 trans=new JoltTransaction( time-out, session); 新しいTuxedoトランザクションを開始します。
6 withdrawal.call(trans); Oracle Tuxedoサービスを実行します。
7 trans.commit() or trans.rollback(); トランザクションを完了またはロールバックします。
8 balance=withdrawal.getFloatDef(“balance,” (float) 0.0); 結果を取り出します(Joltサーバー側の動作なし)。
9 session.endSession(); クライアントをOracle Tuxedoからログオフさせます。

「Joltクライアント/サーバーの相互作用」をまとめると、次のようになります。

  1. JoltSessionAttributesクラスを使用してクライアントをOracle Tuxedo環境にバインドします。
  2. セッションを確立します。
  3. 変数を設定します。
  4. 必要なトランザクション処理を行います。
  5. クライアントをOracle Tuxedoからログオフさせます。

上記のアクティビティは、Joltクラス・ライブラリのクラスによって処理されます。これらのクラスには、データの設定やクリアを行ったり、リモート・サービスのアクションを処理するメソッドが用意されています。Joltクラス・ライブラリのクラスの詳細は、「Joltオブジェクト間の関係」を参照してください。