Oracle Jolt for Oracle WebLogic Serverの紹介
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のアーキテクチャには次のような主な特徴があります。
•
|
Java HTTPサーブレットを有効にし、Tuxedoアプリケーションに対する動的なHTMLフロントエンドを提供
|
•
|
Tuxedoのリソースを有効活用するためのセッション・プール機能を用意
|
•
|
セッション・プール管理の機能をWebLogicコンソールに統合
|
注意:
|
Jolt for WebLogicでは、非同期のTuxedoイベント通知へのアクセスは提供されません。
|
この項では、Jolt内での通信で使用する主なコンポーネントとOracle Jolt for Oracle WebLogic Serverのしくみについて、次の内容を説明します。
Jolt for WebLogicとTuxedoの関係
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への通信接続を維持する基本的なオブジェクト・タイプは、以下のとおりです。
セッション・オブジェクトは、Tuxedoシステムとの物理的接続を表します。
セッション・プールには、1つまたは複数のセッションが含まれています。セッション・プール内のセッションは、効率を高めるために再利用されます。WebLogicサーブレットは、セッションを使用し、セッション・プールのメソッドによってTuxedo内のサービスを呼び出します。セッション・プールは、起動時にWebLogicサーバーによって初期化され、
config.xmlファイルの属性によって設定されます。
注意:
|
Oracle WebLogic Server 6.0以降では、xmlベースの config.xml環境設定ファイルが weblogic.propertiesファイルのかわりに使用されます。 config.xmlファイルの詳細は、 『Oracle WebLogic Server管理者ガイド』を参照してください。
|
セッション・プール・マネージャを使用して、セッション・プールへの参照を取得し、セッション・プールの作成、管理、および削除を行います。セッション・プール・マネージャは、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サーバーへの接続
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サービスはOracle Tuxedoサービス・メタデータ・リポジトリで記述され、エクスポート(アクセス可能と宣言)されます。メタデータ・リポジトリでは、サービスの期待される入力および出力パラメータ型が宣言されます。サーブレットは期待される入力パラメータを供給する必要があります。Oracle Jolt for Oracle WebLogic Serverは、特別な
ServletSessionPoolオブジェクトを使用します。このオブジェクトは、
HttpServletRequestオブジェクトから入力データを直接受け入れることが可能です。出力データは、
ServletResultオブジェクトに返されます。
セッション・プールは、プール内のセッションに均等にリクエストを分散します。また、未処理のリクエストが最も少ないセッションを選択してTuxedoサービスを呼び出します。選択したセッションが、Tuxedoサービスが呼び出される前に終了した場合、セッション・プールはサービスの呼出しを別のセッションにリダイレクトし、切断されたセッションにかわる新しいセッションを確立します。セッション・プールはラウンドロビン・アルゴリズムを使用して、プライマリJoltサーバーへの接続を選択し、確立します。プライマリJoltサーバーから応答がない場合、セッション・プールはフェイルオーバー・サーバーに接続します。
セッション・プールに使用可能なセッションがない場合、またはセッション・プールが中断されている場合は、S
essionPoolExceptionがスローされます。
複数のリクエストは、単一のトランザクションにグループ化できます。トランザクションが失敗すると、
TransactionExceptionがスローされます。この例外はサーブレットによって捕捉され、適切に処理されます。(通常、サーブレットはロールバックを実行します。)
サービスの呼出しが正常に終了すると、次のイベントが発生します。
•
|
求めていた結果が、 ServletResultオブジェクトから取り出されます。
|
•
|
結果はサーブレットによって処理され、ユーザーのブラウザに表示するためのHTMLページに組み込まれます。HTMLページは、次の2つのうちいずれかの方法で作成できます。
|
•
|
標準のHTMLページにJavaを埋め込める、WebLogicの使いやすいJava Server Pages (JSP)サービスを使用する
|
•
|
WebLogic htmlKonaによる、より高度なプログラミング方法を使用する
|
•
|
WebLogic Serverは、 HttpServletResponseオブジェクト経由でクライアントにHTMLページを返します。
|
WebLogic Serverは、
config.xmlファイルで、Tuxedoへの既存のセッション・プール接続を停止するようにも設定されています。
PoolManagerShutDownクラスを登録し、WebLogic Serverが停止したときに、Joltセッション・プールが正しくクリーンアップされるようにしてください。
PoolManagerShutDownは、
config.xmlファイルの属性を必要としません。
FORMベースのHTMLフロントエンドが、HTTPサーブレットに文字列を送信します。サーブレットは、受け取った文字列をTuxedoサービスに送信します。返されたデータは、動的に生成されたHTMLファイルにコンパイルされ、クライアント・ブラウザに送信されます。
Enterprise JavaBean (EJBean)サンプル・パッケージには、Joltを使用しているTuxedoサーバーへのEJBeanステートフル・セッションを設定し実行するために必要なクラスおよびその他のファイルが含まれています。