| Oracle Application Server 概要 10gリリース2(10.1.2) B15619-02 |
|
この章では、Oracle Application ServerにおけるJava 2 Platform, Enterprise Edition(J2EE)、Webサービスおよびインターネット・アプリケーションの開発ならびに配置環境について、その機能と概要を説明します。この章の項目は次のとおりです。
Oracle Application Serverは、アプリケーションを開発、配置し、そのアプリケーションを企業内のユーザーに確実に配布する、業界標準に準拠した統合環境を提供します。この項では、この環境を利用したアプリケーションの開発と配置について説明します。
Oracle Application Serverを使用すると、サイトの開発に次のような各種言語やテクノロジを使用できます。
Oracle Application Serverで配置用アプリケーションを構築する際に使用可能な各種のテクノロジとプログラミング言語の一覧を、表2-1に示します。
各種のアプリケーションの開発と配置における推奨事項を、表2-2に示します。
この後の各項では、前述のテクノロジやプログラミング言語が、どのようにOracle Application Serverでサポートされているのかを説明します。
Oracle HTTP Serverは、Oracle Application Serverがサポートするすべてのプログラミング言語およびテクノロジの基盤となる配置プラットフォームです。このサーバーはOracle Application Server Containers for J2EE(OC4J)にWebリスナーを提供し、Web上で静的/動的なページやアプリケーションをホスティングするフレームワークを提供します。実績のあるテクノロジであるApache HTTP ServerをベースとしているOracle HTTP Serverには、ロード・バランシング、管理および構成を容易にするための大幅な拡張が施されています。また多数の拡張モジュール(mods)も備えており、これによってHTTPサーバーの機能を他のエンタープライズ・アプリケーションやサービスに対して拡張します。
Oracle HTTP Serverを使用すると、開発者はJava、Perl、C、C++、PHP、PL/SQLなど、様々な言語やテクノロジを使用してサイトをプログラミングできます。さらに、フォワード/リバース・プロキシ・サーバーとしても機能します。この項では、Oracle HTTP Serverが動的Webサイトとアプリケーションのために堅牢な配置プラットフォームを提供する方法について説明します。
Oracle HTTP Serverは同じプロセス内で実行されるいくつかのコンポーネントから構成されています。これらのコンポーネントは、Oracle HTTP Serverがクライアントのリクエストを処理する際の様々な機能を提供します。主なコンポーネントには次のものがあります。
表2-3 Oracle HTTP Serverの主要モジュール
図2-1に各種のリクエストがOracle HTTP Serverコンポーネントを通過するときのパスを示します。
起動時にWebサーバーの親プロセスは構成全体と関連付けられたモジュールをロードし、前もって設定されていた数の子プロセスを起動します。
図2-2に、UNIX環境におけるOracle HTTP Serverのプロセス・アーキテクチャを示します。
親プロセスはHTTPリクエストをリスニングしません。親プロセスの唯一の役割は、子プロセスの実行を保証すること、つまり負荷の状況から要請された場合に新しい子プロセスを起動することです。
UNIXプラットフォームでは、子プロセスごとに1つのHTTPリクエストを処理します。子プロセスは構成可能なmutexアーキテクチャに基づいて、次のリクエストを処理するプロセスを決定します。
Oracle HTTP Serverはモジュール形式のアーキテクチャになっています。コアとなるHTTPリスナーは非常に小さく、すべての機能はプラグイン形式のモジュールとして実装されており、HTTPリクエストのライフ・サイクル中に適切な位置で起動されます。図2-3に、Oracle HTTP ServerでのHTTPリクエストのライフ・サイクルを示します。
リクエストは子プロセスのガイドに従ってライフ・サイクル全体を通過していきます。各モジュールは独自のApplication Program Interface(API)を登録しているため、リクエストがライフ・サイクルの特定の段階に達したときにモジュールが自動的に起動されるようにするか、あるいは特定の状況の場合にのみ起動されるように設定できます。
Oracle HTTP Serverは、他のOracle Application Serverコンポーネントに対するクライアントのリクエストを処理する標準的なWebサーバー機能のほかに、動的アプリケーションの作成や企業サポートの実装に必要な機能を備えています。また、重要なビジネス・リソースを保護するためのセキュリティの拡張機能も備えています。Oracle HTTP Serverの主な機能を次に示します。
mod_phpによってサポートされています。
mod_securityは、侵入検出と防止のための、オープン・ソースのWebアプリケーション用エンジンであり、既知および未知の攻撃を防ぎます。
Common Gateway Interface(CGI)プログラムに送られたリクエストは、HTTPリクエストを処理する子プロセスとCGIプログラム自体を処理する子プロセスという、2つの新しい子プロセスを起動することがあります。このようなオーバーヘッドを回避するには、子プロセスをあらかじめ起動して実行状態となるようにOracle HTTP Serverを構成するか、Perlモジュールを利用してメモリー内でCGIプログラムを実行させるか、FastCGI機構を使用するようにします。
Oracle HTTP Serverの次の機能ではCGIがサポートされています。
Oracle Application Server Containers for J2EE(OC4J)は、高速かつ軽量でスケーラブルなJ2EE 1.3の認証サーバーの実装です。Javaで記述されており、標準のJava Virtual Machine(JVM)で実行されます。表2-4に、サポートされている標準のAPIを示します。
この項では、Oracle Application Serverでサポートされるアプリケーション・プログラミング・テクノロジの基本的な定義と概要を説明します。この項で紹介したテクノロジの詳細は次のドキュメントを参照してください。
J2EEアプリケーションは、J2EE APIを使用してJavaで記述されたアプリケーションです。このアプリケーションを配置、管理および実行するには、J2EEに対応したサーバーを使用します。J2EEアプリケーション自体は、Webプレゼンテーション・モジュール、ビジネス・ロジック・モジュール、データ・アクセス・モジュールなどの一連のコンポーネントで構成されています。これらの各コンポーネントが、関連するすべてのクラスとXMLデプロイメント・ディスクリプタとともにアセンブルされることによって、1つのアプリケーションが構築されます。
Oracle Application Serverで提供されるJ2EEプラットフォームは、複数層の分散アプリケーション・モデルを使用しています。複数層の分散アプリケーション・モデルでは、アプリケーション・ロジックを機能に従ってコンポーネントに分け、全体としてJ2EEアプリケーションを構成する各種のアプリケーション・コンポーネントを、複数層J2EE環境の中のどの層に属しているかによって、異なるマシンにインストールできます。図2-4に、クライアント、Web、ビジネス・ロジック、エンタープライズ・データの各層に分割された複数層のJ2EEアプリケーションを2つ示します。
J2EEアプリケーションは、図で示したように4つの層に分散させることもできますが、次のようなマシン配置に対して分散させる3層アプリケーションが一般的です。
このような方式による3層アプリケーションは、標準的な2層からなるクライアント・サーバー・モデルのクライアントとバックエンド・ストレージの間に、アプリケーション・サーバーを置くことによって拡張したものです。
J2EEアプリケーションでは、次のクライアントをサポートしています。
J2EEアプリケーションでは、次のコンポーネントを使用できます。
コンテナは、J2EEアプリケーション・コンポーネントにランタイム・サポートを提供するものです。またコンテナは、基盤となるJ2EE APIとアプリケーション・コンポーネント間の統合ビューも提供します。J2EEアプリケーション・コンポーネント同士が直接対話することはありません。これらのアプリケーション・コンポーネントは、コンテナのプロトコルとメソッドを使用して、他のアプリケーション・コンポーネントやプラットフォーム・サービスと対話します。コンテナがアプリケーション・コンポーネントとJ2EEサービスとの間に介在することにより、宣言型トランザクション管理、セキュリティ・チェック、リソース・プーリング、状態管理など、コンポーネントのデプロイメント・ディスクリプタで定義されたサービスが、コンテナによって透過的に提供されます。
WebまたはEnterprise Beanコンポーネントを実行可能な状態にするには、これらをJ2EEアプリケーションにアセンブルして、J2EEコンテナへデプロイする必要があります。このアセンブル処理には、各コンポーネント用にコンテナの設定を指定することが含まれます。この設定によって、J2EEサーバーによって提供される基盤となるサポートがカスタマイズされます。この設定は作成するアプリケーションの要件によって、標準的なJ2EEの設定の場合も、コンテナに固有の設定の場合もあります。指定可能なコンテナの設定には、セキュリティ・サービス、トランザクション・モデル、ネーミングおよびディレクトリのルックアップ、リモート接続モデルなどがあります。
J2EEコンテナには、主に次の2種類があります。
J2EEコンポーネントは個別にパッケージされ、J2EEアプリケーションにバンドルされます。各コンポーネントと、これに関連するGIFやHTMLファイル、またはサーバー・サイドのユーティリティ・クラスは、すべてデプロイメント・ディスクリプタ(DD)とともにパッケージされ、J2EEアプリケーションのモジュールとしてアセンブルされます。通常、J2EEアプリケーションは1つ以上のEnterprise Beans、およびWebまたはアプリケーション・クライアント・モジュールから構成されます。
図2-5は、Oracle Application Server内のOC4Jのアーキテクチャを示しています。
図2-5に示すように、OC4JはJava 2 Platform, Standard Edition(J2SE)インフラストラクチャによってサポートされています。この図は、OC4J WebコンテナとOC4J EJBコンテナの両方が、J2SE仮想マシンを使用することを表しています。J2EEアプリケーションはアプリケーション・コンポーネントの再利用のために、次のようにモジュール化されています。
J2EEコンテナでは、APIへのアクセスの提供やライフ・サイクル管理などのアプリケーション向けサービスも実行します。
Oracle Application Server Containers for J2EE(OC4J)には、次の機能があります。
OC4Jには次のJ2EEコンテナが提供されます。
サーブレットとは、OC4JなどのJ2EEサーバー上で実行されるJavaプログラムです。サーブレットはJ2EEアプリケーションにおけるアプリケーション・コンポーネントの一種です。サーブレットは、OC4J Webコンテナの一部であるサーブレット・コンテナの管理下で実行する必要があります。サーブレット・コンテナはサーブレットのメソッドをコールし、またサーブレットの実行中に必要となるサービスを提供します。
サーブレット・コンテナはサーブレットを実行し、管理します。サーブレット・コンテナは、サーブレットにHTTPリクエストのプロパティ(ヘッダーやパラメータなど)へのアクセスを提供します。またコンテナは、データベースへのアクセスを行うJDBC、リモート・オブジェクトのコールを行うRemote Method Invocation(RMI)、非同期のメッセージングを行うJMSなど、他のJava APIへのアクセスもサーブレットに対して提供します。
リクエストがサーブレットにマッピングされると、サーブレット・コンテナは次のような順序で動作します。
サーブレットはクライアントのリクエストから情報を抽出し、外部リソースにアクセスしてから、この情報に基づいてレスポンス・オブジェクトを移入します。
JavaServer PagesはWebページに動的なコンテンツを生成するときに便利な方法です。サーブレット・テクノロジと密接に連携したJSPテクノロジでは、Javaコードの一部分を埋め込み、Webページの中から(タグやディレクティブという形で)外部のJavaコンポーネントをコールできます。通常、Webページを記述するマークアップ・コードにはHTMLまたはXMLが使用されます。JSPは、JavaBeansまたはEnterprise JavaBeans(EJB)で、ビジネス・ロジックや動的機能のフロントエンドとして動作します。
実行される前にJSPはJavaサーブレットへ変換され、他のサーブレットと同じようにHTTPリクエストを処理してレスポンスを生成します。しかし、JSPテクノロジでは、より便利なサーブレットのコーディング方法を提供します。サーブレットへの変換はアプリケーションが初めて実行されるときに行われます。JSPトランスレータは、URLに.jspというファイル拡張子がある場合にトリガーされます。
JSPはサーブレットと完全な相互運用性があります。サーブレットからの出力をインクルードしたり、出力をサーブレットに転送することが可能なように、サーブレットはJSPからの出力をインクルードしたり、出力をJSPに転送することが可能です。
JSPトランスレータはトランスレータとコンパイラから構成されます。JSPトランスレータは、JSPをJavaのソース・ファイルに変換します。コンテナはこのソース・ファイルをJavaのバイトコード(.class)ファイルにコンパイルします。コンパイルされたファイルは、サーブレット・コンテナ内でJSPランタイム・ライブラリを使用してサーブレットとして実行されます。サーブレット・コンテナはJava APIなどの各種サービスへのアクセスを提供します。
ユーザーがJSPファイルにマッピングされているhttp://host/Hello.jspのようなURLをリクエストすると、次の動作が発生します。
Hello.jspを変換してHello.javaを生成します。
Hello.classサーブレットが作成されます。
Hello.classが、JSPランタイム・ライブラリを使用して実行されます。ランタイム・ライブラリには、JSP内にあるタグやディレクティブの解析をサポートするファイルが含まれています。
Helloクラスがデータベースからの情報をリクエストした場合、サーブレット・コンテナはこのクラスにJDBCによるアクセスを提供するので、クラスは情報を取得し、その出力をクライアントのブラウザに返すことができます。
OC4J EJBコンテナはJ2EEアプリケーション用Enterprise Beansの実行を管理します。OC4JのWebコンテナと同様に、EJBコンテナはJ2SE仮想マシンを使用します。この項では、EJBコンテナがJ2EEアプリケーションに提供するサービスとその動作について説明します。
Enterprise Beansは、Enterprise JavaBeansテクノロジを実装するJ2EEコンポーネントです。Enterprise BeansはEJBコンテナ内で動作します。Enterprise Beanは、アプリケーションのビジネス・ロジックをカプセル化した移植性のあるサーバー・サイド・コンポーネントです。EJBには、Session Bean、Entity Bean、Message-Driven Beanの3種類があります。
OC4J EJBコンテナは、WebコンテナがサーブレットとJSPに提供するのと同様のシステム・レベルのサービスをEJBに提供します。EJBコンテナでは、J2EEサーバーであるOC4Jによって提供される基本的なサポート機能をカスタマイズするために、設定の変更が可能になっています。変更可能な設定には、セキュリティ、トランザクション管理、Java Naming and Directory Interface(JNDI)ルックアップおよびリモート接続があります。これに加えて、コンテナは、EJBのライフ・サイクル、データベース接続のリソース・プーリング、データ永続性およびJ2EE APIへのアクセスも管理します。
EJBコンテナの動作は、使用しているEnterprise Beanの種類によって異なります。EJBコンテナはJ2EEアプリケーション用Enterprise Beanの実行を管理します。
Session Beanの場合、EJBコンテナは、WebコンテナがWebコンポーネントに提供するすべてのサービスを提供します。これにはAPIや仮想マシンへのアクセス、Container Managed Transactions(CMT)のようなトランザクション・サービス、そしてセキュアで権限のあるEJBメソッドの起動などがあります。
永続性のある記憶領域機構内にあるビジネス・オブジェクトを表すEntity Beanの場合、永続性を実現する方法として2つのモデルがあります。そのモデルとは、Bean管理の永続性(BMP)を持つBeanとコンテナ管理の永続性(CMP)を持つBeanです。Bean管理の永続性では、Entity Beanのコードにデータベースにアクセスするコールが記述されており、EJBコンテナからユーザー作成コード内にあるコールバック・メソッドをトリガーします。Bean管理の永続性を持つEntity BeanはEJBコンテナ内で実行され、通常と同じコンテナ・サポートおよびコンテナ・サービスを受けます。しかし、コンテナ管理の永続性を使用する場合には、自動的に必要なデータベースへのアクセス・コールがEJBコンテナによって生成されます。このEJBメソッドでは、EJBデータの永続性を管理するために、JDBCを使用したコーディングを行う必要はありません。
Java 2 Platform, Enterprise Edition(J2EE)では、J2EEコンポーネントを記述するためのコアとなるサービスが提供されています。J2EEコンテナは、アプリケーション・コンポーネントがそのようなサービスにアクセスする際の管理を行います。サービスには次のものがあります。
Oracle Application Serverには、OracleとOracle以外のデータ・ソースに対して、高度にスケーラブルで信頼性のある接続を提供する次のようなドライバがあります。
このリリースからは、以前のバージョンで提供されていたOracle JMS以外に軽量のJMSプロバイダが加わり、JMSサポートが強化されています。この新しい軽量のJMSはJMS 1.0に完全に準拠しており、安定性とパフォーマンスを高めるファイルベースの永続性メカニズムにより、耐久性のあるメッセージングをサポートできます。Message Driven Beanのサポートも、Oracle JMS(AQ)と軽量のOC4J JMSの両方で利用できます。
OC4Jでは、マシンやコンテナ全体でコミットの調整が必要となるアプリケーションに対して、2フェーズ・コミットのサポートも追加されています。2フェーズ・コミット・エンジンは、分散トランザクションがいつ終わるのかをはっきりさせる役割があり、関係しているすべてのデータベースをコミットまたはロールバックによって変更します。
Oracle Application Serverには、Java Authentication and Authorization Service(JAAS)が実装されており、Oracle Application Server J2EEのセキュリティ・インフラストラクチャと統合されて、Webコンポーネント(サーブレットおよびJSP)とEJBコンポーネントのセキュリティ制約を適用します。OracleのOracle Application Server Java Authentication and Authorization Service(JAAS)Providerの実装には、次のような特長があります。
標準のJ2EEサービスに加えて、Oracleは次のようなサービスもJava開発者に提供しています。
オブジェクトはユーザーが定義したCacheLoaderオブジェクトを使用してロードされ、使いやすいAPIを使用してアクセスされます。これによって、Javaアプリケーション内で繰り返し情報を作成しロードする必要がなくなります。Java Object Cacheを使用するとコンテンツを速く取得することができ、Oracle Application Serverへの負荷も大幅に減少します。
Java Object Cacheは、アプリケーション・サーバーがJavaプログラムを使用してコンテンツを提供する場合に、高負荷で頻繁に使用されるJavaオブジェクトをキャッシュします。キャッシュされたJavaオブジェクトには、生成されたページが含まれるものもあれば、新しいコンテンツの作成に役立つサポート・オブジェクトをプログラム内で提供するものもあります。Java Object Cacheは、Javaアプリケーションの指示に従ってオブジェクトを自動的にロードおよび更新し、キャッシュされたJavaオブジェクトを管理するAPIを含みます。Java Object Cacheは、その汎用的な性質により、Web Object Cacheなどの高レベルのキャッシュにとっても理想的なキャッシュ・リポジトリであり、複雑な作業が減少し、開発作業が容易になります。
Oracle Application Server TopLinkは、オブジェクトとリレーショナル間の永続性のための高度なフレームワークで、Java 2 Enterprise Edition(J2EE)やJavaアプリケーションの多様なアーキテクチャに適しています。OracleAS TopLinkの開発ツールとランタイム機能により、開発やメンテナンスの作業が減り、エンタープライズ・アプリケーションの機能が向上します。OracleAS TopLinkを使用すると、リレーショナル・データベースに永続性のあるデータを格納する高性能のアプリケーションを作成できます。
この項では、OracleAS TopLinkの概要を示し、次のトピックについて説明します。
エンタープライズ・アプリケーションにおいてオブジェクトとロジックを実装するには、Javaとデータベース間の統合が不可欠になります。OracleAS TopLinkを使用すると、開発者はエンタープライズ・アプリケーションを効率的に開発し、改善することができます。OracleAS TopLinkを十分に理解するには、エンタープライズ・アプリケーションの開発者が直面している問題と、OracleAS TopLinkによってその問題がどのように解決されるかを理解する必要があります。
Javaとデータベース間の統合は、エンタープライズJavaアプリケーションにおいて軽視されがちな問題です。この問題を複雑にしている原因は、データベースの読取りや書込みだけではありません。データベースの世界には、表、行、列、主キー、外部キーなどの要素が絡んでいます。一方、JavaやJ2EEの世界には、エンティティ・クラス(通常のJavaクラスやEnterprise JavaBeans(EJB)Entity Bean)、ビジネス・ルール、複雑な関係、継承などが絡んでいます。根本的に異なるこの2つのテクノロジを結び付けるのは、困難でリソースを消費する問題になります。
オブジェクト指向のデータをリレーショナル・データに変換するプロセスを、オブジェクト・リレーショナル(O-R)マッピングと呼びます。このO-Rのソリューションを実現するには、開発者はO-Rの間にある次の課題を解決する必要があります。
アプリケーション開発者に必要なものは、理想的なアプリケーション設計やデータベースの整合性を損なうことなく、Javaアプリケーションとリレーショナル・データベースを統合できる製品です。また、Java開発者には、リレーショナル・データベースをリポジトリとして使用し、ビジネス領域のオブジェクトを格納(または永続化)し、取得できる機能も必要になります。
OracleAS TopLinkソリューションは、永続性のためのフレームワークとして、O-Rのシームレスなマッピングを管理します。また開発者がこのソリューションを使用すると、オブジェクト・テクノロジとリレーショナル・データベースの長所を兼ね備えたアプリケーションを短期間で構築できます。
OracleAS TopLinkは、Javaオブジェクトとリレーショナル・データベース間の違いを解消する、成熟した強力なソリューションを実現します。開発者がOracleAS TopLinkを使用すると、次のことが可能になります。
OracleAS TopLinkは、業界をリードするO-Rマッピング機能を実現するだけでなく、柔軟性を提供し、パフォーマンスを改善し、アプリケーションの生産性を最大化します。OracleAS TopLinkには、次の機能があります。
OracleAS TopLinkのコアになるのがランタイム・エンジンです。これにより、リレーショナル・データベースに格納された永続的エンティティに、JavaアプリケーションやJ2EEアプリケーションからアクセスできます。Oracle Application Server TopLink Foundation Libraryには、ランタイム機能に加え、OracleAS TopLink Application Program Interface(API)も含まれています。このAPIにより、OracleAS TopLinkのランタイム機能や、アプリケーションの開発を簡略化できる開発ツールに、アプリケーションからアクセスできます。このツールによって、メタデータ・ファイル内にある、TopLinkがランタイムに渡すマッピングおよびランタイム構成に関する情報が取得されます。
図2-6は、開発サイクルにおけるOracleAS TopLinkのコンポーネント間の関係を示しています。
OracleAS TopLinkのアプリケーション開発は、開発環境、OracleAS TopLinkランタイム、そしてこれらを結び付けるメタデータの3つの要素で構成されています。
OracleAS TopLinkのアプリケーションを作成するには、OracleAS TopLink Mapping Workbenchを使用して、オブジェクトとリレーショナル・モデルをマッピングし、そのマッピングの結果と新たなランタイム構成を、OracleAS TopLinkプロジェクト・ファイル(project.xmlファイル)から取得します。次に、OracleAS TopLink Sessions Editorで、セッション構成ファイル(sessions.xmlファイル)を作成します。これらのファイルが集って、OracleAS TopLinkプロジェクト全体を表します。
開発中、開発者はOracleAS TopLink APIを利用して、問合せとトランザクション・ロジックを定義します。開発者がEJB Entity Beanを使用する場合は通常、OracleAS TopLink APIを直接使用することはほとんど、あるいはまったくありません。
OracleAS TopLink Foundation Libraryが、OracleAS TopLinkのランタイム・コンポーネントとなります。ランタイム・コンポーネントには、OracleAS TopLink APIから直接アクセスするか、EJB Entity Beanを使用している場合はJ2EEコンテナから間接的にアクセスします。ランタイム・エンジンは別のプロセスでも外部のプロセスでもなく、アプリケーション内に埋め込まれています。アプリケーション・コールにより、OracleAS TopLinkが起動し、永続性の動作が行われます。この機能により、共有データベース接続やキャッシュ・オブジェクトに対して、トランザクション型アクセスやスレッドセーフ・アクセスが可能になります。
OracleAS TopLinkのメタデータは、アプリケーションの開発と、その配置後のランタイムの間をつなぐブリッジの役割を果たします。OracleAS TopLink Mapping WorkbenchとOracleAS TopLink Sessions Editorを使用してメタデータを取得し、配置用のproject.xmlファイルおよびsessions.xmlファイルを使用して、そのメタデータをランタイムに渡します。また、JavaとOracleAS TopLink APIを使用してこれらのファイルをユーザーが直接記述することもできますが、この方法は手間がかかります。
メタデータはproject.xmlファイルとsessions.xmlファイルでカプセル化されているため、開発者がランタイム環境に構成情報を渡すことができます。ランタイムは、この情報とともに永続性エンティティ(JavaオブジェクトまたはEJB Entity Bean)やOracleAS TopLink APIで記述されたコードを使用して、アプリケーションを完成させます。
OracleAS TopLink Mapping Workbenchはグラフィカルな開発ツールで、開発者がこれを使用すると、オブジェクトとリレーショナル・モデル間をマッピングし、OracleAS TopLink Foundation Libraryの各種機能を設定できます。OracleAS TopLink Mapping Workbenchは、OracleAS TopLinkメタモデル内のプライマリ・オブジェクトであるOracleAS TopLinkプロジェクトを作成します。このプロジェクトを、1つの配置用XMLファイル(project.xmlファイル)としてエクスポートします。OracleAS TopLinkはOracleAS TopLinkランタイムとともにこのファイルを使用し、アプリケーション固有の永続性機能を提供します。図2-7に、OracleAS TopLink Mapping WorkbenchがOracleAS TopLink環境にどのように適合するかを示します。
OracleAS TopLink Mapping Workbenchは、コンパイルされたエンティティ・クラス(JavaオブジェクトまたはEJB Entity Bean)をインポートするほか、開発者が設定したJDBCドライバを使用してリレーショナル・スキーマもインポートできます。OracleAS TopLinkでオブジェクト・モデルとリレーショナル・モデルをインポートしてマッピングするため、開発者はこの2つのモデルの開発作業を、プロジェクト開発のO-Rマッピング・フェーズから、従来より独立した形で行えます。
ほとんどのOracleAS TopLinkアプリケーションには、アプリケーションの配置プロセスを容易にするためのセッション構成ファイル、sessions.xmlファイルが含まれています。OracleAS TopLink Sessions Editorには、sessions.xmlファイルを構成するためのグラフィカルな環境が用意されています。
sessions.xmlファイルを使用してOracleAS TopLinkプロジェクトに1つ以上のセッションを構成し、そのセッションをプロジェクトに関連付けます。この方法により、開発者はセッションごとに個別の構成を指定して、次のような内容を追加または変更できます。
Oracle Application Server TopLink Foundation Libraryには、製品のランタイム・コンポーネントを構成するJavaライブラリが含まれています。このライブラリは、OracleAS TopLinkアプリケーションを構成するコンポーネントのサポートとAPIを提供します。このAPIを使用すると、開発者はOracleAS TopLinkと対話して、アプリケーションの永続的なエンティティを取得および変更できます。図2-8に、OracleAS TopLinkアプリケーションの側の対話を示します。
セッションは、クライアント・アプリケーションとOracleAS TopLink間のプライマリ・インタフェースであり、基盤となるリレーショナル・データベースとの接続を意味します。OracleAS TopLinkには、様々な種類のセッションが用意されており、どのセッションも設計要件とアーキテクチャごとに最適化されています。セッション・マネージャは、アプリケーション内の単独の存在として、セッションの構成と管理を行います。
最も一般的に使用されるセッションはサーバー・セッションです。これは、クライアントがクライアント・セッションを介してサーバーにアクセスする単独のセッションです。サーバー・セッションでは、共有のキャッシュと共有のJDBC接続リソースを使用できます。また、OracleAS TopLinkは、2層アーキテクチャ、分散アプリケーション、および複数のデータベースのセッションもサポートします。
OracleAS TopLinkデータ・アクセス・コンポーネントでは、OracleAS TopLinkまたはホスト・アプリケーション・サーバーによって提供される接続プーリングを使用して、JDBC接続にアクセスできます。このコンポーネントは、各種の問合せ操作に必要なSQL生成を管理し、JDBCドライバとSQL言語間の違いを調整します。OracleAS TopLinkには、データ・アクセス機能を最適化するためのパフォーマンスのチューニング・オプションが数多く用意されています。
OracleAS TopLinkには、オブジェクト識別性を保証し、パフォーマンスを向上させるオブジェクト・レベルのキャッシュが用意されています。開発者はOracleAS TopLinkキャッシュを構成し、アプリケーションからデータベースへのアクセス回数を減らすことによって、アプリケーションの効率性を最大限に高めることができます。クラスタ環境では、開発者は変更した内容を他に配置されたアプリケーションのインスタンスと同期化させるように、OracleAS TopLinkを構成できます。
OracleAS TopLinkの問合せフレームワークは、エンタープライズ・アプリケーションの複雑な永続性要件の管理に必要な柔軟性を開発者に提供します。この問合せフレームワークの主な機能を次に示します。
開発者がOracleAS TopLink Mapping Workbenchを使用してOracleAS TopLinkの問合せを定義する場合、JavaコードではOracleAS TopLink API、EJB Entity BeanではEJB Finderを使用します。
OracleAS TopLinkでは、基盤となるデータベースとスキーマから独立したトランザクション・コードを記述できます。OracleAS TopLinkのこの機能は、作業ユニットを介して利用できます。
作業ユニットは、トランザクションの変更がデータベースにコミットされるまで、その変更を他のスレッドと切り離します。作業ユニットは、他のトランザクション・メカニズムとは異なり、トランザクションのオブジェクトへの変更、変更の順序、および他のOracleAS TopLinkキャッシュを無効にできる変更を、自動的に管理します。作業ユニットがこのような管理を行う場合は、最小限のチェンジ・セットを計算し、参照整合性規則とデッドロック回避に従ってデータベース・コールに順序を付け、変更されたオブジェクトを共有キャッシュにマージします。クラスタ環境では、作業ユニットは変更内容をクラスタの他のサーバーにも同期化させます。
アプリケーションがEJB Entity Beanを使用する場合は、開発者は作業ユニットAPIに直接アクセスしませんが、その機能が持つ次の利点は受けられます。OracleAS TopLinkランタイムとJ2EEコンテナ間の統合では、作業ユニットが自動的に利用されます。
JTA/JTSの統合: デフォルトのOracleAS TopLinkでは、アプリケーションはすべてのオブジェクトレベルの変更にトランザクションの境界を作成できます。OracleAS TopLinkはデータベース・トランザクションを明示的に管理し、問題が発生した場合には、データベースの変更とオブジェクトレベルの変更のどちらも安全にロールバックします。
J2EEアプリケーションの場合は、開発者はホスト・アプリケーション・サーバーのJTA/JTSサブシステムと同期化させるように、OracleAS TopLinkを構成できます。この機能により、アプリケーションは、デフォルトのユーザー管理トランザクションではなく、コンテナ管理トランザクションを使用できます。
ただし、この機能はEJBアーキテクチャに限定されたものではありません。開発者は、どのようなOracleAS TopLinkアーキテクチャでも、コンテナ管理トランザクションを使用するように構成できます。
OracleAS TopLinkで永続性を保持する方法は、クラス構造(オブジェクト)とリレーショナル・スキーマを定義するメタデータ、およびそれ以外にOracleAS TopLinkが実行時に使用する構成情報に基づいています。開発者はOracleAS TopLink Mapping Workbenchを使用してこのメタデータを定義し、OracleAS TopLinkランタイム・コンポーネントはこのメタデータに基づいて、Javaの内省的機能および内観的機能を利用して、必要な永続性機能を提供します。
TopLinkのアプリケーション・メタデータ・モデルは、OracleAS TopLinkプロジェクトに基づいています。プロジェクトには、ディスクリプタ、マッピング、およびランタイム機能をカスタマイズする様々なポリシーが含まれています。図2-9に、このメタデータ・モデルを示します。
sessions.xmlファイルを使用して、プロジェクトのセッションを構成します。開発者は、これらのファイルの作成と編集にOracleAS TopLink Sessions Editorを使用します。セッション・マネージャは、アプリケーションの初期化中にsessions.xml構成ファイルを使用します。
OracleAS TopLinkでは、配置プロジェクトがメタデータの主要なコンテナです。プロジェクトとは通常アプリケーションを意味し、すべての永続的なクラスとその関係を表すマッピング情報が含まれています。配置されたアプリケーションの各セッションは(セッション・ブローカを除く)、1つのプロジェクトを参照します。開発者はOracleAS TopLink APIによるコーディングでプロジェクトを作成できますが、OracleAS TopLink Mapping Workbenchを使用してプロジェクトを作成および管理し、OracleAS TopLink Mapping Workbenchを使用して、実行時に使用するプロジェクトのXMLまたはJavaソース・バージョンを作成することをお薦めします。
ディスクリプタは、永続性のあるJavaクラスとリレーショナル表(複数可)間の対応付けを表します。ディスクリプタには、プロジェクト内のクラス・レベルの構成情報と、その永続性属性ごとの一連のマッピングが含まれています。また、ディスクリプタ・レベルでは、これら以外の詳細な構成オプションも多数設定されます。OracleAS TopLink Mapping Workbenchはこのようなオプションのほとんどをサポートしますが、開発者がOracleAS TopLink APIを使用して設定する必要のあるオプションもいくつかあります。
マッピングは、マッピングされるクラスの属性が、データベース内の列とどのように関連付けられているかを示します。OracleAS TopLinkには、柔軟性が高くカスタマイズもできる高度なマッピング手法が各種用意されているので、オブジェクトとリレーショナル・モデル間で、複雑なマッピングを実行できます。
マッピングには、ダイレクト・マッピングとリレーションシップ・マッピングの2種類があります。
OracleAS TopLinkを使用してアプリケーションを作成しても、開発ツールや開発プロセスの選択に違いはありません。ただし、OracleAS TopLinkは、開発者の開発方法に影響を及ぼします。この項では、OracleAS TopLinkを使用することでアプリケーション開発に影響を及ぼす主な分野について説明します。このような分野は、開発者が作成しているアプリケーションのサポート対象がJavaオブジェクト、EJB Entity Bean、またはその両方であっても存在します。
OracleAS TopLinkは、開発者がOracleAS TopLink Mapping Workbenchで作成したディスクリプタとマッピングを使用して、データベースにアプリケーションの永続的エンティティをマッピングします。OracleAS TopLink Mapping Workbenchは、プロジェクト開発で次のような方法をサポートします。
OracleAS TopLink Mapping Workbenchはこのようなオプションをすべてサポートしていますが、最も一般的なソリューションは、統合開発環境(IDE)やモデリング・ツールなどの開発ツールを使用して、永続的エンティティを開発することと、適切なリレーショナル設計ツールを使用してリレーショナル・モデルを開発することです。そして開発者はOracleAS TopLink Mapping Workbenchを使用して、この2つのモデルを関連付けるマッピングを作成します。
OracleAS TopLink Mapping Workbenchは、永続的エンティティを生成する機能やアプリケーションのためのリレーショナル・モデル・コンポーネントを提供しますが、このようなユーティリティはアプリケーションの完全なラウンドトリップ開発ではなく、短期間における初期の開発戦略のみに役立つように設計されています。
セッションは、アプリケーションとOracleAS TopLinkの永続性機能間のプライマリ・インタフェースです。OracleAS TopLinkアプリケーションの開発時には、開発者はセッションの初期化と管理を適正に行う必要があります。
コンテナ管理の永続性(CMP)またはBean管理の永続性(BMP)を持つEJB Entity Beanを使用する場合、Entity Beanを変更するクライアント・コードが、OracleAS TopLinkのセッションに直接アクセスすることはありません。その場合は、コンテナとの統合によるか、EJBのコールバックによって、変更が透過的に行われます。
永続的エンティティとしてJavaオブジェクトを使用するように設計されたアプリケーションは、OracleAS TopLink APIで提供されるセッション・マネージャを使用します。このクラスは単独のセッションを初期化し、管理します。開発者がsessions.xmlファイルでセッション・マネージャを構成することにより、配置されたアプリケーションの構成とカスタマイズが容易になります。
OracleAS TopLinkには、オブジェクトおよびデータの問合せ型がいくつかあるほか、次のような問合せ選択条件のオプションも用意されています。
これらのオプションを使用すると、開発者はどのような種類の問合せでも作成できます。開発者がアプリケーションの問合せを定義する場合は、事前定義済の問合せを使用することをお薦めします。事前定義済の問合せは、プロジェクト・メタデータに収められており、名前で参照できます。これにより、アプリケーション開発が簡略化され、問合せをカプセル化してメンテナンス・コストを削減できます。
OracleAS TopLink Mapping Workbenchには、問合せを定義する最も簡単な方法が用意されています。また、開発者はOracleAS TopLink APIを使用して問合せをコードで記述することもできます。
アプリケーションにEJB Entity Beanが含まれる場合は、開発者がEJB QLでファインダのコードを完成すると、そのアプリケーションはJ2EE仕様に準拠します。また、開発者はOracleAS TopLinkの他の問合せオプションも使用できます。アーキテクチャや永続的エンティティにかかわらず、すべての問合せオプションを使用できます。
OracleAS TopLinkアプリケーションでは、作業ユニットにより、OracleAS TopLinkのトランザクションがアプリケーションのトランザクション要件に準拠します。
作業ユニットは、OracleAS TopLink Foundation Libraryのコンポーネントの中でも、最も高度で強力なものの1つです。CMPやBMPを持つEntity Beanを使用する開発者は、トランザクションの変更を永続的エンティティに適用する場合に、OracleAS TopLink APIを使用しませんが、作業ユニットはその背後で使用されています。作業ユニットの動作を理解し、それを使用する簡単なコーディング・パターンを開発することが、効率的でメンテナンス可能なアプリケーションを作成する鍵になります。
アプリケーションのパッケージング(ホストJava環境またはJ2EE環境に配置の場合)は、OracleAS TopLinkの使用と構成に影響を与えます。たとえば、開発者は、Enterprise Archive(EAR)ファイルにJ2EEエンタープライズ・アプリケーションをパッケージする場合があります。EARファイル内では、Webアプリケーション(WAR)とJavaライブラリ(JAR)内に永続的エンティティをパッケージングする方法がいくつかあります。開発者がOracleAS TopLinkをどのように構成するかは、アプリケーションのパッケージング方法や、ホスト・アプリケーション・サーバーのクラス・ローダーを使用する方法によっても異なります。
OracleAS TopLinkでは、アプリケーション開発、テスト、品質保証の各サイクルの全体にわたって、開発者が機能とパフォーマンスを監視できます。OracleAS TopLinkには、数多くのテキスト・ロギング機能や、カスタム・ロギング戦略の実現に必要なAPIが備わっています。開発者はこれらの機能を使用して、アプリケーションの動作とパフォーマンスを目的どおりにできます。
OracleAS TopLinkには、パフォーマンス・プロファイラ機能が備わっており、OracleAS TopLink Foundation Library APIから利用できます。このランタイム機能は、問合せの実行時刻を追跡するため、開発者はパフォーマンスの分析に利用できます。このツールにより、アプリケーションのパフォーマンスを妨げるボトルネックの特定に必要な情報が得られます。
また、OracleAS TopLinkには、豊富なパフォーマンス拡張機能も備わっています。これらの機能の構成方法を理解すると、特にアプリケーション開発における後の方のフェーズで、アプリケーションのパフォーマンスに大きな効果をあげることができます。
OracleAS TopLinkは、JavaとJ2EEのどちらのアプリケーションでも使用できるように設計されています。OracleAS TopLinkは新製品として発表されたときから柔軟性に優れていたため、数多くのスタイルのアーキテクチャに利用されてきました。この項では、OracleAS TopLinkに関連付けられている最も一般的なアーキテクチャを5つ紹介します。この項では、J2EEとの関係においてアーキテクチャを説明しますが、OracleAS TopLinkは従来どおり、J2EE以外のアプリケーションやJavaアプリケーションも完全にサポートしています。
3層(またはJ2EE Web)アプリケーションは、最も一般的なOracleAS TopLinkアーキテクチャの1つです。このアーキテクチャの特長は、サーバーによってホスティングされた環境であり、そこでは、ビジネス・ロジック、永続的エンティティ、OracleAS TopLink Foundation Libraryがすべて、1つのJava Virtual Machine(JVM)の中に存在します。
このアーキテクチャの最も一般的な例は、シンプルな3層アプリケーションであり、そこでは、サーブレット、JavaServer Pages(JSP)およびHTMLを介して、クライアント・ブラウザがアプリケーションにアクセスします。プレゼンテーション層は、同じJVMにある他のJavaクラスを介してOracleAS TopLinkと対話し、必要な永続性ロジックを提供します。このアーキテクチャは、クラスタ環境において複数のサーバーをサポートしますが、プレゼンテーション層と、OracleAS TopLinkを使用して永続的エンティティに対して永続性ロジックを起動するコードは、JVM間で区別されません。
3層アプリケーションの一般的な形態として、EJB Session Beanにおいて、OracleAS TopLinkアクセスなどのビジネス・ロジックのラッピングを行います。このアーキテクチャでは、スケーラブルな配置が可能で、ホスト・アプリケーション・サーバーのトランザクション・サービスとの統合が行われます。プレゼンテーション層からの対話は、EJB Session Beanへのコールを介して行われます。このアーキテクチャでは、アプリケーションを複数の層に分割したうえで配置します。
Session Beanアーキテクチャは、JavaオブジェクトとEJB Entity Beanのどちらかを永続化できます。
OracleAS TopLinkは、EJB Entity Beanを使用する必要があるアプリケーションにCMPサポートを提供します。このサポートは、業界で主流となっている各種アプリケーション・サーバーで利用できます。OracleAS TopLink CMPサポートによって、アプリケーション・コードには透過的なEJB 1.1および2.1 CMPソリューションを開発者が利用できますが、OracleAS TopLinkランタイムの利点が失われることはありません。
アプリケーションは、クライアントから、またはSession Beanレイヤー内から直接CMPを使用して、OracleAS TopLink対応のEJB Entity Beanにアクセスできます。また、OracleAS TopLinkでは、EJB Entity Beanとの関係において、通常のJavaオブジェクトを使用できます。
EJB Entity Beanの使用を選択するケースとしては、アプリケーションにおけるOracleAS TopLink BMPの利用もあります。このアーキテクチャでは、開発者はEJB APIを介して永続データにアクセスできますが、アーキテクチャ自体はプラットフォームに依存しません。
BMPの活用には移植性があります。つまり、開発者がアプリケーションを作成した後に、それを1つのアプリケーション・サーバー・プラットフォームから別のアプリケーション・サーバー・プラットフォームに移すことができます。
2層(またはクライアント/サーバー)アプリケーションでは、OracleAS TopLinkアプリケーションがデータベースに直接アクセスします。ここで説明した他のアーキテクチャほど一般的ではありませんが、OracleAS TopLinkは、小規模または組込み型のデータ処理アプリケーション向けに、このアーキテクチャをサポートします。
Oracle JDeveloperは、J2EEおよびXMLの開発環境で、ビジネス・アプリケーションとWebサービスの開発、デバッグ、配置を一貫してサポートします。開発者の生産性を最大限に引き出すため、JDeveloperには、業界最速のJavaデバッガと革新的なプロファイラ、そしてコードのパフォーマンスを分析し、改善するためのCodeCoachなど、開発サイクルをすべてサポートする包括的な一連の統合ツールが備わっています。JDeveloperには、J2EEの開発を簡略化するため、ウィザード、エディタ、ビジュアル設計ツール、開発ツールなどが用意されており、これにより、アプレット、JavaBeans、JavaServer Pages、サーブレット、Enterprise JavaBeansなど、高品質で標準に準拠したJ2EEコンポーネントを作成できます。
Oracle JDeveloperはすべてJavaで記述されており、Windows、Solaris、Unixなどの主要なプラットフォームすべてに使用できることが保証されています。Oracle JDeveloperの主な機能をいくつか次に示します。
http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/index.html
Oracle Application Development Framework(Oracle ADF)は、Oracle JDeveloperに付属するランタイム・フレームワークです。J2EEアプリケーション開発者は、Oracle ADFをJDeveloperの設計ツールとともに使用することで、アプリケーションの各層をパーティション化できます。
J2EEアプリケーションの開発と配置では、多種多様なテクノロジやインフラストラクチャが採用されますが、それら設計パターンの多くは分散アプリケーション全体で共通しており、1つのランタイム・フレームワークに集約できます。このようなフレームワークがないと、J2EEとWebサービスの各テクノロジをインタフェース・レベルで定義する必要が生じます。
Oracle ADFを使用する目的の1つは、J2EEプラットフォームの堅牢でスケーラブルな、柔軟性の高いアーキテクチャに準拠したアプリケーション配置をサポートすることです。開発者は、JDeveloperでアプリケーションを開発する際にOracle ADFを採用することで、次の使い慣れたテクノロジでコードを作成しながら、J2EEプラットフォーム・インフラストラクチャのメリットも得られます。
モデル-ビュー-コントローラ(MVC)はJ2EEのアーキテクチャに関する設計パターンで、分散されたアプリケーション・ロジックと複雑なユーザー・インタフェースを兼ね備えたアプリケーションの開発に使用します。MVCの目標は、アプリケーション・ロジックとユーザー・インタフェースを明確に区別する(パーティション化する)ことです。
一般的に、モデルは基盤となるロジックを、ビューは視覚的な部分を表します。また、コントローラは、ユーザー入力の処理方法を指定します。データ・モデルの変更時には、その変更がデータ・モデルに依存するすべてのビューに通知されます。このようにアプリケーションの状態とプレゼンテーション部分を分離することで、同一モデルに基づいた複数ビューの作成が可能になります。また、それらのビューを作成および変更しても、基盤となるモデルは影響を受けません。
J2EEアプリケーション開発者は、Oracle ADFをJDeveloperの設計ツールとともに使用することで、アプリケーションの各層を任意のテクノロジに基づいてパーティション化できます。開発者は、次の作業が可能になります。
開発者は、J2EEアプリケーションのMVCアーキテクチャに関する設計パターンを使用してコンポーネントを構築することにより、Oracle ADFをどの程度活用するか決められます。Oracle ADFを使用しても、アプリケーション開発チームは、Oracle ADFの各レイヤーを任意のJ2EEコンポーネントおよびレガシー・ビジネス・サービスと組み合せて使用できます。
E-Businessが効果的に機能するには、標準的なインフラストラクチャをインターネットでサポートして、企業およびそのエンタープライズ・アプリケーションが、他の企業およびそのアプリケーションと効率的に通信できるようにする必要があります。このような標準が普及すれば、個別のビジネス・プロセスがそれ自身をインターネット上で公開し記述することで、他のサービスがその位置を特定してこれを起動し、予測可能なレスポンスを提供できるようになります。
Webサービスはビジネス機能やエンタープライズ・アプリケーションの開発や配置の方法に対する根本的な変更を請け合うことで、このような移行を推進しています。Webサービスは、次のような特長を持つ個別のビジネス・プロセスです。
Webサービスは、すべてのビジネスで次のことが可能になる業界標準に準拠したインフラストラクチャを提供します。
Oracle Application Server Web Servicesは、OC4J サーブレット・コンテナ内のサーブレットとして実行されます。これによって、Webサービスに、すべてのJ2EEアプリケーションがOracle Application Serverに備えているのと同じスケーラビリティ、可用性およびロード・バランシング機能が提供されます。
Oracle Application Server Web Servicesでは、リモート・プロシージャ・コール(RPC)スタイルの交換や、メッセージ指向型またはドキュメント・スタイルの交換がサポートされています。サポートされているRPC Webサービスには、Javaクラス、ステートレス・セッションEJB、ステートレスPL/SQLストアド・プロシージャなどがあります。サポートされているドキュメント・スタイルWebサービスには、Javaクラス・ドキュメント・スタイルのWebサービスやJMSドキュメント・スタイルのWebサービスなどがあります。
Oracle Application Server Web Servicesでは、実装のタイプごとに異なるJ2EE標準準拠のサーブレットを使用して、Webサービスの実装へのエントリ・ポイントを提供します。図2-10に、サーブレットのエントリ・ポイントを含むOracle Application Server Web Servicesのランタイム・アーキテクチャを示します。
Oracle Application Server Web Servicesのアーキテクチャの詳細は、『Oracle Application Server Web Services開発者ガイド』を参照してください。
Oracle Application Server Web Servicesには、Webサービスの開発および配置のために、最新のランタイム機能や包括的なサポートが備わっています。
Oracle Application Server Web Servicesの主な開発機能を次に示します。
Oracle Application Server Web Servicesの主な配置機能および管理機能には次のものがあります。
.earファイルを生成できます。
.earファイルを使用し、配置するアプリケーションに関する情報をステップ形式で指定してから、アプリケーションを配置します。
Oracle Formsアプリケーションでは、対話型のグラフィカル・インタフェースとデータ検証の強力なサポートが統合されます。Forms開発者は、強力なデータ操作機能を持つアプリケーションを短期間に作成できます。
Oracle Formsアプリケーションでは、デスクトップ・アプリケーションと同等の機能をブラウザ上に配置できます。次のサポートにより、非常に多機能で生産性の高いユーザー・インタフェースが実現されます。
Oracle Formsアプリケーションは、従来のHTMLフォーム・アプリケーションと類似しています。従来のアプリケーションでは、Webページ上のフォームにデータが入力され送信されます。フォームからのデータはWebサーバーによってCGIアプリケーションで処理されます。その後、アプリケーションによって必要なトランザクションが実行され、ユーザーのブラウザにフィードバックが返されます。JavaScriptおよびデータベースがデータ検証タスクを実行し、フォームからのデータが正確で完全であることが保証されます。
Oracle Application Server Forms Servicesでは、Web環境のJavaクライアントにFormsアプリケーションが配置されます。Oracle Application Server Forms Servicesでは、クラスのダウンロード、ネットワークの通信量、およびOracleデータベースとの対話が自動的に最適化されます。アプリケーションの負荷が複数のサーバー間で自動的に分散されるため、サービスのリクエストが増加しても容易に対応できます。
Oracle Application Server Forms Servicesは、次の4つのコンポーネントで構成されます。
クライアントがOracle Application Server Forms Servicesアプリケーションをリクエストすると、そのリクエストは次のフローに従って処理されます。
<APPLET>タグが含まれているHTMLページをブラウザに表示します。このURLによって、HTMLページを動的に生成するForms Servletがコールされます。
表2-11は、Oracle Application Server Forms Servicesのアーキテクチャの観点から、このフローを示したものです。
Oracle Application Server Forms Servicesには、Formsアプリケーションをインターネットに堅牢かつ標準的に配置する、次のような機能があります。
Oracle Application Server Forms Servicesは、複数の階層で構成される環境にOracle Formsアプリケーションを配置するための最適化されたフレームワークです。OracleAS Forms Servicesには、Formsアプリケーションがいかなるネットワークでも自動的に拡張および機能する、すぐに利用できる機能と固有のサービスがあります。OracleAS Forms Servicesでは、アプリケーション・コードを変更することなく、既存のアプリケーションをインターネットに再配置できます。
OracleAS Forms Servicesでは、アプリケーションの品質や開発者の技能とは関係なく、スケーラブルかつ高いパフォーマンスでインターネットにアプリケーションを配置できます。Oracle Formsで開発されたアプリケーションは、Oracle Formsに組み込まれているサービスによって、自動的に拡張および実行されます。これらのサービスには、E-Businessソリューションのビルディング・ブロックおよびインフラストラクチャが元から備わっています。ビジネス開発者は、このため複雑な低レベルのインフラストラクチャ・コードの実装が不要になるため、ビジネス要件の実装に集中できます。こうした固有のサービスには、レコードのキャッシュとロック、データベース管理、例外処理、ロード・バランシングなどがあります。
OracleAS Forms ServicesはOracle Application Serverに完全統合されたコンポーネントなので、Oracle Application Server Infrastructureを使用します。OracleAS Forms Servicesの配置アーキテクチャには、Oracle Application Server Containers for J2EE(OC4J)が使用されます。コーディングせずにOracle Application Server Single Sign-On Serverと統合できるため、ユーザーは複数のパスワードを記憶する必要がありません。また、Oracle Enterprise Manager Application Server Controlの強力な機能を利用することで、システム管理者は、OracleAS Forms Servicesランタイム・プロセスの起動、停止、監視、追跡および診断などの制御を一元管理できます。
OracleAS Forms Servicesは、ネットワークの通信量を削減するため、またデータベースのレスポンス時間を最小にするため高度に最適化されています。たとえば、アプリケーション・インタフェースは高度に最適化された汎用Javaアプレットとしてレンダリングされ、またメッセージの差分検出、メッセージのバンドル化、JARファイルのキャッシュ化などのメカニズムを使用してクライアントと中間層間のラウンドトリップの回数が削減されています。同時に、Oracleデータベースの機能を利用して、データベース・サーバーとのやり取りが最小化されています。
OracleAS Forms Servicesを使用しての配置は、企業イントラネット、エクストラネット、およびクライアントと中間層間にソケット接続またはHTTP/HTTPS通信を使用するインターネットに対して最適化されています。HTTPおよびHTTPSのサポートによって、Oracle Formsアプリケーションは、きわめてセキュアで最適化された方式で、業界の各種ファイアウォールに配置できます。
アプリケーションの不具合を完全になくすことは、アプリケーションの可用性を保証する上での基本です。OracleAS Forms Servicesのランタイム・アーキテクチャは、標準のサーブレットに基づいているので、ハードウェアのロード・バランシング、リバース・プロキシ・サーバー、Oracle Application Serverを介しての標準的なロード・バランシングなど、標準的なロード・バランシング技術を使用できます。
統一されたコードを使用するOracleAS Forms Servicesでは、Oracle Formsアプリケーション内のJavaやXMLなどの新しい標準を柔軟に利用できます。これによって、JavaやXMLを利用してアプリケーションを拡張する柔軟性に加えて、OracleAS Forms Servicesが提供するアプリケーション・フレームワークの利点と、組込みのスケーラビリティおよびパフォーマンスの利点の両方を享受できます。
OracleAS Forms Servicesには、Javaで記述されたコンポーネントにアクセスして、中間層のOracle Formsアプリケーションからそれらを利用する機能があります。この機能を使用することで、Webサービス、XML、Enterprise JavaBeans、非標準デバイスなど、他のアプリケーションやテクノロジとの通信および統合が可能になります。
OracleAS Forms Servicesでは、アプリケーションのプレゼンテーションが、最適化された汎用のJavaアプレットとしてレンダリングされます。このアプレットはJavaコンポーネント(JavaBeansやプラッガブルJavaコンポーネントなど)を使用して拡張できるため、ビジネス開発者は、エンド・ユーザーの生産性を最大限に向上させる高度なインタフェースを迅速かつ容易に構築できます。ビジネス開発者は、Java言語を学習せずにJavaが持つ強力な機能を、新しいルック・アンド・フィールと同様に、拡張性のあるJavaクライアントで利用できます。
XMLは、機種の異なるシステムの間でのデータの移植や相互運用を可能にします。XMLとは、Webページのデータの記述をカプセル化するために、ユーザーによるマークアップ・タグの定義をサポートしているマークアップ言語です。自己定義式の言語であるため、柔軟性に富んでいます。
Oracle Application Serverには、XMLを使用するアプリケーションの開発をサポートするOracle XML Developer's Kit(XDK)があります。XDKには、XML文書の操作および変換のために、基本的なXMLインフラストラクチャ・コンポーネントが用意されています。XDKは、World Wide Web Consortium(W3C)の仕様に基づいたコンポーネント・ライブラリとユーティリティから構成されます。このコンポーネントを使用すると、XML形式のデータをOracleデータベース内で生成、操作、レンダリング、保存することが可能で、また各種のプログラミング言語で記述されたアプリケーション間でデータを共有できます。
この項では、Oracle XML Developer's Kitに含まれるツールについて説明します。
XMLパーサーAPIはW3Cの仕様によって定義されているため、アプリケーション開発者は標準的なプログラミング・インタフェースを使用できます。ただし、ある機能に関する仕様がない場合、オラクル社が独自にその仕様を拡張することがあります。
OracleのXMLパーサーおよびXSLTパーサーは、国際キャラクタ・セットとマルチスレッドをサポートしており、オプションの妥当性チェックや、パフォーマンス改善のためにDocument Type Definition(DTD)やスタイルシートのキャッシュが可能になっています。
Oracle XML Developer's Kitには、次のAPIがあります。
Oracle XML Schema Processorsは、SAXパーサーの使用時のunique、key、keyrefの制約といった特定の機能を除けば、W3CのXML Schemaに関する仕様書(ドラフト)の構造とデータ型について説明した項に準拠しています。XML Schemaは、基本および複合データ型のサポート以外は、DTDのスーパーセットになっています。そのため、データ型情報を埋め込んだXML文書をXML Schemaを使用して妥当性チェックすることができます。
XML Class Generatorは、DTDまたはXML Schemaの定義に対応するXML文書を作成する一連のJavaまたはC++クラスを生成します。これは、XML文書を構成するために、同意済のDTDに基づいて、あるいはWebフォームのバックエンドとして、XMLメッセージをあるアプリケーションから他のアプリケーションに送信する場合に便利です。生成されたクラスをプログラムによって使用することで、DTDやスキーマの定義に準拠したXML文書を作成できます。
XSQL ServletはSQL問合せを処理し、結果セットをXML文書として出力するツールです。このプロセッサは、入力としてSQL問合せが埋め込まれたXMLファイルを使用します。XSQL Servletを使用すると、次のような作業を行えます。
XML Transviewer Beansは、XML JavaBeansを構成するXMLコンポーネント・セットです。XML文書の表示と変換を行うために、Javaアプリケーションまたはアプレットから使用します。
XML Transviewer Beansは視覚的コンポーネントを含むJavaコンポーネントから構成され、XMLベースのデータベース・アプリケーションの素早い作成と配置を可能にするためにOracle JDeveloperに統合されています。
Oracle Application Serverは、Web上でPL/SQLベースのアプリケーションを作成する作業をサポートします。PL/SQLストアド・プロシージャは、データベースからデータを取得し、Webブラウザ上で表示するデータやコードが含まれたHTTPレスポンスを生成します。動的なページをコーディングするテクニックには様々なものがありますが、PL/SQLはデータベースの処理に基づいて動的なページを作成するのに特に適しています。PL/SQLのDML文のサポート、動的SQL、カーソル、そしてサーバーとの緊密な統合化によって、Webアプリケーションにパワーと柔軟性の両方がもたらされます。この動的ページには、別のストアド・プロシージャをさらにコールするリンクやHTMLフォームを含めることができるので、表示されたデータについてのドリルダウンなどができます。互いにリンクされたこの一連のHTMLページが、Webアプリケーションのユーザー・インタフェースになります。PL/SQLのストアド・プロシージャを使用して動的コンテンツを作成すると、CGIプログラムのような柔軟で対話性に富んだ動作を、新しいCGIプロセスを毎回起動するのに必要となるメモリーのオーバーヘッドなしに実現できます。
Oracle Application Server PL/SQLの開発者はPL/SQL Server PagesあるいはOracle PL/SQL Web Toolkitのどちらかを使用してアプリケーションを作成できます。
mod_plsqlはApacheのプラグインで、Web上でPL/SQLベースのアプリケーションを作成する作業をサポートします。mod_plsqlは、ブラウザのリクエストをPL/SQLのストアド・プロシージャにマッピングし、PL/SQLのストアド・プロシージャは、データベースからデータを取得し、Webブラウザ上で表示するデータやコードが含まれたHTTPレスポンスを生成します。
SQL問合せの結果を含んだ動的コンテンツをWebページに入れるには、PL/SQL Server Pages(PSP)を使用したサーバー側スクリプトを使用します。スクリプトを扱いやすいHTMLオーサリング・ツールでWebページを作成し、PL/SQLコードの部分を所定の位置にドロップできます。この方法は、htpパッケージおよびhtfパッケージを使用してHTMLコンテンツを1行ずつ記述していくよりもはるかに便利です。
処理を行うのはWebサーバーではなくデータベース・サーバーであり、ブラウザが受け取るのは特殊なスクリプト・タグのない単純なHTMLページであるため、すべてのブラウザをサポートすることが可能になり、ブラウザによる区別をなくすことができます。またサーバーのラウンドトリップ数を最小に抑えることによって、ネットワークの通信量が効率化されます。
作成するHTMLページ内にPL/SQLコードを埋め込むと、コンテンツを手早く記述できるので、迅速で反復的な開発過程に従うことが可能になります。クライアント・マシン上にWebブラウザが1つあるだけで、ソフトウェアの集中管理を維持できます。
Oracle PL/SQL Web Toolkitには、動的HTMLを生成するアプリケーションの作成を可能にするPL/SQLパッケージが含まれています。このツールキットを使用すると、アクセスしたデータをWebページに挿入できます。HTMLの詳細な構文を習得する負担をパッケージが取り除いてくれるので、アプリケーションの作成に集中できます。
Oracle Application Server PL/SQLは、mod_plsqlモジュールを活用してWebコンテンツを次のように配布します。
このタイプの動的コンテンツは、動的HTML(DHTML)とは別のものです。DHTMLの場合、コードはJavaScriptなどのスクリプト言語としてダウンロードされ、HTMLとともにブラウザによって処理されます。PL/SQL Webアプリケーションの場合、JavaScriptなどのスクリプト・コード自体を出力に含めることができるので、手動で作成するには手間のかかる複雑なDHTMLでも作成できます。
Oracle Application Serverには、堅牢な文書ライフ・サイクル・システムであるOracle Content Management Software Development Kit(CM SDK)があります。これは、Javaで作成され、他のOracleコンテンツ管理API製品と統合されたシステムです。Oracleの顧客やパートナの間では、Oracleプラットフォームの特長や機能を活用したこのJavaベースのプラットフォームで、ソリューションの成果をあげています。
Oracle CM SDKには、コンテンツ・リポジトリおよびメタデータ・リポジトリ、プロトコル・サーバーおよびクラス・ライブラリが出荷時点で用意されているので、開発者はコンテンツ管理ソリューションを短期間で作成できます。
図2-12に、Oracle CM SDKの基本的なアーキテクチャを示します。インストールが完了した後、開発者はすぐにFTP、WebDAVなどの標準的なファイル・システム・プロトコルを使用して、リポジトリにコンテンツを格納できます。次に、個々の要件に合せたビジネス・ロジックを指定し、Webベースのユーザー・インタフェースを作成できます。また、Oracle CM SDKインストールには、Web起動アプリケーションも含まれているので、Webベースのコンテンツ管理アプリケーションの作成方法が理解できます。
Oracle CM SDKの重要な特長や機能を次に示します。
Oracle Application Server MapViewerはプログラム可能なツールで、Oracle SpatialまたはOracle Locatorで管理される空間データを使用してマップをレンダリングする作業に役立ちます。MapViewerは、空間データの問合せや地図レンダリングの複雑な面を排除できるツールで、上級ユーザー向けにはカスタマイズ可能なオプションも用意されています。これらのツールは、プラットフォームに依存しない方法で配置でき、マップのレンダリング用アプリケーションと統合できるように設計されています。
MapViewerを理解するうえで基礎となる次の概念があります。
アプリケーションがMapViewerを使用する場合、町、川、高速道路などの特定のテーマに色やパターンなどの特定のスタイルを適用して、マップをレンダリングします。たとえば、アプリケーションでマップを表示する場合、国立公園は緑で表示し、レストランは赤の星でマークするというようなやり方ができます。マップには通常いくつかのテーマがあり、政治的なエンティティ、自然界のエンティティまたはその両方が表現される場合もあります。たとえば、マップには、国境や州境、都市、山脈、川、史跡などが表示される場合もあります。マップがレンダリングされると、各テーマはイメージ全体の中で個々のレイヤーとして表現されます。
MapViewerでは、テーマごとに1つ以上のスタイルを適用するルールを含め、スタイル、テーマ、ベース・マップを定義できます。これらのスタイル、テーマ、ベース・マップ、およびこれらに関連付けられるルールは、データベースのMDSYSスキーマの下のマップ定義表に格納され、メタデータ・ビューによって表示されます。データベース・インスタンスのスタイルはすべて、ユーザー全員で共有します。ユーザーがアクセスできるマッピング・メタデータは、MapViewerのメタデータ・ビューで決定します。特定のユーザーがアクセスできるマップ定義オブジェクトのセットは、ユーザーのマッピング・プロファイルと呼ばれることもあります。
MapViewerには、クライアントが要求するマップまたはMapViewerの管理アクションにかかわらず、基本的なアクション・フローに2つのステップがあります。
マップ・リクエストの場合、次のステップが実行されます。
MapViewerの管理リクエストの場合、次のステップが実行されます。
図2-13に、このアクション・フローを説明するMapViewerのアーキテクチャを示します。
図2-13は次の内容を示しています。
MapViewerの主なコンポーネントには次のものがあります。
レンダリング・エンジンは、Java Database Connectivity(JDBC)を介して、Oracleデータベースに接続されます。また、データベースからマップ・メタデータをロードし、このメタデータを、取得した空間データに適用します。
XML APIには、上級アプリケーション開発者向けのインタフェースが用意されており、これは中間層MapViewerに対してマップ・リクエストを発行し、そのマップ・レスポンスを処理するのに便利です。
|
![]() Copyright © 2002, 2005 Oracle Corporation. All Rights Reserved. |
|