(57)【要約】【課題】  要求元からのウェブ・サービス要求に対する応答を生成するためのコンピュータに実装された方法、システム、及びコンピュータ・プログラムを提供する。【解決手段】  ウェブ・サービス要求を受信したことに応答して、ウェブ・サービス・コントローラが、要求と関連するビジネス・ロジック・インターフェースを呼び出す。ビジネス・ロジック・インターフェースの出力は、キャッシュから取得するか、又は、ビジネス・ロジック・インターフェースから得るかのいずれかとすることができる。要求に対する応答を生成するように、カスタマイズ可能なテンプレートが実行される。応答がキャッシュ可能なコンテンツの組を含むかどうかに関して判定が行われる。応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、キャッシュ可能なコンテンツの組がキャッシュに格納される。応答は、要求元に送信される。【選択図】      図３
2007200311.tif 000002
【特許請求の範囲】
【請求項１】
要求元からのウェブ・サービス要求に対する応答を生成するための方法であって、
前記ウェブ・サービス要求を受信したことに応答して、前記要求と関連するビジネス・ロジック・インターフェースを呼び出すステップと、
前記要求に対する前記応答を生成するように、カスタマイズ可能なテンプレートを実行するステップと、
前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定するステップと、
前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、前記キャッシュ可能なコンテンツの組をキャッシュに格納するステップと、
前記応答を前記要求元に送信するステップと、
を含む方法。
【請求項２】
前記ビジネス・ロジック・インターフェースの出力が、キャッシュの少なくとも１つから取得され、前記ビジネス・ロジック・インターフェースから得られる、請求項１に記載の方法。
【請求項３】
カスタマイズ可能なテンプレートを実行する前記ステップは、
前記応答がキャッシュ可能であるかどうかを判定するステップと、
前記応答がキャッシュ可能であると判定されたことに応答して、前記キャッシュ内の前記要求に対応するキャッシュされたコンテンツの組を特定するステップと、
前記キャッシュされたコンテンツの特定された組を取り出すステップ
をさらに含み、
前記応答は、前記キャッシュされたコンテンツの特定された組を含む、請求項１に記載の方法。
【請求項４】
動的コンテンツの組を生成するようにテンプレート・フラグメントの組を実行するステップをさらに含み、前記動的コンテンツの組は、前記応答の動的部分を形成し、前記応答は、前記キャッシュされたコンテンツの組と前記動的コンテンツの組とを含む、請求項３に記載の方法。
【請求項５】
前記要求に対する完全な応答が前記キャッシュに格納されていると判定されたことに応答して、前記カスタマイズ可能なテンプレートが実行されない、請求項１に記載の方法。
【請求項６】
前記ビジネス・ロジック・インターフェースは、ウェブ・サービス・アプリケーションと関連するアプリケーション・プログラミング・インターフェースであり、前記応答は、前記アプリケーション・プログラミング・インターフェースの出力に基づいて生成される、請求項１に記載の方法。
【請求項７】
前記ビジネス・ロジック・インターフェースに対する呼び出しを生成するために、前記ウェブ・サービス要求をウェブ・サービス・アプリケーションにマッピングするステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記ビジネス・ロジック・インターフェースの出力は、前記出力がキャッシュ可能であると判定されたことに応答して前記キャッシュに格納される、請求項１に記載の方法。
【請求項９】
前記カスタマイズ可能なテンプレートを表すテキスト・ファイルを更新することによって前記応答のコンテンツを修正するステップをさらに含む、請求項１に記載のコンピュータに実装される方法。
【請求項１０】
前記応答をキャッシュすることを指定するキャッシュ・ポリシーが、前記テンプレートを表すテキスト・ファイルを更新することによって修正される、請求項１に記載のコンピュータに実装される方法。
【請求項１１】
前記キャッシュ可能なコンテンツは、フラグメント・キャッシュ・アプローチに従って前記キャッシュに格納される、請求項１に記載のコンピュータに実装される方法。
【請求項１２】
要求元からのウェブ・サービス要求に対する応答を生成するためコンピュータ・プログラムであって、
前記ウェブ・サービス要求を受信したことに応答して、前記要求と関連するビジネス・ロジック・インターフェースを呼び出すステップと、
前記要求に対する前記応答を生成するように、カスタマイズ可能なテンプレートを実行するステップと、
前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定するステップと、
前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、前記キャッシュ可能なコンテンツの組をキャッシュに格納するステップと、
前記応答を前記要求元に送信するステップと、
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項１３】
前記ビジネス・ロジック・インターフェースの出力が、キャッシュの少なくとも１つから取得され、前記ビジネス・ロジック・インターフェースから得られる、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記応答がキャッシュ可能であるかどうかを判定するステップと、
前記応答がキャッシュ可能であると判定されたことに応答して、前記キャッシュ内の前記要求に対応するキャッシュされたコンテンツの組を特定するステップと、
前記キャッシュされたコンテンツの特定された組を取り出すステップ
を、さらにコンピュータに実行させ、
前記応答は、前記キャッシュされたコンテンツの特定された組を含む、請求項１２に記載のコンピュータ・プログラム。
【請求項１５】
動的コンテンツの組を生成するようにテンプレート・フラグメントの組を実行するステップをさらにコンピュータに実行させ、前記動的コンテンツの組は、前記応答の動的部分を形成し、前記応答は、前記キャッシュされたコンテンツの組と前記動的コンテンツの組とを含む、請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記要求に対する完全な応答が前記キャッシュに格納されていると判定されたことに応答して、前記カスタマイズ可能なテンプレートが実行されない、請求項１２に記載のコンピュータ・プログラム。
【請求項１７】
前記キャッシュ可能なコンテンツは、フラグメント・キャッシュ・アプローチに従って前記キャッシュに格納される、請求項１２に記載のコンピュータ・プログラム。
【請求項１８】
前記カスタマイズ可能なテンプレートを表すテキスト・ファイルを更新することによって前記応答のコンテンツを修正するステップをさらにコンピュータに実行させる、請求項１２に記載のコンピュータ・プログラム。
【請求項１９】
前記応答をキャッシュすることを指定するキャッシュ・ポリシーが、前記テンプレートを表すテキスト・ファイルを更新することによって修正される、請求項１２に記載のコンピュータ・プログラム。
【請求項２０】
要求元からのウェブ・サービス要求に対する応答を生成するためのシステムであって、
前記ウェブ・サービス要求を受信したことに応答して前記要求と関連するビジネス・ロジック・インターフェースを呼び出すウェブ・サービス・コントローラであって、前記インターフェースの出力を、キャッシュの少なくとも１つから取得し、前記ビジネス・ロジック・インターフェースから得ることができる、ウェブ・サービス・コントローラと、
前記要求に対する前記応答を生成するようにカスタマイズ可能なテンプレートを実行し、前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定し、前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して前記キャッシュ可能なコンテンツの組を前記キャッシュに格納する、応答作成エンジンと、
前記応答を前記要求元に送信するウェブ・サービス・ランタイムと、
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、改善されたデータ処理システムに関し、より具体的には、ウェブ・サービス要求を処理するための方法、システム、及びコンピュータ・プログラムに関する。さらにより具体的には、本発明は、ウェブ・サービス要求をキャッシュするための、改善されたコンピュータに実装される方法、システム、及びコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ウェブ・サービスを利用することによって、新しく開発されたデータ処理システム及びアプリケーションにレガシー・アプリケーションを統合することができる。ウェブ・サービスは、ウェブ・サービス・サーバによって提供されるアプリケーションである。ウェブ・サービスは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）などの様々な異なるインターネット・プロトコル上で受信される拡張可能マークアップ言語（ＸＭＬ）要求を用いて、呼び出すことができる。
【０００３】
レガシー・アプリケーション上に直接階層化することができるウェブ・サービス・ランタイム・インターフェースは、外部の拡張可能マークアップ言語（ＸＭＬ）要求をアプリケーション・プログラミング・インターフェース（ＡＰＩ）呼び出しに変換してレガシー・アプリケーションを実行するメディエータとして機能することができる。ウェブ・サービス・ランタイムは、シンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）のエンベロープに包まれたＸＭＬメッセージとして、レガシー・アプリケーションの出力を戻す。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
現在のウェブ・サービス実装は、ウェブ・サービス応答をキャッシュすることに関してオール・オア・ナッシングのアプローチをサポートするのみである。応答の断片をキャッシュすることができるフラグメント・アプローチを扱うことが可能な既存のアプローチは存在しない。さらに、特定のパラメータの組に関してウェブ・サービス要求をキャッシュ可能とすべきであることを指定することも、現時点ではサポートされていない。
【０００５】
ウェブ・サービスにおいてフラグメント・キャッシュ能力がないことによって、拡張性及び性能に問題が生じる可能性がある。例えば、部分的にのみキャッシュ可能な要求を受信したときには、ウェブ・サービスは、応答のいかなる部分もキャッシュしない。キャッシュ不可能な同じ要求が受信されるたびに、ウェブ・サービスは、応答全体を再生成することになる。アプリケーションが、何千何百万ものクライアントによって同時にアクセスされることがあるインターネット上にウェブ・サービスを公表する場合には、このプロセスは特に厄介なものとなる可能性がある。
【０００６】
最後に、ウェブ・サービス実装は、典型的には、ウェブ・サービス・アプリケーションのビジネス・ロジックに応答生成ロジックを直接組み込む。応答をカスタマイズするために、実際のウェブ・サービス・プログラム・コードが修正される。このように、ウェブ・サービス応答の拡張は、どのようにプログラミング・モデルと統合するかを記述する重要性の高い文書を用いて設計されなければならない。したがって、既存のウェブ・サービス実装を修正して性能を向上させるか又は応答をカスタマイズすることは、ウェブ・サービスのプログラミング・モデルに関してスキルのあるプログラマを雇用する費用のために、実際的ではないか、又は厄介なものとなる可能性がある。
【課題を解決するための手段】
【０００７】
本発明の態様は、要求元からのウェブ・サービス要求に対する応答を生成するための、コンピュータに実装される方法、システム、及びコンピュータ・プログラムを提供する。ウェブ・サービス要求を受信したことに応答して、ウェブ・サービス・コントローラが、要求と関連するビジネス・ロジック・インターフェースを呼び出す。インターフェースの出力は、キャッシュから取得するか又はインターフェースから得るかのいずれかとすることができる。要求に対する応答を生成するように、カスタマイズ可能なテンプレートが実行される。応答がキャッシュ可能なコンテンツの組を含むかどうかに関して判定が行われる。応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、キャッシュ可能なコンテンツの組がキャッシュに格納される。応答は、要求元に送信される。
【発明を実施するための最良の形態】
【０００８】
本発明の特徴であると考えられる新規な機能は、特許請求の範囲に記載される。しかしながら、本発明自体、並びに、本発明の好ましい使用形態、さらなる目的、及び利点は、添付の図面と併せて読んだときに、例示的な実施形態の以下の詳細な説明を参照することによって、最も良く理解される。
【０００９】
当業者であれば分かるように、本発明は、方法、システム、又はコンピュータ・プログラムとして具体化することができる。したがって、本発明は、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）の形をとるか、又は、本明細書において一般的に「回路」又は「モジュール」と呼ばれるソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形をとるものとすることができる。さらに、本発明は、媒体に組み入れられたコンピュータ使用可能プログラム・コードを有するコンピュータ使用可能格納媒体上のコンピュータ・プログラムの形をとるものとすることができる。
【００１０】
適切ないずれかのコンピュータ使用可能媒体又はコンピュータ可読媒体を利用することができる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子システム、磁気システム、光学システム、電磁気システム、赤外線システム、若しくは半導体システム、システム、装置、又は伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより具体的な例（非網羅的なリスト）として、以下のもの、すなわち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＲ−ＲＯＭ）、光記憶装置、インターネット若しくはイントラネットをサポートするような伝送媒体、又は、磁気記憶装置を挙げることができる。プログラムは、例えば紙又は他の媒体の光学走査を介して電子的に取り込み、次いで、必要に応じて、コンパイルするか、解釈するか、又は適切な方法で処理し、次いでコンピュータのメモリに格納することができるため、コンピュータ使用可能媒体又はコンピュータ可読媒体は、プログラムが印刷された紙又は別の適切な媒体とすることさえ可能であることに留意されたい。本明細書の文脈においては、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、システム、若しくは装置によって、又はそれらと接続して、使用するためのプログラムを含み、格納し、通信し、伝搬し、又は、移送することが可能ないずれかの媒体とすることができる。
【００１１】
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ７、Ｓｍａｌｌｔａｌｋ、又はＣ＋＋などのオブジェクト指向プログラミング言語で書くことができる。しかしながら、本発明の操作を実行するためのコンピュータ・プログラム・コードは、例えば「Ｃ」プログラミング言語などの従来の手続き型プログラミング言語で書くこともできる。プログラム・コードは、ユーザのコンピュータ上で完全に実行するか、ユーザのコンピュータ上で部分的に実行するか、独立型のソフトウェア・パッケージとして実行するか、ユーザのコンピュータ上で部分的に実行し遠隔コンピュータ上で部分的に実行するか、又は、遠隔コンピュータ上で完全に実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域エリア・ネットワーク（ＷＡＮ）を通してユーザのコンピュータに接続するか、又は、（例えば、インターネット・サービス・プロバイダを用いてインターネットを通して）外部のコンピュータに接続することができる。
【００１２】
本発明は、本発明の実施形態に係る方法、システム及びコンピュータ・プログラムのフローチャート説明図及び／又はブロック図を参照して、以下に説明される。フローチャート説明図及び／又はブロック図の各々のブロック、並びに、フローチャート説明図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装するための手段を生成するように、汎用コンピュータ、特殊目的コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサにこれらのコンピュータ・プログラム命令を与えて、マシンを作ることができる。
【００１３】
コンピュータ可読メモリに格納された命令が、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装する命令手段を含む製品を作るように、コンピュータ又は他のプログラム可能なデータ処理装置に特定の方法で機能するように命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読メモリに格納することもできる。
【００１４】
コンピュータ又は他のプログラム可能な装置上で実行する命令が、フローチャート及び／又はブロック図のブロック又はブロック群において指定される機能／動作を実装するためのステップを提供するように、一連の操作ステップをコンピュータ又は他のプログラム可能な装置上で行わせるコンピュータ・プログラム命令をコンピュータ又は他のプログラム可能なデータ処理装置に読み込んで、コンピュータに実装されるプロセスを生成することができる。
【００１５】
ここで図面を、特に図１〜図２を参照すると、本発明の実施形態を実装することができるデータ処理環境の例示的な図が提供される。図１〜図２は単なる例示であって、本発明の態様又は実施形態を実装することができる環境に関して、いかなる制限を主張することも意味することも意図するものではないことを理解すべきである。本発明の趣旨及び範囲から逸脱することなく、図示された環境に対して多くの修正を行うことができる。
【００１６】
ここで図面を参照すると、図１は、本発明の態様を実装することができるデータ処理システムのネットワークの例示的な図を示す。ネットワーク・データ処理システム１００は、本発明の実施形態を実装することができるコンピュータのネットワークである。ネットワーク・データ処理システム１００は、ネットワーク・データ処理システム１００内部で互いに接続される様々な装置とコンピュータとの間の通信リンクを提供するのに用いられる媒体であるネットワーク１０２を含む。ネットワーク１０２は、有線、無線通信リンク、又は光ファイバ・ケーブルなどの接続部を含むことができる。
【００１７】
図示される例においては、サーバ１０４及びサーバ１０６が、ストレージ・ユニット１０８と共に、ネットワーク１０２に接続する。本発明の態様によれば、サーバ１０４及び１０６は、ウェブ・サービス・サーバである。さらに、クライアント１１０、１１２、及び１１４が、ネットワーク１０２に接続する。これらのクライアント１１０、１１２、及び１１４は、例えばパーソナル・コンピュータ又はネットワーク・コンピュータとすることができる。図示される例においては、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、及びアプリケーションなどのデータを、クライアント１１０、１１２、及び１１４に提供する。この例においては、クライアント１１０、１１２、及び１１４は、サーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、図示されない付加的なサーバ、クライアント、及び他の装置を含むことができる。
【００１８】
この例示的な例によれば、クライアント１１０、１１２、及び１１４は、ネットワーク１０２を介して、サーバ１０４及び１０６などのサーバにウェブ・サービス要求を送信する。それに応答して、サーバ１０４及び１０６などのウェブ・サービス・サーバは、ネットワーク１０２を介して、クライアント１１０、１１２、及び１１４などのクライアント要求元にウェブ・サービス応答を送る。
【００１９】
図示される例においては、ネットワーク・データ処理システム１００は、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ）のプロトコル・スイートを用いて互いに通信を行うネットワーク及びゲートウェイの世界的な集まりを表すネットワーク１０２を備えるインターネットである。インターネットの中心には、データ及びメッセージを送る何千もの商業コンピュータ・システム、政府コンピュータ・システム、教育コンピュータ・システム、及び他のコンピュータ・システムからなる多重ノード間又はホスト・コンピュータ間の高速データ通信回線のバックボーンが存在する。当然のことながら、ネットワーク・データ処理システム１００はまた、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、又は広域エリア・ネットワーク（ＷＡＮ）といった多数の異なるタイプのネットワークとして実装することができる。図１は、一例として意図するものであり、本発明の異なる実施形態についての構造的な限定として意図するものではない。
【００２０】
ここで図２を参照すると、本発明の態様を実装することができるデータ処理システムのブロック図が示される。データ処理システム２００は、図１におけるサーバ１０４又はクライアント１００などのコンピュータの例であり、本発明の実施形態についてのプロセスを実装するコンピュータ使用可能コード又は命令を配置することができる。
【００２１】
図示される例においては、データ処理システム２００は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含むハブ・アーキテクチャを使用する。処理ユニット２０６、メイン・メモリ２０８、及びグラフィックス・プロセッサ２１０が、ＮＢ／ＭＣＨ２０２に接続される。グラフィックス・プロセッサ２１０は、アクセラレイテッド・グラフィックス・ポート（ＡＧＰ）を通してＮＢ／ＭＣＨ２０２に接続することができる。
【００２２】
図示される例においては、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２が、ＳＢ／ＩＣＨ２０４に接続する。オーディオ・アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読み取り専用メモリ（ＲＯＭ）２２４、ハード・ディスク・ドライブ（ＨＤＤ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他の通信ポート２３２、並びに、ＰＣＩ／ＰＣＩｅ装置２３４が、バス２３８及びバス２４０を通してＳＢ／ＩＣＨ２０４に接続する。ＰＣＩ／ＰＣＩｅ装置は、例えば、Ｅｔｈｅｒｎｅｔ（商標）アダプタ、アドイン・カード、及びノートブック・コンピュータ用のＰＣカードを含むことができる。ＰＣＩはカード・バス・コントローラを用いるが、ＰＣＩｅは用いない。ＲＯＭ２２４は、例えばフラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）とすることができる。
【００２３】
ＨＤＤ２２６及びＣＤ−ＲＯＭドライブ２３０は、バス２４０を通してＳＢ／ＩＣＨ２０４に接続する。ＨＤＤ２２６及びＣＤ−ＲＯＭドライブ２３０は、例えば、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）又はｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）インターフェースを用いることができる。スーパーＩ／Ｏ（ＳＩＯ）装置２３６を、ＳＢ／ＩＣＨ２０４に接続することができる。
【００２４】
図２におけるデータ処理システム２００内部において、オペレーティング・システムが、処理ユニット２０６上で稼動し、種々のコンポーネントを調整及び制御する。クライアントとして、オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（商標）Ｗｉｎｄｏｗｓ（商標）ＸＰなどの市販のオペレーティング・システムとすることができる（Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは、米国、他の諸国、又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）。Ｊａｖａ（商標）プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムと共に稼動することができ、データ処理システム２００上で実行するＪａｖａ（商標）プログラム又はアプリケーションからオペレーティング・システムに対する呼び出しを提供する（Ｊａｖａは、米国、他の諸国、又はその両方におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ、Ｉｎｃ．の商標である）。
【００２５】
サーバとして、データ処理システム２００は、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ（商標））オペレーティング・システム又はＬＩＮＵＸ（商標）オペレーティング・システムが稼働する、例えばＩＢＭ（商標）ｅＳｅｒｖｅｒ（商標）ｐＳｅｒｉｅｓ（商標）コンピュータ・システムとすることができる（ｅＳｅｒｖｅｒ、ｐＳｅｒｉｅｓ、及びＡＩＸは、米国、他の諸国、又はその両方におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、一方、ＬＩＮＵＸは、米国、他の諸国、又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標である）。データ処理システム２００は、処理ユニット２０６に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ）システムとすることができる。代替的に、シングル・プロセッサ・システムを使用することもできる。
【００２６】
オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムについての命令は、ＨＤＤ２２６などのストレージ装置上に配置され、処理ユニット２０６による実行のためにメイン・メモリ２０８に読み込むことができる。本発明の実施形態のためのプロセスは、コンピュータ使用可能プログラム・コードを用いて処理ユニット２０６によって実行され、コンピュータ使用可能プログラム・コードは、例えばメイン・メモリ２０８、ＲＯＭ２２４などのメモリに、又は、１つ又は複数の周辺装置２２６及び２３０に、配置することができる。
【００２７】
当業者であれば、図１〜図２におけるハードウェアは、実装形態に応じて変更できることが分かるであろう。図１〜図２に示されるハードウェアに加えて、又はその代わりに、フラッシュ・メモリ、同等の不揮発性メモリ、又は光ディスク・ドライブなどといった他の内部ハードウェア又は周辺装置を用いることができる。また、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用することができる。
【００２８】
いくつかの例示的な例においては、データ処理システム２００は、オペレーティング・システム・ファイル及び／又はユーザ作成データを格納するための不揮発性メモリを提供するフラッシュ・メモリを用いて構成される携帯情報端末（ＰＤＡ）とすることができる。
【００２９】
バス・システムは、図２に示されるように、バス２３８又はバス２４０などの１つ又は複数のバスで構成することができる。当然のことながら、バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なる要素又は装置間のデータ転送を提供するいずれかのタイプの通信ファブック又はアーキテクチャを用いて、実装することができる。通信ユニットは、データを送信及び受信するのに用いられる、図２のモデム２２２又はネットワーク・アダプタ２１２などの１つ又は複数の装置を含むことができる。メモリは、例えば、図２におけるメイン・メモリ２０８、ＲＯＭ２２４、又は、ＮＢ／ＭＣＨ２０２に見られるようなキャッシュとすることができる。図１〜図２に示される例及び上述の例は、構造的な限定を含むことを意図するものではない。例えば、データ処理システム２００は、ＰＤＡの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、又は電話装置とすることもできる。
【００３０】
現在、インターネット上でデータを転送する最も一般的に使用される方法は、単に「ウェブ」とも呼ばれるワールド・ワイド・ウェブ環境を使用することである。ウェブ環境においては、図１のサーバ１０２及び１０４並びにクライアント１１０〜１１４などのサーバ及びクライアントは、様々なデータ・ファイルの転送を処理するための既知のプロトコルであるハイパーテキスト転送プロトコル（ＨＴＴＰ）を用いて、データ・トランザクションを行う。これらのタイプのデータ・ファイルの例として、テキスト、静止グラフィックス画像、音声、及び動画ビデオが挙げられる。様々なデータ・ファイルの情報は、ユーザに表示するために、標準的なページ記述言語、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）、又は拡張可能マークアップ言語（ＸＭＬ）によってフォーマットされる。
【００３１】
ウェブ・サービスは、ウェブ・サービス・サーバによって提供されるアプリケーションである。ウェブ・サービスは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）などの標準的なインターネット・プロトコルを含むがこれに限定されるものではない異なるタイプのインターネット・プロトコルを介して、ユーザがアプリケーション・ビジネス・ロジックにアクセスできるようにするＸＭＬインターフェースを提供する。
【００３２】
多くのレガシー・アプリケーションは、新しいデータ処理システムに統合されることが必要である。別個のシステム及びアプリケーションを統合することに関するソフトウェア業界の解決策は、ウェブ・サービス・インターフェースをレガシー・アプリケーションの既存のロジックに与えることである。いずれのタイプのアプリケーションも、この方法で、ウェブ・サービスとして利用可能にすることができる。
【００３３】
現在のウェブ・サービス実装及びウェブ・サービス・ランタイムは、ウェブ・サービス要求をキャッシュすることに関してオール・オア・ナッシングのアプローチをサポートするのみであるため、本発明の態様は、ウェブ・サービス性能の問題が生じる可能性があることが分かる。応答の要素をキャッシュから得ることができる、ウェブ・サービス要求をサービスするフラグメント・キャッシュ・アプローチを扱うことが可能な既存のアプローチは存在しない。さらに、このモデルは、特定のパラメータの組に関して要求をキャッシュ可能とすべきであることを指定することもサポートされていない。
【００３４】
最後に、レガシー・アプリケーション・プログラミング・インターフェースの既存の実装形態を修正して性能を改善すること、又は、ウェブ・サービス・フレームワークを修正して応答フォーマットをカスタマイズすることは、レガシー・アプリケーションの特定のプログラミング・モデルに関してスキルのあるプログラマを雇用する費用のために、実際的ではない可能性がある。
【００３５】
本発明の態様は、ウェブ・サービス要求をキャッシュするための改善されたコンピュータに実装される方法、システム、及びコンピュータ使用可能プログラム・コードを提供する。本発明の実施形態によれば、ウェブ・サービス応答を生成するプロセスの際に多数のキャッシュ・ポイントが使用可能なウェブ・サービスが提供される。ウェブ・サービス・コントローラが、クライアント要求元からの外部ＸＭＬ要求を、ウェブ・サービス・レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースを実行するための呼び出しに変換するメディエータとして機能する。レガシー・アプリケーション・プログラミング・インターフェースの出力は、キャッシュに格納することができる。さらに、レガシー・アプリケーションと関連するビジネス・ロジック・インターフェースは、ウェブ・サービス要求に対する応答を生成するのに利用される応答生成ロジックから分離される。このようにして、応答をキャッシュするために、付加的なキャッシュ・ポイントが提供される。
【００３６】
本発明の態様はまた、ウェブ・サービス要求に対する応答を生成するために実行されるカスタマイズ可能なテンプレートを提供する。カスタマイズ可能なテンプレートは、キャッシュに保存することができる。さらに、生成された応答がキャッシュ可能である場合には、その応答は、キャッシュに保存することができる。応答全体がキャッシュ可能でない場合であっても、フラグメント・キャッシュ・アプローチに従って、応答の１つ又は複数のフラグメントをキャッシュに保存することができる。キャッシュから得られた応答、又はテンプレートを実行することによって生成された応答は、要求するクライアントにＸＭＬ応答メッセージとして戻される。
【００３７】
図３は、本発明の１つの例示的な実施形態に係るウェブ・サービス・サーバの例示的なブロック図である。ウェブ・サービス・サーバ３００は、図１におけるサーバ１０４及び１０６などのサーバである。要求元３１０は、ウェブ・サービスの要求元である。要求元３１０は、インターネット、イントラネット、又はエクストラネットを含むあらゆるウェブ環境において、ウェブ・サービスにアクセスすることができる。さらに、要求元３１０は、ユーザ、別のアプリケーション・プログラム、又は、別のウェブ・サービスとすることもできる。本発明の１つの実施形態によれば、要求元３１０は、ウェブ・サーバにアクセスするクライアントである。
【００３８】
ウェブ・サービス・アプリケーションを、多くの異なる方法で要求元３１０によって呼び出すことができる。本発明の態様によれば、要求元３１０は、ウェブ・サービス要求を作成して、ウェブ・サービスを呼び出すための知られた方法又は使用可能な方法のいずれかを用いることによって、ウェブ・サービスを呼び出すことができる。例えば、従来のデプロイメント・モデルによれば、中央ウェブ・サービス・サーバ上の公開されたウェブ・サービス記述言語（ＷＳＤＬ）が、そのウェブ・サービスによってサポートされるサービスを定義する。この例によれば、図１におけるクライアント１１０〜１１４などのクライアントは、中央ウェブ・サービス・サーバに接続し、公に使用可能なウェブ・サービス記述言語によって定義されたいずれかのウェブ・サービス・アプリケーションを要求することによって、ウェブ・サービスを呼び出すことができる。
【００３９】
ウェブ・サービス要求３１５は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープに包まれたＸＭＬ要求を含む。シンプル・オブジェクト・アクセス・プロトコルのエンベロープは、ＸＭＬ要求をどのように処理するかに関する情報を提供する。
【００４０】
ウェブ・サービス・ランタイム３２０は、要求元３１０からウェブ・サービス要求３１５を受信する。ウェブ・サービス・ランタイム３２０は、ウェブ・プロトコルを取り扱い、要求をカプセル化するシンプル・オブジェクト・アクセス・プロトコルの要素に従って要求を処理する。ウェブ・サービス・ランタイム３２０は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープからウェブ・サービス要求３１５のＸＭＬ要求を抽出して、ＸＭＬ要求３２８を生成する。
【００４１】
ウェブ・サービス・ランタイムは、ＸＭＬ要求３２８などのウェブ・サービス要求について、オール・オア・ナッシングのキャッシュ・アプローチをサポートする。したがって、ＸＭＬ要求３２８がキャッシュ可能である場合には、ウェブ・サービス・ランタイム３２０は、ＸＭＬ要求３２８に対するＸＭＬ応答がキャッシュに格納されているかどうかを判定する。ＸＭＬ要求３２８に対するＸＭＬ応答３８５がキャッシュに格納されている場合には、ウェブ・サービス・ランタイム３２０は、キャッシュされたＸＭＬ応答３８５を取り出す。ウェブ・サービス・ランタイムは、ＸＭＬ応答３８５をシンプル・オブジェクト・アクセス・プロトコルに同封してウェブ・サービス応答３８８を生成し、応答を生成するためのウェブ・サービス・プロセスを実行することなく、ウェブ・サービス応答３８８を要求元３１０に送信する。
【００４２】
しかしながら、ウェブ・サービス・ランタイムは、キャッシュすることに関してオール・オア・ナッシング・アプローチをサポートするのみであるため、ウェブ・サービス要求は、ウェブ・サービス要求及び応答の全体がキャッシュ可能である場合にのみキャッシュに格納されることになる。ＸＭＬ応答３８５がキャッシュに格納されていない場合には、ウェブ・サービス・ランタイム３２０は、ＸＭＬ要求３２８を処理するためのウェブ・サービス・コントローラ３３０にＸＭＬ要求３２８を転送して、ＸＭＬ応答３８５を生成する。
【００４３】
ウェブ・サービス・コントローラ３３０は、ＸＭＬ要求を処理するためのモデル・ビュー・コントローラ（ＭＶＣ）フレームワークである。ウェブ・サービス・ランタイム３２０からＸＭＬ要求３２８を受信すると、ウェブ・サービス・コントローラ３３０は、ウェブ・サービス−レガシー・アプリケーション・マッピング３４０を呼び出して、レガシー・アプリケーション３５０と関連するレガシー・アプリケーション・プログラミング・インターフェース３６０にＸＭＬ要求３２８をマッピングする。
【００４４】
ここに示される例示的な例においては、インターフェース３６０は、レガシー・アプリケーションと関連するアプリケーション・プログラミング・インターフェースである。レガシー・アプリケーション・プログラミング・インターフェースは、ウェブ・サービス・コントローラとアプリケーション・ビジネス・ロジックとの間のビジネス・ロジック・インターフェースである。本発明の態様によれば、インターフェース３６０は、ウェブ・サービス・コントローラとアプリケーション・ビジネス・ロジックとの間のインターフェースとしての機能を果たすことができるいずれかのタイプのインターフェースとすることができる。
【００４５】
ウェブ・サービス−レガシー・アプリケーション・マッピング３４０は、レガシー・アプリケーション・プログラミング・インターフェース３６０に対する呼び出しのためのパラメータを生成する。レガシー・アプリケーション・プログラミング・インターフェース（ＡＰＩ）３６０は、レガシー・アプリケーション３５０の具体的な機能がどのように実装されているかということにかかわらず、ウェブ・サービス・コントローラ３３０が、標準的な一貫性のあるインターフェースを用いてレガシー・アプリケーション３５０の実行を呼び出すことを可能にする。ウェブ・サービス・コントローラ３３０は、ウェブ・サービス−レガシー・アプリケーション・マッピング３４０によって提供される呼び出しフォーマットを利用して、レガシー・アプリケーション・プログラミング・インターフェース３６０を呼び出す。
【００４６】
レガシー・アプリケーション３５０は、通信ポートを通るデータに対応して、要求元３１０が求める所望の機能を提供するように設計された、あらゆるソフトウェア・アプリケーションを表す。これらの例においては、レガシー・アプリケーション３５０は、あらゆるタイプのアプリケーションとすることができる。例えば、このレベルのアプリケーションは、ウェブ・サービス・サーバ３００に対する要求を通してインターネットのクライアントによってアクセスされ得るデータ又はテキストを扱うのに必要なアプリケーションを含むことができる。
【００４７】
ウェブ・サービス・コントローラ３３０は、マッピング３４０から、レガシー・アプリケーション・プログラミング・インターフェース３６０に対する呼び出しのためのフォーマットを受信する。ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０からの出力がキャッシュの少なくとも１つに格納されているかどうかを判定する。出力がキャッシュに格納されている場合には、ウェブ・サービス・コントローラ３３０は、キャッシュされたレガシー・アプリケーション・プログラミング・インターフェースの出力をキャッシュから取り出す。ウェブ・サービス・コントローラ３３０は、キャッシュされたレガシー・アプリケーション・プログラミング・インターフェースの出力を、応答作成エンジン３７０と関連するアプリケーション・プログラミング・インターフェース３８０に転送する。
【００４８】
ウェブ・サービス・コントローラ３３０が、レガシー・アプリケーション・プログラミング・インターフェース３６０の出力がキャッシュに格納されていないと判定した場合には、ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０を呼び出して、レガシー・アプリケーション３５０の実行を開始する。レガシー・アプリケーション・プログラミング・インターフェース３６０は、レガシー・アプリケーション３５０の実行によって生成された出力をウェブ・サービス・コントローラ３３０に戻す。ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０から受信した出力を、応答作成エンジン３７０と関連するアプリケーション・プログラミング・インターフェース３８０に転送する。
【００４９】
次いで、ウェブ・サービス・コントローラ３３０は、アプリケーション・プログラミング・インターフェース３８０を呼び出して、応答作成エンジン３７０を実行する。応答作成エンジン３７０は、ＸＭＬ応答３８５といった、ＸＭＬ要求に対する応答を生成する。応答作成エンジン３７０は、応答作成エンジン３７０によって受信された情報に基づいて、特定の要求に関連するＸＭＬ応答を生成する。応答作成エンジン３７０は、いずれかの使用可能な及び／又は関連するデータに基づいて、ＸＭＬ応答を生成することができる。例えば、応答作成エンジン３７０は、レガシー・アプリケーション・プログラミング・インターフェース３６０から受信された出力に全体的に又は部分的に基づいた応答を生成することができる。さらに、データベース又は他のデータ・ストレージ装置において使用可能な情報、並びに、応答テンプレート自体のパラメータに基づいて、ＸＭＬ応答を生成することができる。
【００５０】
応答作成エンジン３７０は、カスタマイズ可能な応答テンプレートを含む。応答作成エンジン３７０は、応答作成エンジン３７０のテンプレートにおいて指定されたフォーマットに基づいて、ＸＭＬ要求３２８に対するＸＭＬ応答３８５を生成するために応答テンプレートを実行する。さらに、テンプレートは、キャッシュに格納することができる。このように、テンプレートがキャッシュ可能であり、キャッシュ内で使用可能であると判定される場合には、ＸＭＬ応答３２８を生成するように実行するためのキャッシュのうちの１つから応答テンプレートを得ることができる。
【００５１】
応答作成エンジン３７０は、本発明の態様に係る応答テンプレートをコード化するためのいずれかのプログラミング言語を用いて生成することができる。本発明の例示的な実施形態によれば、応答作成エンジンは、ＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓ（ＪＳＰ）又はＡｐａｃｈｅ（商標）Ｖｅｌｏｃｉｔｙなどのテンプレート言語である。当然のことながら、応答作成エンジン３７０は、他のタイプのテンプレート言語を含むこともできる。さらに、応答作成エンジン３６０はまた、他のいずれかのプログラミング言語、すなわちテンプレート言語ではない言語でさえ含むことができる。例えば、応答作成エンジン３７０は、Ｃプログラミング言語でコード化することもできる。
【００５２】
応答作成エンジン３７０は、応答の完全なキャッシュと応答の一部のフラグメント・キャッシュの両方をサポートする。応答作成エンジン３７０は、応答作成エンジン３７０において指定されたキャッシュ・ポリシーに従って、応答をキャッシュする。
【００５３】
ＸＭＬ要求３２８のための応答がキャッシュに格納されている場合には、応答作成エンジン３７０は、キャッシュから応答を取り出す。応答作成エンジン３７０は、キャッシュされた応答に基づいて、ＸＭＬ応答３８５などのＸＭＬ応答を生成する。応答生成エンジン３７０は、ＸＭＬ応答３８５をウェブ・サービス・コントローラ３３０に転送する。
【００５４】
ＸＭＬ要求３２８に対する応答を生成するための応答全体がキャッシュに格納されていない場合には、応答作成エンジン３７０は、応答の１つ又は複数のフラグメントがキャッシュに格納されているかどうかを判定する。応答の１つ又は複数のフラグメントが、キャッシュされたコンテンツ３８６としてキャッシュ３８７に格納されている場合には、応答生成エンジン３７０は、キャッシュされたコンテンツ３８６と関連するテンプレート・フラグメントを再実行するのではなく、キャッシュ３８７からキャッシュされたコンテンツ３８６を取り出す。
【００５５】
キャッシュ可能な応答は、キャッシュに格納することができる完全なＸＭＬ応答である。キャッシュ内で使用可能なキャッシュ可能応答を生成するのではなく、キャッシュからＸＭＬ応答を得ることができる。
【００５６】
単一のキャッシュ可能な応答フラグメントは、キャッシュに格納することができる応答の一部又は部分である。多数のキャッシュ可能な応答フラグメントは、キャッシュに格納することができるＸＭＬ応答の多数の一部又は部分を含む。同様に、キャッシュされた応答フラグメントは、現時点でキャッシュに格納されているＸＭＬ応答の部分又は断片である。
【００５７】
本明細書では、キャッシュ可能なコンテンツの組は、完全にキャッシュ可能な応答、単一のキャッシュ可能な応答フラグメント、又は、多数のキャッシュ可能な応答フラグメントを含むものとすることができる。キャッシュ可能なコンテンツの組は、応答の静的部分を含む。応答の静的部分は、更新又は修正される頻度が相対的に低い応答の部分である。対照的に、応答の動的部分は、相対的に頻繁に更新又は修正される。
【００５８】
例えば、ウェブ・サービス要求が、使用可能な製品の記述と、それらの製品の現在のインベントリとを要求することを受信する場合には、使用可能な製品の記述は、おそらく、週毎に更新されるか、月毎に更新されるか、年毎に更新されるか、又は、場合によっては更新されないというように、更新される頻度が相対的に低いであろう。したがって、使用可能な製品の記述は、応答の静的部分を構成することになる。この情報は、キャッシュ内で使用可能なキャッシュ可能なコンテンツとなる可能性がある。しかしながら、使用可能な製品の現在のインベントリは、製品の使用可能性の変更を反映するように、頻繁な更新を必要とするであろう。したがって、現在のインベントリは、応答の動的コンテンツを構成することになる。
【００５９】
応答作成エンジン３７０は、キャッシュに格納されていない応答フラグメントと関連するテンプレート・フラグメントを実行して、動的コンテンツの組を生成する。応答作成エンジン３７０は、キャッシュされた応答フラグメントをキャッシュから取り出して、キャッシュされたコンテンツ３８６の組を生成する。応答生成エンジン３７０は、動的コンテンツの組とキャッシュされたコンテンツの組に基づいて、要求に対する応答を生成する。
【００６０】
本発明の態様によれば、応答作成エンジン３７０は、テンプレートの実行によって生成される応答のフォーマットを変更するように、及び／又は、応答に対するキャッシュ・ポリシーを修正するように、修正することができるカスタマイズ可能なテンプレートである。カスタマイズ可能なテンプレートは、テンプレート・テキスト・ファイルを開き、テンプレート・テキスト・ファイルを更新及び／又は修正するための既知の又は使用可能な方法のいずれかに従ってテンプレート・コードを修正することによって、修正及び／又は更新することができる。
【００６１】
例えば、ユーザは、応答全体をキャッシュするのではなく、ＸＭＬ応答の指定されたフラグメント又は部分をキャッシュするように、応答作成エンジン３１０を修正することができる。このようにして、ユーザは、応答の生成の際に、応答のどの部分をキャッシュし、応答のどの部分を動的に決定するかを指定することができる。カスタマイズ可能なテンプレートは、テンプレートを更新するための既知の又は使用可能な方法のいずれかに従って、更新又は修正することができる。
【００６２】
テンプレートは、生成された応答を読むことができるようにＸＭＬ応答を公表することによって、応答生成のカスタマイズを簡単なものにする。例えば、テンプレート言語が、ＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓテンプレート言語である場合には、ユーザは、ウェブ・サービス・モデルのプログラミング言語を修正しなければならないのではなく、テンプレート言語ファイルを修正して付加的なＸＭＬ要素を応答に挿入することができる。このようにして、テンプレート言語は、応答の容易な拡張を可能にする。
【００６３】
アプリケーション・プログラミング・インターフェース３８０は、ウェブ・サービス・コントローラ３３０が、標準的な一貫性のあるインターフェースを用いて応答作成エンジン３７０を呼び出すことを可能にする。呼び出しのパラメータは、ウェブ・サービス応答３８８の処理に関する情報を指定する。
【００６４】
応答作成エンジン３７０によって生成されたＸＭＬ応答３８５を受信すると、ウェブ・サービス・コントローラ３３０は、ＸＭＬ応答３８５をウェブ・サービス・ランタイム３２０に渡す。ウェブ・サービス・ランタイム３２０は、ＸＭＬ応答３８５をシンプル・オブジェクト・アクセス・プロトコルのエンベロープにカプセル化してウェブ・サービス応答３８８を生成し、ネットワークを介して応答３８８を要求元３１０に返送する。
【００６５】
図３に示される例示的な説明図によれば、ウェブ・サービス要求３１５は、要求元３１０からウェブ・サービス・サーバ３００に送信される。ウェブ・サービス・ランタイム３２０は、ウェブ・サービス要求３１５を受信し、要求を定義するシンプル・オブジェクト・アクセス・プロトコルのエンベロープを処理する。ウェブ・サービス・ランタイム３２０は、ＸＭＬ要求３２８をウェブ・サービス・コントローラ３３０に渡す。ウェブ・サービス・コントローラ３３０は、ウェブ・サービス−レガシー・アプリケーション・マッピング３４０を呼び出して、ウェブ・サービスをレガシー・アプリケーション・プログラミング・インターフェース３６０にマッピングする。マッピング３４０は、レガシー・アプリケーション３５０を実行するために、レガシー・アプリケーション・プログラミング・インターフェース３６０に対する呼び出しフォーマットを生成する。
【００６６】
ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０からレガシー・アプリケーションの実行の出力を受信する。ウェブ・サービス・コントローラ３３０は、アプリケーション・プログラミング・インターフェース３８０を呼び出し、レガシー・アプリケーション・プログラミング・インターフェース３６０の出力に基づいて応答を生成するように応答作成エンジン３７０を実行する。
【００６７】
応答作成エンジン３７０は、キャッシュ３８７からキャッシュされたコンテンツ３８６の組を受信することができる。本明細書では、キャッシュされたコンテンツの組は、キャッシュに格納された、応答全体、単一の応答フラグメント、又は、２つ以上の応答フラグメントを含むものとすることができる。応答作成エンジン３７０はまた、応答テンプレートを実行して動的コンテンツの組を生成する。本明細書では、動的コンテンツは、応答全体、１つの応答フラグメント、又は２つ以上の応答フラグメントを含むことができる。応答作成エンジン３７０は、キャッシュされたコンテンツの組と動的コンテンツの組に基づいて、ＸＭＬ応答３８５を生成する。
【００６８】
ウェブ・サービス・コントローラ３３０は、応答作成エンジン３７０によって生成されたＸＭＬ応答３８５を、ウェブ・サービス・ランタイム３２０に送信する。ウェブ・サービス・ランタイム３２０は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープにＸＭＬ応答３８５を同封して、ウェブ・サービス応答３８８を生成する。ウェブ・サービス・ランタイム３２０は、ウェブを介してウェブ・サービス応答３８８を要求元３１０に送信する。
【００６９】
本発明の実施形態によれば、レガシー・アプリケーション３５０とウェブ・サービス−レガシー・アプリケーション・マッピング３４０とは、同じコンポーネントの内部に組み込むことができる。
【００７０】
本発明の例示的な例によれば、レガシー・アプリケーションがキャッシュ内で使用可能である場合には、ウェブ・サービス・コントローラ３３０は、要求をレガシー・アプリケーション３５０にマッピングするウェブ・サービス−レガシー・アプリケーション・マッピング３４０を呼び出さない。この実施形態によれば、レガシー・アプリケーション・プログラミング・インターフェース３６０の出力は、キャッシュ内で使用可能であり、実行される必要がないため、ウェブ・サービス−レガシー・アプリケーション・マッピング３４０を呼び出す必要はない。本発明の別の実施形態によれば、ウェブ・サービス・コントローラ３３０は、要求をレガシー・アプリケーション・プログラミング・インターフェース３６０にマッピングするウェブ・サービス−レガシー・アプリケーション・マッピング３４０を呼び出した後で、レガシー・アプリケーションがキャッシュ内で使用可能かどうかを判定する。
【００７１】
本発明の別の実施形態によれば、レガシー・アプリケーション３５０がキャッシュ可能である場合には、ウェブ・サービス・コントローラ３３０は、キャッシュへのレガシー・アプリケーション３５０のキャッシュを開始する。本発明の態様によれば、レガシー・アプリケーション３５０は、データをキャッシュするためのいずれかの既知の方法に従ってキャッシュすることができる。
【００７２】
本発明の例示的な例によれば、ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０を呼び出してレガシー・アプリケーション３５０を実行するのではなく、キャッシュから取り出された、レガシー・アプリケーション・プログラミング・インターフェース３６０から受信した出力を取り出す。本発明の別の実施形態によれば、ウェブ・サービス・コントローラ３３０は、レガシー・アプリケーション・プログラミング・インターフェース３６０を呼び出してレガシー・アプリケーション３５０の実行を開始し、レガシー・アプリケーション３５０の実行によって受信した出力を戻す。この例示的な例においては、出力は、レガシー・アプリケーション３５０の実行の結果として、レガシー・アプリケーション・プログラミング・インターフェース３６０から動的に受信される。
【００７３】
このように、ビジネス・ロジック・インターフェースであるレガシー・アプリケーション・プログラミング・インターフェース３６０の出力は、キャッシュの少なくとも１つから取得することができる。このような場合においては、キャッシュに格納される出力は、ビジネス・ロジック・インターフェースから得られる。ビジネス・ロジック・インターフェースの出力がキャッシュ内で使用可能でない場合には、出力は、ＸＭＬ要求３２８などの要求と関連するレガシー・アプリケーションを実行することによって、ビジネス・ロジック・インターフェースから得られる。
【００７４】
図４は、本発明の１つの例示的な実施形態に係るウェブ・サービス要求処理の間のメッセージ・フローの例示的な図である。図４におけるメッセージング・フローは、図３におけるウェブ・サービス・サーバ３００内で実行される。
【００７５】
要求元は、ウェブ・サービス要求４１０を、シンプル・オブジェクト・アクセス・プロトコルのエンベロープ内にパッケージされたＸＭＬ要求の形で、ウェブ・サービス・ランタイムに送信する。ウェブ・サービス・ランタイムは、ＸＭＬ要求からシンプル・オブジェクト・アクセス・プロトコルを除去し、ＸＭＬ要求４２０をウェブ・サービス・コントローラに送信する。
【００７６】
ウェブ・サービス・コントローラは、ＸＭＬ要求を受信する。ウェブ・サービス・コントローラは、ウェブ・サービス−レガシー・アプリケーション・マッピングを呼び出して、マッピング・ロジック４３０を実行する。マッピング・ロジック４３０は、ＸＭＬ要求をレガシー・アプリケーションにマッピングする。マッピング・ロジック４３０は、呼び出しについてのフォーマットを、レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースに戻す。
【００７７】
ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェース（ＡＰＩ）４３５を実行して、レガシー・アプリケーションの実行を開始する。レガシー・アプリケーション・プログラミング・インターフェースは、レガシー・アプリケーションの実行による出力をウェブ・サービス・コントローラに戻す。
【００７８】
ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、応答作成テンプレートを実行する４４０。応答作成エンジンは、テンプレートを実行して４４５、動的コンテンツ４５０及び４６０を生成する。応答作成エンジンは、キャッシュされたコンテンツ４５５をキャッシュから取り出す。応答作成エンジンは、テンプレートを実行し４６５、キャッシュされたコンテンツ及び動的コンテンツに基づいてＸＭＬ応答を生成する。応答作成エンジンは、ＸＭＬ応答をウェブ・サービス・コントローラ４７０に戻す。
【００７９】
ウェブ・サービス・コントローラは、ＸＭＬ応答４８０をウェブ・サービス・ランタイムに送信する。ウェブ・サービス・ランタイムは、ＸＭＬ応答をシンプル・オブジェクト・アクセス・プロトコルのエンベロープに同封して、ウェブ・サービス応答を生成する。ウェブ・サービス・ランタイムは、ウェブ・サービス応答４９０を要求元に返送する。
【００８０】
図５は、本発明の１つの例示的な実施形態に係る、ウェブ・サービス要求が要求元から最初に受信されるときの本発明の例示的な動作を概説するフローチャートである。図５におけるプロセスは、図３におけるウェブ・サービス・ランタイム３２０などのウェブ・サービス・ランタイムによって実行される。
【００８１】
ウェブ・サービス・ランタイムは、要求元からウェブ・サービス要求を受信する（ステップ５１０）。ウェブ・サービス・ランタイムは、ＸＭＬ要求を同封するシンプル・オブジェクト・アクセス・プロトコルのエンベロープからＸＭＬ要求を取り出して、ＸＭＬ要求を生成する（ステップ５２０）。ウェブ・サービス・ランタイムは、要求を処理するために、ＸＭＬ要求をウェブ・サービス・コントローラに送信する（ステップ５３０）。
【００８２】
ウェブ・サービス・コントローラが要求の処理を完了した後、ウェブ・サービス・ランタイムは、ウェブ・サービス・コントローラからＸＭＬ応答を受信する（ステップ５４０）。ウェブ・サービス・ランタイムは、ＸＭＬ応答をシンプル・オブジェクト・アクセス・プロトコルのエンベロープに同封し（ステップ５５０）、ウェブ・サービス応答を要求元に送信し（ステップ５６０）、その後プロセスは終了する。
【００８３】
図６は、本発明の１つの例示的な実施形態に係る、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングするためのＸＭＬコードの例示的な図である。図６において実装されるコードは、図３におけるウェブ・サービス−レガシー・アプリケーション・マッピング３４０などのマッピング・コンポーネントに実装することができる。
【００８４】
ウェブ・サービス・コントローラは、ウェブ・サービス−レガシー・アプリケーション・マッピング・コンポーネントを呼び出して、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングし、レガシー・アプリケーションを実行するための呼び出しを生成する。
【００８５】
コード６１０は、どのウェブ・サービス−レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行するかということを判定するために、マッピング・コンポーネントによって利用される。コード６２０のラインは、マッピングの際に定められる「ｖｉｅｗＴａｓｋＮａｍｅ」と呼ばれる定数を指定する。ウェブ・サービス応答作成エンジンは、この付加的な情報を用いて応答を作成することになる。言い換えれば、この設定コードは、どのアプリケーションを実行するかということと、どのようにして応答を作成するかということとの間の関係を与える。
【００８６】
例えば、ウェブ・サービス・コントローラがマッピング・コンポーネントを呼び出したときは、マッピング・コンポーネントは、ＸＭＬ要求を名前−値ペアの組に変換する。名前−値ペアの第１の組は、レガシー・アプリケーションを実行するためにレガシー・アプリケーション・プログラミング・インターフェースによって使用される。レガシー・アプリケーション・プログラミング・インターフェースと関連するレガシー・アプリケーションの実行の結果として、名前−値ペアの第２の組が生成される。名前−値ペアの第１及び第２の組は、応答作成エンジンに渡される。応答作成エンジンは、名前−値ペアをパラメータとして用いて、ＸＭＬ要求に対する応答を生成する。しかしながら、これは、本発明の実施形態によるマッピング機能の実装形態の一例にすぎない。本発明の態様に従って、ＸＭＬ要求をインターフェースにマッピングするための他の既知の又は使用可能な方法のいずれかを利用することができる。
【００８７】
ＸＭＬ要求を受信したことに応答して、ウェブ・サービス・コントローラは、要求と関連するインターフェースを呼び出す。ウェブ・サービス・コントローラはキャッシュ機能をサポートし、それにより、インターフェースの出力は、該出力がキャッシュ可能である場合にはキャッシュに格納することができる。このように、インターフェースの出力は、ウェブ・サービス・コントローラによってキャッシュから取得することができる。
【００８８】
ウェブ・サービス・コントローラは、インターフェースの出力がすでにキャッシュに格納されているかどうかを判定することもできる。出力がキャッシュにない場合には、インターフェースの出力は、インターフェースを呼び出してレガシー・アプリケーションなどのアプリケーションを実行することによって、インターフェースから得ることができる。アプリケーションの実行に応答して、インターフェースは、インターフェースの出力をウェブ・サービス・コントローラに戻す。
【００８９】
図７は、本発明の１つの例示的な実施形態に係る、レガシー・アプリケーションが実行されるときの本発明の例示的な動作を概説するフローチャートである。図７におけるプロセスは、図３におけるウェブ・サービス・コントローラ３３０などのウェブ・サービス・コントローラによって実行することができる。
【００９０】
ウェブ・サービス・コントローラは、ウェブ・サービス・ランタイムからＸＭＬ要求を受信する（ステップ７１０）。ウェブ・サービス・コントローラは、レガシー・アプリケーションの実行が必要かどうかを判定する（ステップ７２０）。例えば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ内で使用可能である場合には、レガシー・アプリケーションの実行は不要とすることができる。
【００９１】
レガシー・アプリケーションの実行が必要でない場合には、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し、レガシー・アプリケーション・プログラミング・インターフェースの出力に基づいて、要求に対するＸＭＬ応答を生成する（ステップ７６０）。ウェブ・サービス・コントローラは、応答作成エンジンによって生成されたＸＭＬ応答を受信する（ステップ７７０）。ウェブ・サービス・コントローラは、ウェブ・サービスの要求元に返送するために、ＸＭＬ応答をウェブ・サービス・ランタイムに送信し（ステップ７８０）、その後プロセスが終了する。
【００９２】
ここでステップ７２０に戻ると、レガシー・アプリケーションの実行が必要な場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーションを実行するためにレガシー・アプリケーション・プログラミング・インターフェースを呼び出すフォーマットを要求する（ステップ７３０）。コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出して、レガシー・アプリケーションを実行する（ステップ７４０）。
【００９３】
ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースから出力を受信する（ステップ７５０）。コントローラは、応答作成エンジンを呼び出す（ステップ７６０）。コントローラは、応答作成エンジンと関連するアプリケーション・プログラミング・インターフェースからＸＭ応答を受信する（ステップ７７０）。ウェブ・サービス・コントローラは、ＸＭＬ応答をウェブ・サービス・ランタイムに送信し（ステップ６８０）、その後プロセスが終了する。
【００９４】
本発明の態様によれば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ・キーに基づいてキャッシュ内で使用可能であるかどうかについて判定することができる。キャッシュ・キーは、キャッシュ可能なデータのタイプを定めるパラメータ値を含む。
【００９５】
例えば、レガシー・アプリケーションが、３０歳の男性を対象としたキャンペーンを生成するために実行される場合には、レガシー・アプリケーションからのこの出力は、そのレガシー・アプリケーションと関連するアプリケーション・プログラミング・インターフェースによってキャッシュすることができる。第２のユーザが、３０歳の男性を対象としたキャンペーンを要求する場合には、ウェブ・サービス・コントローラは、性別及び年齢、すなわちこの場合には、男性及び３０歳を指定するパラメータをもつキャッシュ・キーを生成する。
【００９６】
キャッシュ・キーはまた、キャッシュを使用している複数のアプリケーション・プログラミング・インターフェースのうちの特定のレガシー・アプリケーション・プログラミング・インターフェースを指定する。キャッシュ・キーについてのパラメータ値は、一致するまで、キャッシュ内のデータについてのパラメータと比較される。レガシー・アプリケーション・プログラミング・インターフェースの出力のキャッシュは、データをキャッシュし、キャッシュからデータを取り出すための既知の又は使用可能な方法のいずれかに従って、達成することができる。本発明の実施形態によれば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ内で使用可能である場合には、レガシー・アプリケーション・プログラミング・インターフェースに対する呼び出しは行われない。
【００９７】
図８は、本発明の１つの例示的な実施形態に係る、レガシー・アプリケーションを実行するかどうかについて判定が行われるときの本発明の例示的な動作を概説するフローチャートである。図８におけるプロセスは、図７におけるステップ７２０のより詳細な記述である。プロセスは、図３におけるウェブ・サービス・コントローラ３３０などのウェブ・サービス・コントローラに実装することができる。
【００９８】
ウェブ・サービス・コントローラは、レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースからの出力がキャッシュ可能かどうかを判定する（ステップ８８２）。レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ可能でない場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行する（ステップ８８４）。応答作成エンジンは、レガシー・アプリケーション・プログラミング・インターフェースからレガシー・アプリケーションの実行の出力を受信する（ステップ８８６）。次いで、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、ウェブ・サービス要求に対する応答を生成する（ステップ８８８）。この例示的な実施形態によれば、応答は、レガシー・アプリケーション・プログラミング・インターフェースからの出力に基づいて生成され（ステップ８８８）、その後プロセスは終了する。
【００９９】
ここでステップ８８２に戻ると、レガシー・アプリケーションがキャッシュ可能である場合には、コントローラは、要求についてのキャッシュ・キーを生成する（ステップ８９０）。次いで、ウェブ・サービス・コントローラは、キャッシュ内で使用可能なデータについてのいずれかの値がキャッシュ・キーと一致するかどうかを判定する（ステップ８９４）。キャッシュ内の値がキャッシュ・キーと一致しない場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行する（ステップ８８４）。ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースからの出力を受信し（ステップ８８６）、生成されたキャッシュ・キーに基づいて結果をキャッシュに保存する。ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し（ステップ８８８）、その後プロセスは終了する。
【０１００】
ステップ８９４に戻ると、キャッシュ内の値がキャッシュ・キーの値と一致する場合には、コントローラは、レガシー・アプリケーション・プログラミング・インターフェースからの出力をキャッシュから取り出す（ステップ８９８）。次いで、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し、レガシー・アプリケーション・プログラミング・インターフェースからのキャッシュされた出力に基づいてウェブ・サービス要求に対する応答を生成し（ステップ８８８）、その後プロセスは終了する。
【０１０１】
本発明の実施形態によれば、応答は、レガシー・アプリケーション・プログラミング・インターフェースの出力に基づいて生成される。しかしながら、応答は、レガシー・アプリケーション・プログラミング・インターフェースの出力に加えて、又はその代わりに、他の情報に基づいて生成することもできる。
【０１０２】
例えば、要求元は、製品の記述を要求することができる。この例においては、要求元によって要求される製品の記述は、データベース又は他のデータ・ストレージ装置において使用可能である。このタイプの要求は、要求元への応答を生成するために、アプリケーションの実行、及び／又は、アプリケーション若しくはアプリケーション・インターフェースからの出力の生成を必要としない「読み取り専用」である。この場合においては、応答作成エンジンは、データベース又は他のデータ・ストレージ場所から要求された情報を取り出すことができるのみである。応答作成エンジンは、取り出されたデータに基づいて応答を生成する。したがって、本発明の態様によれば、レガシー・アプリケーション・プログラミング・インターフェース及び／又はレガシー・アプリケーションからのいかなる出力もない状態で、応答を生成することができる。
【０１０３】
図９は、本発明の１つの例示的な実施形態に係る、読み取り専用要求が受信されるときのＸＭＬコードの例示的な説明図である。図９において実装されるコードは、図３における応答作成エンジン３７０などの応答作成エンジンに実装することができる。
【０１０４】
いくつかの場合においては、ウェブ・サービス要求は読み取り専用要求である。例えば、要求元が、カタログ・データベースに格納されたカタログ項目の記述を要求することがある。このような場合においては、レガシー・アプリケーションの実行は不要である。代わりに、要求されたデータがデータベースから取り出され、要求元に送信されるだけである。
【０１０５】
コード９１０は、ビジネス・ロジックの処理が不要であるため、レガシー・アプリケーションの実行を回避するようにウェブ・サービス・コントローラに命令するのに用いられるＸＭＬ構成である。代わりに、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、要求されたデータを提示する応答を生成するように命令される。この例示的な実施形態においては、何もしないビジネス・ロジック命令を生成してフェッチ専用要求を実行するか、又はダミー命令を使用する代わりに、コード９２０が、読み取り専用要求を実行する定数「ｒｅｓｐｏｎｓｅＯｎｌｙ」を指定する。
【０１０６】
本発明の態様によれば、ウェブ・サービス・コントローラは、データベース、読み取り専用メモリ、キャッシュなどのランダム・アクセス・メモリ、他のいずれかの内部データ・ストレージ装置、いずれかの外部データ・ストレージ装置、又はいずれかの外部システムを含むがこれらに限定されるものではない種々の異なるデータ源から、ウェブ・サービス要求に対応するデータを取り出すことができる。
【０１０７】
ＸＭＬ要求を受信したことに応答して、応答作成エンジンは、要求に対するウェブ・サービス応答がキャッシュ可能であるかどうかを判定する。応答がキャッシュ可能である場合には、応答作成エンジンは、応答のキャッシュ可能なフラグメントを特定する。これらのキャッシュ可能なフラグメントは、要求に対応する、キャッシュ内にキャッシュされたコンテンツの組を形成する。応答作成エンジンは、要求に対応する、キャッシュ内にキャッシュされたコンテンツの組を特定し、キャッシュされたコンテンツの特定された組を形成する。応答作成エンジンは、キャッシュされたコンテンツの特定された組をキャッシュから取り出す。要求に対する応答は、応答がキャッシュされたコンテンツの組を含むように、キャッシュされたコンテンツの特定された組に基づいて生成される。
【０１０８】
キャッシュされたコンテンツの組が要求に対する完全なＸＭＬ応答である場合には、カスタマイズ可能なテンプレートは実行されない。しかしながら、キャッシュされたコンテンツの組がＸＭＬ応答全体ではない場合には、キャッシュ内で使用可能ではない応答の動的部分を表すテンプレート・フラグメントの組が特定され、動的コンテンツの組を生成するために実行される。動的コンテンツの組は、応答の動的部分を形成する。このように、この例示的な例に従って生成された応答は、キャッシュされたコンテンツの組と、動的コンテンツの組とを含む。
【０１０９】
図１０は、本発明の１つの例示的な実施形態に係る、応答が生成されるときの本発明の例示的な動作を概説するフローチャートである。プロセスは、例示的な例においては、図３における応答作成エンジン３７０によって実装される。
【０１１０】
応答作成エンジンは、テンプレートを起動して応答を生成する（ステップ１０１０）。応答作成エンジンは、応答がキャッシュ可能であるかどうかを判定する（ステップ１０１５）。応答がキャッシュ可能でない場合には、応答作成エンジンは、応答がフラグメントを含むかどうかを判定する（ステップ１０２０）。応答がフラグメントを含まない場合には、応答作成エンジンは、テンプレートを実行して（ステップ１０２５）、要求に対するＸＭＬ応答を生成する（ステップ１０３０）。ＸＭＬ応答は、ウェブ・サービス・コントローラに送信され（ステップ１０３５）、その後プロセスは終了する。
【０１１１】
ここでステップ１０１５に戻ると、応答がキャッシュ可能な場合には、応答作成エンジンは、応答についてのキャッシュ・キーを生成する（ステップ１０４０）。応答作成エンジンは、キャッシュ内のいずれかの値がキャッシュ・キーの値と一致するかどうかを判定する（ステップ１０４５）。キャッシュ内の値がキャッシュ・キーと一致しない場合には、応答作成エンジンは、テンプレートを実行して（ステップ１０２５）、要求に対するＸＭＬ応答を生成する（ステップ１０３０）。ＸＭＬ応答は、ウェブ・サービス・コントローラに送信され（ステップ１０３５）、その後プロセスは終了する。
【０１１２】
ここでステップ１０４５に戻ると、キャッシュ内のある値がキャッシュ・キーと一致した場合には、応答作成エンジンは、完全にキャッシュされた応答をキャッシュから取り出し（ステップ１０５０）、ＸＭＬ応答を生成する（ステップ１０３０）。応答生成エンジンは、ＸＭＬ応答をウェブ・サービス・コントローラに送信し（ステップ１０３５）、その後プロセスは終了する。
【０１１３】
ここでステップ１０２０に戻ると、応答がフラグメントを含む場合には、応答作成エンジンは、応答フラグメントがキャッシュ可能であるかどうかを判定する（ステップ１０５５）。フラグメントがキャッシュ可能でない場合には、応答生成エンジンは、応答フラグメントと関連するテンプレートのフラグメントを実行し（ステップ１０６０）、ステップ１０２０に戻って、応答が別のフラグメントを含むかどうかを判定する。ステップ１０２０及び１０５５〜１０８０は、応答のフラグメントのすべてが、キャッシュから取り出されるか、又はテンプレートを実行することによって生成されるまで、実行し続ける反復ループを形成する。
【０１１４】
ここでステップ１０５５に戻ると、応答フラグメントがキャッシュ可能である場合には、応答生成エンジンは、応答フラグメントと関連するキャッシュ・キーを生成する（ステップ１０６５）。次いで、応答作成エンジンは、キャッシュ内のいずれかの値がキャッシュ・キーについての値と一致するかどうかを判定する（ステップ１０７０）。キャッシュ内の値がキャッシュ・キーと一致しない場合には、応答作成エンジンは、応答フラグメントと関連するテンプレート・フラグメントを実行する（ステップ１０８０）。こうして、プロセスはステップ１０２０に戻る。この反復ループは、応答フラグメントのすべてが、キャッシュから取り出されるか、又は応答フラグメントと関連するテンプレート・フラグメントを実行することによって生成されるまで、実行し続けることになる。
【０１１５】
ここでステップ１０７０に戻ると、キャッシュ内のある値がキャッシュ・キーと一致した場合には、応答作成エンジンは、キャッシュから応答フラグメントを取り出す（ステップ１０７５）。こうして、プロセスはステップ１０２０に戻る。
【０１１６】
本発明の１つの実施形態によれば、応答作成エンジンは、新たに生成された応答がキャッシュ可能であるかどうかを判定する。言い換えれば、応答がキャッシュ可能なコンテンツの組を含むどうかに関する判定が行われる。キャッシュ可能なコンテンツの組は、ＸＭＬ応答全体、又は、ＸＭＬ応答の１つ又は複数の部分を含むことができる。
【０１１７】
応答がキャッシュ可能なコンテンツの組を含むという判定が行われた場合には、応答作成エンジンは、キャッシュ可能なコンテンツの組がすでにキャッシュに格納されているかどうかを判定する。キャッシュ可能なコンテンツの組がまだキャッシュに格納されていない場合には、応答作成エンジンは、キャッシュされたコンテンツの組を形成するために、キャッシュ可能なコンテンツの組をキャッシュに格納する。フラグメント・キャッシュ・アプローチによれば、キャッシュ可能なコンテンツは、応答作成エンジンによってキャッシュに格納される。このように、ＸＭＬ応答全体、ＸＭＬ応答のフラグメント、又は、ＸＭＬ応答の多数のフラグメントを、キャッシュすることができる。
【０１１８】
フラグメントのキャッシュは、キャッシュ・ポリシーに従って、応答作成エンジンによって行われる。応答作成エンジン・テンプレートについてＸＭＬ構成で定められるキャッシュ・ポリシーは、ＸＭＬ応答のキャッシュを指定する。キャッシュ・ポリシーは、どのフラグメントがキャッシュされ、応答のどのフラグメントがテンプレート・フラグメントを実行することによって動的に生成されるかを定める。
【０１１９】
図１１は、本発明の１つの例示的な実施形態に係る、ウェブ・サービス応答がキャッシュされるときの本発明の例示的な動作を概説するフローチャートである。これらの例示的な例においては、プロセスは、図３における応答作成エンジン３７０によって実装される。
【０１２０】
応答作成エンジンは、応答がキャッシュ可能であるかどうかを判定する（ステップ１１１０）。応答がキャッシュ可能である場合には、応答作成エンジンは、応答がキャッシュに格納されているかどうかを判定する（ステップ１１２０）。応答がキャッシュに格納されている場合には、キャッシュされた応答は、ウェブ・サービス・コントローラに送信され（ステップ１１３０）、その後プロセスは終了する。
【０１２１】
ここでステップ１１２０に戻ると、応答がキャッシュに格納されていない場合には、応答生成エンジンは、応答をキャッシュに格納し（ステップ１１４０）、応答をウェブ・サービス・コントローラに送信し（ステップ１１３０）、その後プロセスは終了する。
【０１２２】
ここでステップ１１１０に戻ると、応答がキャッシュ可能でない場合には、応答作成エンジンは、応答がフラグメントを含むかどうかを判定する（ステップ１１５０）。応答がフラグメントを含まない場合には、応答は送信され（ステップ１１３０）、その後プロセスは終了する。
【０１２３】
ステップ１１５０に戻ると、応答がフラグメントを含む場合には、応答作成エンジンは、フラグメントがキャッシュ可能であるかどうかを判定する（ステップ１１６０）。フラグメントがキャッシュ可能でない場合には、プロセスはステップ１１５０に戻る。フラグメントがキャッシュ可能である場合には、応答作成エンジンは、フラグメントがキャッシュに格納されているかどうかを判定する（ステップ１１７０）。フラグメントがキャッシュに格納されている場合には、プロセスはステップ１１５０に戻る。フラグメントがキャッシュに格納されていない場合には、フラグメントはキャッシュに格納される（ステップ１１８０）。次いで、プロセスはステップ１１５０に戻る。
【０１２４】
ステップ１１５０〜１１８０は、応答のキャッシュ可能なフラグメントのすべてがキャッシュに格納されるまで実行し続けることになる反復ループを形成する。
【０１２５】
図１２は、本発明の１つの例示的な実施形態に係る、フラグメントのキャッシュを利用して応答が生成されるときのＸＭＬコードの例示的な説明図である。コード１２１０は、ウェブ・サービス応答についてのフラグメント・キャッシュ・アプローチのためのＸＭＬ構成の例である。コード１２１０及び１２４０は、応答作成エンジン１２５０についてのＸＭＬコードを構成する。
【０１２６】
コード１２１０において、２つの別個のＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓフラグメントが応答に含まれる。コード１２２０のラインは、共通アプリケーション・エリアである「ＡｐｐｌｉｃａｔｉｏｎＡｒｅａ．ｊｓｐ」フラグメントである。このアプリケーション・エリアは、コード１２２０のラインにおいて示されるように、他のウェブ・サービス応答で再使用することができる。他のＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓフラグメントは、コード１２３０のラインにおける「Ｓｈｏｗ／Ｃａｔａｌｏｇ．ｊｓｐ」である。このコードは、キャッシュからのカタログ・フラグメントをウェブ・サービス応答に含むようにテンプレート言語に命令する。
【０１２７】
コード１２３０のラインにおいて示される「Ｓｈｏｗ／Ｃａｔａｌｏｇ．ｊｓｐ」フラグメント内に３つのＸＭＬブロックが存在し、これらはコード１２４０において示される。各々のＸＭＬブロックは、ＪＳＰフラグメントによって表される。コード１２４０において示されるＪａｖａ（商標）Ｓｅｒｖｅｒ  Ｐａｇｅフラグメントのいくつかがキャッシュ可能であるか、又は、いずれもキャッシュ可能ではない。
【０１２８】
キャッシュ可能なフラグメントについて、キャッシュ・ポリシーを生成し、次にＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓフラグメントが提示されたときにキャッシュ・バージョンを用いることができるように、コンテンツをキャッシュすることができる。コード１２６０は、このようなポリシーの例を示す。
【０１２９】
キャッシュ・ポリシー定義内で、コード１２４０における３つのフラグメントのすべては、コード１２７０において示されるように、要求において見つかった「ｃａｔａｌｏｇＩｄ」パラメータに基づいて、キャッシュ可能である。「ｃａｔａｌｏｇＩｄ」は、サービスによって実行されるコマンドによって戻されるものか、又はＸＭＬサービス要求からマッピングされるパラメータのいずれかである。
【０１３０】
コード１２６０において示されるように、ｃａｔａｌｏｇＩｄ１２３をもつサービスの応答が最初に実行されるときに、各々のＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓも実行される。しかしながら、３つのフラグメントも同時にキャッシュされる。ｃａｔａｌｏｇＩｄ１２３について同じＪａｖａＳｅｒｖｅｒ（商標）Ｐａｇｅｓフラグメントを含む別の要求が次に受信されたときに、テンプレート言語を実行してフラグメントを生成する代わりに、フラグメントのキャッシュされたバージョンが戻される。
【０１３１】
現時点で特許請求の範囲に記載されている発明の態様は、ウェブ・サービス応答をキャッシュするための改善された方法を提供する。ウェブ・サービス要求の処理及びウェブ・サービス応答の生成の際に、多数のキャッシュ・ポイントが設けられる。ウェブ・サービス・レガシー・アプリケーションの実行によって生成される出力は、レガシー・アプリケーション・プログラミング・インターフェースによって動的に提供するか、又は、出力は、キャッシュから取り出すことができる。
【０１３２】
さらに、ウェブ・サービス要求に対するＸＭＬ応答を生成するように実行される応答テンプレートをキャッシュすることもできる。さらに、このテンプレートは、フラグメント・キャッシュをサポートする。したがって、応答は、完全な応答としてその全体をキャッシュすることができる。代替的には、応答の１つ又は複数のフラグメントをキャッシュすることができる。最後に、テンプレートは、本発明の実施形態に従って応答を生成するのに利用されるテンプレート及びキャッシュ・ポリシーの簡単なカスタマイズ及び修正を可能にする。
【０１３３】
このようにして、本発明の態様は、応答をキャッシュすることに関してオール・オア・ナッシングのアプローチに制限されるのではなく、ウェブ・サービス応答の完全な及び部分的なキャッシュを提供する。さらに、本発明の実施形態は、テンプレート・テキスト・ファイルを修正することによって応答がどのように生成されるかを簡単にカスタマイズするための能力も提供する。
【０１３４】
本発明の説明は、例示及び説明の目的で提示されたものであり、網羅的であること、及び、開示された形式に本発明を限定することを意図するものではない。当業者であれば、多くの修正及び変形が明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するために、並びに、考えられる特定の使用に適するように様々な変更を施した様々な実施形態について他の当業者が本発明を理解できるように、選択され、説明された。
【図面の簡単な説明】
【０１３５】
【図１】本発明の態様を実装することができるデータ処理システムのネットワークの例示的な図である。
【図２】本発明の態様を実装することができるデータ処理システムの例示的なブロック図である。
【図３】本発明の１つの例示的な実施形態に係るウェブ・サービス・サーバの例示的なブロック図である。
【図４】本発明の１つの例示的な実施形態に係るウェブ・サービス要求処理の際におけるメッセージ・フローの例示的な図である。
【図５】本発明の１つの例示的な実施形態に係る、ウェブ・サービス要求が要求元から最初に受信されるときの本発明の例示的な動作を概説するフローチャートである。
【図６】本発明の１つの例示的な実施形態に係る、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングするためのＸＭＬコードの例示的な図である。
【図７】本発明の１つの例示的な実施形態に係る、レガシー・アプリケーションが実行されるときの本発明の例示的な動作を概説するフローチャートである。
【図８】本発明の１つの例示的な実施形態に係る、レガシー・アプリケーションを実行するかどうかについて判定が行われるときの本発明の例示的な動作を概説するフローチャートである。
【図９】本発明の１つの例示的な実施形態に係る、読み取り専用要求が受信されるときのＸＭＬコードの例示的な説明図である。
【図１０】本発明の１つの例示的な実施形態に係る、応答が生成されるときの本発明の例示的な動作を概説するフローチャートである。
【図１１】本発明の１つの例示的な実施形態に係る、ウェブ・サービス応答がキャッシュされるときの本発明の例示的な動作を概説するフローチャートである。
【図１２】本発明の１つの例示的な実施形態に係る、フラグメントのキャッシュを利用して応答が生成されるときのＸＭＬコードの例示的な説明図である。
【図１】
2007200311.tif 000003
【図２】
2007200311.tif 000004
【図３】
2007200311.tif 000005
【図４】
2007200311.tif 000006
【図５】
2007200311.tif 000007
【図６】
2007200311.tif 000008
【図７】
2007200311.tif 000009
【図８】
2007200311.tif 000010
【図９】
2007200311.tif 000011
【図１０】
2007200311.tif 000012
【図１１】
2007200311.tif 000013
【図１２】
2007200311.tif 000014