Oracle Jolt for Oracle WebLogic Serverを使用すると、Web対応のOracle Tuxedoサービスを有効にし、Oracle WebLogic ServerをフロントエンドHTTPおよびアプリケーション・サーバーとして使用することができます。
Oracle JoltはJavaベースのクライアントAPIであり、Tuxedoサーバー上で実行されているJoltサービス・リスナー(JSL: Jolt Service Listener)経由で、Oracle Tuxedoサービスに対するリクエストを管理します。Jolt APIはWebLogic API内に埋め込まれており、サーブレットまたはほかのOracle WebLogicアプリケーションからアクセス可能です。
Oracle Jolt for Oracle WebLogic ServerはJolt Javaクラス・ライブラリを拡張しているため、WebLogic Server内で実行されるHTTPサーブレットでは、Jolt Javaクライアントのクラス・ライブラリを使用することができます。またOracle Jolt for Oracle WebLogic Serverは、Java HTTPサーブレットを使用して、HTMLブラウザ・クライアントとOracle Tuxedoサービスとの間のインタフェースを提供します。
以降の説明では、読みやすさを考慮して、Oracle Tuxedoを「Tuxedo」、Oracle Joltを「Jolt」、Oracle WebLogicを「WebLogic」と表記します。
Oracle Jolt for Oracle WebLogic Serverのアーキテクチャには主に次の特長があります。
注意: | Jolt for WebLogicでは、非同期のTuxedoイベント通知へのアクセスは提供されません。 |
この項では、Jolt内での通信で使用する主なコンポーネントとOracle Jolt for Oracle WebLogic Serverのしくみについて、次の内容を説明します。
Oracle Jolt for Oracle WebLogic Serverを使用すると、基盤となるTuxedoシステムにWebからアクセスできます。Webアクセスが可能なので、Tuxedoドメイン内の他のシステムやデータベースと通信できるWeb対応アプリケーションを作成することができます。
ここで説明するシステムには、標準のWebブラウザからアクセスします。このWebブラウザに対し、WebLogic Serverは、カスタマイズしたJava HTTPサーブレットを使用して、ブラウザの対話型のHTTPリクエストを処理します。HTTPサーブレットは、受け取ったHTTPリクエストを処理し、それに対してHTTPレスポンスを送信するJavaクラスです。カスタマイズしたHTTPサーブレットは、Jolt for WebLogic APIを使用して、リモート・マシン上またはセキュリティ・ファイアウォールの背後に配置されたJolt Serverとも通信します。
Jolt ServerはTuxedoドメイン内に存在するサーバーであり、各クライアントに対してアクセスを許可するTuxedoサービスを決定します。Jolt ServerはリクエストされたTuxedoサービスを呼び出し、結果をWebLogic Serverに返します。返された結果は、サーブレットが生成したWebページにコンパイルし、ブラウザに送信することができます。その際、インターネットまたはイントラネット上のどこからでもTuxedoサービスにアクセスできる使いやすいインタフェースを作成します。
WebLogic Java HTTPサーブレットからJolt Serverへ、また、Jolt ServerからTuxedoへの通信接続を維持する基本的なオブジェクト・タイプは、以下のとおりです。
Session
セッション・オブジェクトは、Tuxedoシステムとの物理的接続を表します。
SessionPool
セッション・プールには、1つまたは複数のセッションが含まれています。セッション・プール内のセッションは、効率を高めるために再利用されます。WebLogicサーブレットは、セッションを使用し、セッション・プールのメソッドによってTuxedo内のサービスを呼び出します。セッション・プールは、起動時にWebLogicサーバーによって初期化され、config.xml
ファイルの属性によって設定されます。
注意: | Oracle WebLogic Server 6.0以降では、xmlベースのconfig.xml 環境設定ファイルがweblogic.properties ファイルのかわりに使用されます。config.xml ファイルの詳細は、『Oracle WebLogic Server管理者ガイド』を参照してください。 |
SessionPoolManager
セッション・プール・マネージャを使用して、セッション・プールへの参照を取得し、セッション・プールの作成、管理、および削除を行います。セッション・プール・マネージャは、WebLogic Serverが最初のセッション・プールを初期化する直前に作成されます。
図1-1は、Oracle Jolt for Oracle WebLogic Serverのアーキテクチャを示します。
WebLogic標準に基づくピュアJavaアプリケーション・サーバーは、分散型Javaアプリケーションのアセンブリ、デプロイ、および管理を行います。このサーバーは、Enterprise JavaBeans、Remote Method Invocation (RMI)、分散型JavaBeans、およびJava Database Connect (JDBC)など、分散型コンポーネント・サービスおよびエンタープライズ・データベース・アクセスをサポートしています。
WebLogic Serverの管理サーバーには、JavaBeanに似たオブジェクトである、Sun MicrosystemのJava Management Extension(JMX)標準が設定されています。これらのオブジェクトにより、ドメインの資源に対して管理アクセスを実行できます。
管理サーバーには、構成MBeanと実行時MBeanがあります。MBeanは、構成属性へのSET (書込み)アクセスとGET (読取り)アクセスの両方を提供します。実行時MBeanは、現在のHTTPセッションやJDBCセッション・プールのロードなど、ドメインの資源に関する情報のスナップショットを提供します。ドメイン内の特定の資源(Jolt接続プールなど)がインスタンス化されると、その資源に関する情報を収集するためのMBeanが作成されます。
注意: | 構成MBeanおよび実行時MBeanの詳細は、『Oracle WebLogic Server管理者ガイド』を参照してください。 |
WebLogic Serverは、起動時にconfig.xml
ファイルによって、セッション・プールを初期化するように設定されます。特殊なスタートアップ・クラスPoolManagerStartUp
が、いくつかのパラメータを設定したWebLogic Serverによって呼び出されます。このクラスには、次の機能があります。
注意: | Joltサーバーは、セッション・プールを作成する前に起動してください。作成後に起動すると、スタートアップ・クラスは異常終了し、再コミットは行われません。 |
作成されるセッション・プールの数は、config.xml
ファイルで設定されているJoltConnectionPools
の数によって決まります。
WebLogic Serverは、別のJavaサービスを提供するほか、Java HTTPサーブレットをサポートする本格的なHTTPサーバーです。一般に、サーブレットはそれぞれ仮想名でconfig.xml
ファイルに登録する必要があります。
サーブレットは、直接呼び出して実際にHTMLをブラウザに表示する場合もあれば、ユーザーがフォームを送信するときなど、HTMLフォームから間接的に呼び出す場合もあります。WebLogic Serverは、登録されているサーブレットの仮想名を含むリクエストを受け取ると、該当するサーブレットのservice()
メソッドを呼び出します。HTTPサーブレットの詳細は、『WebLogic HTTPサーブレット・プログラマーズ・ガイド』を参照してください。
HTTPサーブレットのservice()
メソッド(コンテキストに応じて、サーブレットのdoPost()
またはdoGet()
メソッドのいずれかを呼び出す)が呼び出されると、ブラウザから送られたHTTPデータを含むHttpServletRequest
オブジェクトが渡されます。「サンプル・パッケージの使用方法」で説明するサンプル・パッケージでは、Tuxedoに対するトランザクション呼出しでクライアントの問合せデータを使用し、レスポンスは新しいHTMLページに組み込まれます。
まず、サーブレットは、WebLogic Serverが起動時に作成し、初期化したセッション・プール・マネージャに対する参照を取得します。セッション・プール・マネージャは、config.xml
ファイルで設定されたセッション・プールを取得するために使用されます。このセッション・プールは、Tuxedoドメイン内の適切なJolt Serverを参照します。サーブレットは、セッション・プールを使用して特定のTuxedoサービスを呼び出します。
Tuxedoサービスが記述され、JoltリポジトリのJoltサーバーにエクスポート(アクセス可能を宣言)されます。Joltリポジトリでは、サービスの期待される入力および出力パラメータ型が宣言されます。サーブレットは期待される入力パラメータを供給する必要があります。Oracle Jolt for Oracle WebLogic Serverは、特別なServletSessionPool
オブジェクトを使用します。このオブジェクトは、HttpServletRequest
オブジェクトから入力データを直接受け入れることが可能です。出力データは、ServletResult
オブジェクトに返されます。
セッション・プールは、プール内のセッションに均等にリクエストを分散します。また、未処理のリクエストが最も少ないセッションを選択してTuxedoサービスを呼び出します。選択したセッションが、Tuxedoサービスが呼び出される前に終了した場合、セッション・プールはサービスの呼出しを別のセッションにリダイレクトし、切断されたセッションにかわる新しいセッションを確立します。セッション・プールはラウンドロビン・アルゴリズムを使用して、プライマリJoltサーバーへの接続を選択し、確立します。プライマリJoltサーバーから応答がない場合、セッション・プールはフェイルオーバー・サーバーに接続します。
セッション・プールに使用可能なセッションがない場合、またはセッション・プールが中断されている場合は、SessionPoolException
がスローされます。
複数のリクエストは、単一のトランザクションにグループ化できます。トランザクションが失敗すると、TransactionException
がスローされます。この例外はサーブレットによって捕捉され、適切に処理されます。(通常、サーブレットはロールバックを実行します。)
サービスの呼出しが正常に終了すると、次のイベントが発生します。
WebLogic Serverは、config.xml
ファイルで、Tuxedoへの既存のセッション・プール接続を停止するようにも設定されています。
PoolManagerShutDown
クラスを登録し、WebLogic Serverが停止したときに、Joltセッション・プールが正しくクリーンアップされるようにしてください。PoolManagerShutDown
は、config.xml
ファイルの属性を必要としません。
Oracle Jolt for Oracle WebLogic Serverには、2つのサンプル・パッケージが付属しています。これらのパッケージについては、「簡単なサーブレット・サンプル・プログラム」および「Servlet with Enterprise JavaBeanサンプル・プログラム」で説明します。サンプル・パッケージでは、WebLogicサーブレットでJoltを使用してTuxedoサービスにアクセスする方法を示します。これらのサンプルを作成、実行、および検証することにより、WebLogicを使用してTuxedoサービスをインターネットに拡張する方法を判断することができます。
FORMベースのHTMLフロントエンドが、HTTPサーブレットに文字列を送信します。サーブレットは、受け取った文字列をTuxedoサービスに送信します。返されたデータは、動的に生成されたHTMLファイルにコンパイルされ、クライアント・ブラウザに送信されます。
Enterprise JavaBean (EJBean)サンプル・パッケージには、Joltを使用しているTuxedoサーバーへのEJBeanステートフル・セッションを設定し実行するために必要なクラスおよびその他のファイルが含まれています。