JP2007200311A - ウェブ・サービス要求をキャッシュする方法、システム、及びコンピュータ・プログラム(ウェブ・サービス要求のキャッシュ) - Google Patents

ウェブ・サービス要求をキャッシュする方法、システム、及びコンピュータ・プログラム(ウェブ・サービス要求のキャッシュ) Download PDF

Info

Publication number
JP2007200311A
JP2007200311A JP2006353278A JP2006353278A JP2007200311A JP 2007200311 A JP2007200311 A JP 2007200311A JP 2006353278 A JP2006353278 A JP 2006353278A JP 2006353278 A JP2006353278 A JP 2006353278A JP 2007200311 A JP2007200311 A JP 2007200311A
Authority
JP
Japan
Prior art keywords
response
web service
cache
request
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006353278A
Other languages
English (en)
Other versions
JP4868590B2 (ja
Inventor
Vandergoot Jacob
ヤコブ・バンダーグート
Darshanand Khusial
ダルシャナンド・クシアル
Alex Shum
アレックス・シューム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007200311A publication Critical patent/JP2007200311A/ja
Application granted granted Critical
Publication of JP4868590B2 publication Critical patent/JP4868590B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】 要求元からのウェブ・サービス要求に対する応答を生成するためのコンピュータに実装された方法、システム、及びコンピュータ・プログラムを提供する。
【解決手段】 ウェブ・サービス要求を受信したことに応答して、ウェブ・サービス・コントローラが、要求と関連するビジネス・ロジック・インターフェースを呼び出す。ビジネス・ロジック・インターフェースの出力は、キャッシュから取得するか、又は、ビジネス・ロジック・インターフェースから得るかのいずれかとすることができる。要求に対する応答を生成するように、カスタマイズ可能なテンプレートが実行される。応答がキャッシュ可能なコンテンツの組を含むかどうかに関して判定が行われる。応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、キャッシュ可能なコンテンツの組がキャッシュに格納される。応答は、要求元に送信される。
【選択図】 図3

Description

本発明は、一般に、改善されたデータ処理システムに関し、より具体的には、ウェブ・サービス要求を処理するための方法、システム、及びコンピュータ・プログラムに関する。さらにより具体的には、本発明は、ウェブ・サービス要求をキャッシュするための、改善されたコンピュータに実装される方法、システム、及びコンピュータ・プログラムに関する。
ウェブ・サービスを利用することによって、新しく開発されたデータ処理システム及びアプリケーションにレガシー・アプリケーションを統合することができる。ウェブ・サービスは、ウェブ・サービス・サーバによって提供されるアプリケーションである。ウェブ・サービスは、ハイパーテキスト転送プロトコル(HTTP)などの様々な異なるインターネット・プロトコル上で受信される拡張可能マークアップ言語(XML)要求を用いて、呼び出すことができる。
レガシー・アプリケーション上に直接階層化することができるウェブ・サービス・ランタイム・インターフェースは、外部の拡張可能マークアップ言語(XML)要求をアプリケーション・プログラミング・インターフェース(API)呼び出しに変換してレガシー・アプリケーションを実行するメディエータとして機能することができる。ウェブ・サービス・ランタイムは、シンプル・オブジェクト・アクセス・プロトコル(SOAP)のエンベロープに包まれたXMLメッセージとして、レガシー・アプリケーションの出力を戻す。
現在のウェブ・サービス実装は、ウェブ・サービス応答をキャッシュすることに関してオール・オア・ナッシングのアプローチをサポートするのみである。応答の断片をキャッシュすることができるフラグメント・アプローチを扱うことが可能な既存のアプローチは存在しない。さらに、特定のパラメータの組に関してウェブ・サービス要求をキャッシュ可能とすべきであることを指定することも、現時点ではサポートされていない。
ウェブ・サービスにおいてフラグメント・キャッシュ能力がないことによって、拡張性及び性能に問題が生じる可能性がある。例えば、部分的にのみキャッシュ可能な要求を受信したときには、ウェブ・サービスは、応答のいかなる部分もキャッシュしない。キャッシュ不可能な同じ要求が受信されるたびに、ウェブ・サービスは、応答全体を再生成することになる。アプリケーションが、何千何百万ものクライアントによって同時にアクセスされることがあるインターネット上にウェブ・サービスを公表する場合には、このプロセスは特に厄介なものとなる可能性がある。
最後に、ウェブ・サービス実装は、典型的には、ウェブ・サービス・アプリケーションのビジネス・ロジックに応答生成ロジックを直接組み込む。応答をカスタマイズするために、実際のウェブ・サービス・プログラム・コードが修正される。このように、ウェブ・サービス応答の拡張は、どのようにプログラミング・モデルと統合するかを記述する重要性の高い文書を用いて設計されなければならない。したがって、既存のウェブ・サービス実装を修正して性能を向上させるか又は応答をカスタマイズすることは、ウェブ・サービスのプログラミング・モデルに関してスキルのあるプログラマを雇用する費用のために、実際的ではないか、又は厄介なものとなる可能性がある。
本発明の態様は、要求元からのウェブ・サービス要求に対する応答を生成するための、コンピュータに実装される方法、システム、及びコンピュータ・プログラムを提供する。ウェブ・サービス要求を受信したことに応答して、ウェブ・サービス・コントローラが、要求と関連するビジネス・ロジック・インターフェースを呼び出す。インターフェースの出力は、キャッシュから取得するか又はインターフェースから得るかのいずれかとすることができる。要求に対する応答を生成するように、カスタマイズ可能なテンプレートが実行される。応答がキャッシュ可能なコンテンツの組を含むかどうかに関して判定が行われる。応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、キャッシュ可能なコンテンツの組がキャッシュに格納される。応答は、要求元に送信される。
本発明の特徴であると考えられる新規な機能は、特許請求の範囲に記載される。しかしながら、本発明自体、並びに、本発明の好ましい使用形態、さらなる目的、及び利点は、添付の図面と併せて読んだときに、例示的な実施形態の以下の詳細な説明を参照することによって、最も良く理解される。
当業者であれば分かるように、本発明は、方法、システム、又はコンピュータ・プログラムとして具体化することができる。したがって、本発明は、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)の形をとるか、又は、本明細書において一般的に「回路」又は「モジュール」と呼ばれるソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形をとるものとすることができる。さらに、本発明は、媒体に組み入れられたコンピュータ使用可能プログラム・コードを有するコンピュータ使用可能格納媒体上のコンピュータ・プログラムの形をとるものとすることができる。
適切ないずれかのコンピュータ使用可能媒体又はコンピュータ可読媒体を利用することができる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子システム、磁気システム、光学システム、電磁気システム、赤外線システム、若しくは半導体システム、システム、装置、又は伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより具体的な例(非網羅的なリスト)として、以下のもの、すなわち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CR−ROM)、光記憶装置、インターネット若しくはイントラネットをサポートするような伝送媒体、又は、磁気記憶装置を挙げることができる。プログラムは、例えば紙又は他の媒体の光学走査を介して電子的に取り込み、次いで、必要に応じて、コンパイルするか、解釈するか、又は適切な方法で処理し、次いでコンピュータのメモリに格納することができるため、コンピュータ使用可能媒体又はコンピュータ可読媒体は、プログラムが印刷された紙又は別の適切な媒体とすることさえ可能であることに留意されたい。本明細書の文脈においては、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、システム、若しくは装置によって、又はそれらと接続して、使用するためのプログラムを含み、格納し、通信し、伝搬し、又は、移送することが可能ないずれかの媒体とすることができる。
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Java7、Smalltalk、又はC++などのオブジェクト指向プログラミング言語で書くことができる。しかしながら、本発明の操作を実行するためのコンピュータ・プログラム・コードは、例えば「C」プログラミング言語などの従来の手続き型プログラミング言語で書くこともできる。プログラム・コードは、ユーザのコンピュータ上で完全に実行するか、ユーザのコンピュータ上で部分的に実行するか、独立型のソフトウェア・パッケージとして実行するか、ユーザのコンピュータ上で部分的に実行し遠隔コンピュータ上で部分的に実行するか、又は、遠隔コンピュータ上で完全に実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域エリア・ネットワーク(WAN)を通してユーザのコンピュータに接続するか、又は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部のコンピュータに接続することができる。
本発明は、本発明の実施形態に係る方法、システム及びコンピュータ・プログラムのフローチャート説明図及び/又はブロック図を参照して、以下に説明される。フローチャート説明図及び/又はブロック図の各々のブロック、並びに、フローチャート説明図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フローチャート及び/又はブロック図のブロック又はブロック群において指定される機能/動作を実装するための手段を生成するように、汎用コンピュータ、特殊目的コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサにこれらのコンピュータ・プログラム命令を与えて、マシンを作ることができる。
コンピュータ可読メモリに格納された命令が、フローチャート及び/又はブロック図のブロック又はブロック群において指定される機能/動作を実装する命令手段を含む製品を作るように、コンピュータ又は他のプログラム可能なデータ処理装置に特定の方法で機能するように命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読メモリに格納することもできる。
コンピュータ又は他のプログラム可能な装置上で実行する命令が、フローチャート及び/又はブロック図のブロック又はブロック群において指定される機能/動作を実装するためのステップを提供するように、一連の操作ステップをコンピュータ又は他のプログラム可能な装置上で行わせるコンピュータ・プログラム命令をコンピュータ又は他のプログラム可能なデータ処理装置に読み込んで、コンピュータに実装されるプロセスを生成することができる。
ここで図面を、特に図1〜図2を参照すると、本発明の実施形態を実装することができるデータ処理環境の例示的な図が提供される。図1〜図2は単なる例示であって、本発明の態様又は実施形態を実装することができる環境に関して、いかなる制限を主張することも意味することも意図するものではないことを理解すべきである。本発明の趣旨及び範囲から逸脱することなく、図示された環境に対して多くの修正を行うことができる。
ここで図面を参照すると、図1は、本発明の態様を実装することができるデータ処理システムのネットワークの例示的な図を示す。ネットワーク・データ処理システム100は、本発明の実施形態を実装することができるコンピュータのネットワークである。ネットワーク・データ処理システム100は、ネットワーク・データ処理システム100内部で互いに接続される様々な装置とコンピュータとの間の通信リンクを提供するのに用いられる媒体であるネットワーク102を含む。ネットワーク102は、有線、無線通信リンク、又は光ファイバ・ケーブルなどの接続部を含むことができる。
図示される例においては、サーバ104及びサーバ106が、ストレージ・ユニット108と共に、ネットワーク102に接続する。本発明の態様によれば、サーバ104及び106は、ウェブ・サービス・サーバである。さらに、クライアント110、112、及び114が、ネットワーク102に接続する。これらのクライアント110、112、及び114は、例えばパーソナル・コンピュータ又はネットワーク・コンピュータとすることができる。図示される例においては、サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、及びアプリケーションなどのデータを、クライアント110、112、及び114に提供する。この例においては、クライアント110、112、及び114は、サーバ104に対するクライアントである。ネットワーク・データ処理システム100は、図示されない付加的なサーバ、クライアント、及び他の装置を含むことができる。
この例示的な例によれば、クライアント110、112、及び114は、ネットワーク102を介して、サーバ104及び106などのサーバにウェブ・サービス要求を送信する。それに応答して、サーバ104及び106などのウェブ・サービス・サーバは、ネットワーク102を介して、クライアント110、112、及び114などのクライアント要求元にウェブ・サービス応答を送る。
図示される例においては、ネットワーク・データ処理システム100は、Transmission Control Protocol/Internet Protocol(TCP/IP)のプロトコル・スイートを用いて互いに通信を行うネットワーク及びゲートウェイの世界的な集まりを表すネットワーク102を備えるインターネットである。インターネットの中心には、データ及びメッセージを送る何千もの商業コンピュータ・システム、政府コンピュータ・システム、教育コンピュータ・システム、及び他のコンピュータ・システムからなる多重ノード間又はホスト・コンピュータ間の高速データ通信回線のバックボーンが存在する。当然のことながら、ネットワーク・データ処理システム100はまた、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、又は広域エリア・ネットワーク(WAN)といった多数の異なるタイプのネットワークとして実装することができる。図1は、一例として意図するものであり、本発明の異なる実施形態についての構造的な限定として意図するものではない。
ここで図2を参照すると、本発明の態様を実装することができるデータ処理システムのブロック図が示される。データ処理システム200は、図1におけるサーバ104又はクライアント100などのコンピュータの例であり、本発明の実施形態についてのプロセスを実装するコンピュータ使用可能コード又は命令を配置することができる。
図示される例においては、データ処理システム200は、ノース・ブリッジ及びメモリ・コントローラ・ハブ(NB/MCH)202と、サウス・ブリッジ及び入力/出力(I/O)コントローラ・ハブ(SB/ICH)204とを含むハブ・アーキテクチャを使用する。処理ユニット206、メイン・メモリ208、及びグラフィックス・プロセッサ210が、NB/MCH202に接続される。グラフィックス・プロセッサ210は、アクセラレイテッド・グラフィックス・ポート(AGP)を通してNB/MCH202に接続することができる。
図示される例においては、ローカル・エリア・ネットワーク(LAN)アダプタ212が、SB/ICH204に接続する。オーディオ・アダプタ216、キーボード及びマウス・アダプタ220、モデム222、読み取り専用メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポート及び他の通信ポート232、並びに、PCI/PCIe装置234が、バス238及びバス240を通してSB/ICH204に接続する。PCI/PCIe装置は、例えば、Ethernet(商標)アダプタ、アドイン・カード、及びノートブック・コンピュータ用のPCカードを含むことができる。PCIはカード・バス・コントローラを用いるが、PCIeは用いない。ROM224は、例えばフラッシュ・バイナリ入力/出力システム(BIOS)とすることができる。
HDD226及びCD−ROMドライブ230は、バス240を通してSB/ICH204に接続する。HDD226及びCD−ROMドライブ230は、例えば、Integrated Drive Electronics(IDE)又はserial advanced technology attachment(SATA)インターフェースを用いることができる。スーパーI/O(SIO)装置236を、SB/ICH204に接続することができる。
図2におけるデータ処理システム200内部において、オペレーティング・システムが、処理ユニット206上で稼動し、種々のコンポーネントを調整及び制御する。クライアントとして、オペレーティング・システムは、Microsoft(商標)Windows(商標)XPなどの市販のオペレーティング・システムとすることができる(Microsoft及びWindowsは、米国、他の諸国、又はその両方におけるMicrosoft Corporationの商標である)。Java(商標)プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムと共に稼動することができ、データ処理システム200上で実行するJava(商標)プログラム又はアプリケーションからオペレーティング・システムに対する呼び出しを提供する(Javaは、米国、他の諸国、又はその両方におけるSun Microsystems、Inc.の商標である)。
サーバとして、データ処理システム200は、Advanced Interactive Executive(AIX(商標))オペレーティング・システム又はLINUX(商標)オペレーティング・システムが稼働する、例えばIBM(商標)eServer(商標)pSeries(商標)コンピュータ・システムとすることができる(eServer、pSeries、及びAIXは、米国、他の諸国、又はその両方におけるInternational Business Machines Corporationの商標であり、一方、LINUXは、米国、他の諸国、又はその両方におけるLinus Torvaldsの商標である)。データ処理システム200は、処理ユニット206に複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムとすることができる。代替的に、シングル・プロセッサ・システムを使用することもできる。
オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムについての命令は、HDD226などのストレージ装置上に配置され、処理ユニット206による実行のためにメイン・メモリ208に読み込むことができる。本発明の実施形態のためのプロセスは、コンピュータ使用可能プログラム・コードを用いて処理ユニット206によって実行され、コンピュータ使用可能プログラム・コードは、例えばメイン・メモリ208、ROM224などのメモリに、又は、1つ又は複数の周辺装置226及び230に、配置することができる。
当業者であれば、図1〜図2におけるハードウェアは、実装形態に応じて変更できることが分かるであろう。図1〜図2に示されるハードウェアに加えて、又はその代わりに、フラッシュ・メモリ、同等の不揮発性メモリ、又は光ディスク・ドライブなどといった他の内部ハードウェア又は周辺装置を用いることができる。また、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用することができる。
いくつかの例示的な例においては、データ処理システム200は、オペレーティング・システム・ファイル及び/又はユーザ作成データを格納するための不揮発性メモリを提供するフラッシュ・メモリを用いて構成される携帯情報端末(PDA)とすることができる。
バス・システムは、図2に示されるように、バス238又はバス240などの1つ又は複数のバスで構成することができる。当然のことながら、バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なる要素又は装置間のデータ転送を提供するいずれかのタイプの通信ファブック又はアーキテクチャを用いて、実装することができる。通信ユニットは、データを送信及び受信するのに用いられる、図2のモデム222又はネットワーク・アダプタ212などの1つ又は複数の装置を含むことができる。メモリは、例えば、図2におけるメイン・メモリ208、ROM224、又は、NB/MCH202に見られるようなキャッシュとすることができる。図1〜図2に示される例及び上述の例は、構造的な限定を含むことを意図するものではない。例えば、データ処理システム200は、PDAの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、又は電話装置とすることもできる。
現在、インターネット上でデータを転送する最も一般的に使用される方法は、単に「ウェブ」とも呼ばれるワールド・ワイド・ウェブ環境を使用することである。ウェブ環境においては、図1のサーバ102及び104並びにクライアント110〜114などのサーバ及びクライアントは、様々なデータ・ファイルの転送を処理するための既知のプロトコルであるハイパーテキスト転送プロトコル(HTTP)を用いて、データ・トランザクションを行う。これらのタイプのデータ・ファイルの例として、テキスト、静止グラフィックス画像、音声、及び動画ビデオが挙げられる。様々なデータ・ファイルの情報は、ユーザに表示するために、標準的なページ記述言語、ハイパーテキスト・マークアップ言語(HTML)、又は拡張可能マークアップ言語(XML)によってフォーマットされる。
ウェブ・サービスは、ウェブ・サービス・サーバによって提供されるアプリケーションである。ウェブ・サービスは、ハイパーテキスト転送プロトコル(HTTP)などの標準的なインターネット・プロトコルを含むがこれに限定されるものではない異なるタイプのインターネット・プロトコルを介して、ユーザがアプリケーション・ビジネス・ロジックにアクセスできるようにするXMLインターフェースを提供する。
多くのレガシー・アプリケーションは、新しいデータ処理システムに統合されることが必要である。別個のシステム及びアプリケーションを統合することに関するソフトウェア業界の解決策は、ウェブ・サービス・インターフェースをレガシー・アプリケーションの既存のロジックに与えることである。いずれのタイプのアプリケーションも、この方法で、ウェブ・サービスとして利用可能にすることができる。
現在のウェブ・サービス実装及びウェブ・サービス・ランタイムは、ウェブ・サービス要求をキャッシュすることに関してオール・オア・ナッシングのアプローチをサポートするのみであるため、本発明の態様は、ウェブ・サービス性能の問題が生じる可能性があることが分かる。応答の要素をキャッシュから得ることができる、ウェブ・サービス要求をサービスするフラグメント・キャッシュ・アプローチを扱うことが可能な既存のアプローチは存在しない。さらに、このモデルは、特定のパラメータの組に関して要求をキャッシュ可能とすべきであることを指定することもサポートされていない。
最後に、レガシー・アプリケーション・プログラミング・インターフェースの既存の実装形態を修正して性能を改善すること、又は、ウェブ・サービス・フレームワークを修正して応答フォーマットをカスタマイズすることは、レガシー・アプリケーションの特定のプログラミング・モデルに関してスキルのあるプログラマを雇用する費用のために、実際的ではない可能性がある。
本発明の態様は、ウェブ・サービス要求をキャッシュするための改善されたコンピュータに実装される方法、システム、及びコンピュータ使用可能プログラム・コードを提供する。本発明の実施形態によれば、ウェブ・サービス応答を生成するプロセスの際に多数のキャッシュ・ポイントが使用可能なウェブ・サービスが提供される。ウェブ・サービス・コントローラが、クライアント要求元からの外部XML要求を、ウェブ・サービス・レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースを実行するための呼び出しに変換するメディエータとして機能する。レガシー・アプリケーション・プログラミング・インターフェースの出力は、キャッシュに格納することができる。さらに、レガシー・アプリケーションと関連するビジネス・ロジック・インターフェースは、ウェブ・サービス要求に対する応答を生成するのに利用される応答生成ロジックから分離される。このようにして、応答をキャッシュするために、付加的なキャッシュ・ポイントが提供される。
本発明の態様はまた、ウェブ・サービス要求に対する応答を生成するために実行されるカスタマイズ可能なテンプレートを提供する。カスタマイズ可能なテンプレートは、キャッシュに保存することができる。さらに、生成された応答がキャッシュ可能である場合には、その応答は、キャッシュに保存することができる。応答全体がキャッシュ可能でない場合であっても、フラグメント・キャッシュ・アプローチに従って、応答の1つ又は複数のフラグメントをキャッシュに保存することができる。キャッシュから得られた応答、又はテンプレートを実行することによって生成された応答は、要求するクライアントにXML応答メッセージとして戻される。
図3は、本発明の1つの例示的な実施形態に係るウェブ・サービス・サーバの例示的なブロック図である。ウェブ・サービス・サーバ300は、図1におけるサーバ104及び106などのサーバである。要求元310は、ウェブ・サービスの要求元である。要求元310は、インターネット、イントラネット、又はエクストラネットを含むあらゆるウェブ環境において、ウェブ・サービスにアクセスすることができる。さらに、要求元310は、ユーザ、別のアプリケーション・プログラム、又は、別のウェブ・サービスとすることもできる。本発明の1つの実施形態によれば、要求元310は、ウェブ・サーバにアクセスするクライアントである。
ウェブ・サービス・アプリケーションを、多くの異なる方法で要求元310によって呼び出すことができる。本発明の態様によれば、要求元310は、ウェブ・サービス要求を作成して、ウェブ・サービスを呼び出すための知られた方法又は使用可能な方法のいずれかを用いることによって、ウェブ・サービスを呼び出すことができる。例えば、従来のデプロイメント・モデルによれば、中央ウェブ・サービス・サーバ上の公開されたウェブ・サービス記述言語(WSDL)が、そのウェブ・サービスによってサポートされるサービスを定義する。この例によれば、図1におけるクライアント110〜114などのクライアントは、中央ウェブ・サービス・サーバに接続し、公に使用可能なウェブ・サービス記述言語によって定義されたいずれかのウェブ・サービス・アプリケーションを要求することによって、ウェブ・サービスを呼び出すことができる。
ウェブ・サービス要求315は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープに包まれたXML要求を含む。シンプル・オブジェクト・アクセス・プロトコルのエンベロープは、XML要求をどのように処理するかに関する情報を提供する。
ウェブ・サービス・ランタイム320は、要求元310からウェブ・サービス要求315を受信する。ウェブ・サービス・ランタイム320は、ウェブ・プロトコルを取り扱い、要求をカプセル化するシンプル・オブジェクト・アクセス・プロトコルの要素に従って要求を処理する。ウェブ・サービス・ランタイム320は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープからウェブ・サービス要求315のXML要求を抽出して、XML要求328を生成する。
ウェブ・サービス・ランタイムは、XML要求328などのウェブ・サービス要求について、オール・オア・ナッシングのキャッシュ・アプローチをサポートする。したがって、XML要求328がキャッシュ可能である場合には、ウェブ・サービス・ランタイム320は、XML要求328に対するXML応答がキャッシュに格納されているかどうかを判定する。XML要求328に対するXML応答385がキャッシュに格納されている場合には、ウェブ・サービス・ランタイム320は、キャッシュされたXML応答385を取り出す。ウェブ・サービス・ランタイムは、XML応答385をシンプル・オブジェクト・アクセス・プロトコルに同封してウェブ・サービス応答388を生成し、応答を生成するためのウェブ・サービス・プロセスを実行することなく、ウェブ・サービス応答388を要求元310に送信する。
しかしながら、ウェブ・サービス・ランタイムは、キャッシュすることに関してオール・オア・ナッシング・アプローチをサポートするのみであるため、ウェブ・サービス要求は、ウェブ・サービス要求及び応答の全体がキャッシュ可能である場合にのみキャッシュに格納されることになる。XML応答385がキャッシュに格納されていない場合には、ウェブ・サービス・ランタイム320は、XML要求328を処理するためのウェブ・サービス・コントローラ330にXML要求328を転送して、XML応答385を生成する。
ウェブ・サービス・コントローラ330は、XML要求を処理するためのモデル・ビュー・コントローラ(MVC)フレームワークである。ウェブ・サービス・ランタイム320からXML要求328を受信すると、ウェブ・サービス・コントローラ330は、ウェブ・サービス−レガシー・アプリケーション・マッピング340を呼び出して、レガシー・アプリケーション350と関連するレガシー・アプリケーション・プログラミング・インターフェース360にXML要求328をマッピングする。
ここに示される例示的な例においては、インターフェース360は、レガシー・アプリケーションと関連するアプリケーション・プログラミング・インターフェースである。レガシー・アプリケーション・プログラミング・インターフェースは、ウェブ・サービス・コントローラとアプリケーション・ビジネス・ロジックとの間のビジネス・ロジック・インターフェースである。本発明の態様によれば、インターフェース360は、ウェブ・サービス・コントローラとアプリケーション・ビジネス・ロジックとの間のインターフェースとしての機能を果たすことができるいずれかのタイプのインターフェースとすることができる。
ウェブ・サービス−レガシー・アプリケーション・マッピング340は、レガシー・アプリケーション・プログラミング・インターフェース360に対する呼び出しのためのパラメータを生成する。レガシー・アプリケーション・プログラミング・インターフェース(API)360は、レガシー・アプリケーション350の具体的な機能がどのように実装されているかということにかかわらず、ウェブ・サービス・コントローラ330が、標準的な一貫性のあるインターフェースを用いてレガシー・アプリケーション350の実行を呼び出すことを可能にする。ウェブ・サービス・コントローラ330は、ウェブ・サービス−レガシー・アプリケーション・マッピング340によって提供される呼び出しフォーマットを利用して、レガシー・アプリケーション・プログラミング・インターフェース360を呼び出す。
レガシー・アプリケーション350は、通信ポートを通るデータに対応して、要求元310が求める所望の機能を提供するように設計された、あらゆるソフトウェア・アプリケーションを表す。これらの例においては、レガシー・アプリケーション350は、あらゆるタイプのアプリケーションとすることができる。例えば、このレベルのアプリケーションは、ウェブ・サービス・サーバ300に対する要求を通してインターネットのクライアントによってアクセスされ得るデータ又はテキストを扱うのに必要なアプリケーションを含むことができる。
ウェブ・サービス・コントローラ330は、マッピング340から、レガシー・アプリケーション・プログラミング・インターフェース360に対する呼び出しのためのフォーマットを受信する。ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360からの出力がキャッシュの少なくとも1つに格納されているかどうかを判定する。出力がキャッシュに格納されている場合には、ウェブ・サービス・コントローラ330は、キャッシュされたレガシー・アプリケーション・プログラミング・インターフェースの出力をキャッシュから取り出す。ウェブ・サービス・コントローラ330は、キャッシュされたレガシー・アプリケーション・プログラミング・インターフェースの出力を、応答作成エンジン370と関連するアプリケーション・プログラミング・インターフェース380に転送する。
ウェブ・サービス・コントローラ330が、レガシー・アプリケーション・プログラミング・インターフェース360の出力がキャッシュに格納されていないと判定した場合には、ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360を呼び出して、レガシー・アプリケーション350の実行を開始する。レガシー・アプリケーション・プログラミング・インターフェース360は、レガシー・アプリケーション350の実行によって生成された出力をウェブ・サービス・コントローラ330に戻す。ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360から受信した出力を、応答作成エンジン370と関連するアプリケーション・プログラミング・インターフェース380に転送する。
次いで、ウェブ・サービス・コントローラ330は、アプリケーション・プログラミング・インターフェース380を呼び出して、応答作成エンジン370を実行する。応答作成エンジン370は、XML応答385といった、XML要求に対する応答を生成する。応答作成エンジン370は、応答作成エンジン370によって受信された情報に基づいて、特定の要求に関連するXML応答を生成する。応答作成エンジン370は、いずれかの使用可能な及び/又は関連するデータに基づいて、XML応答を生成することができる。例えば、応答作成エンジン370は、レガシー・アプリケーション・プログラミング・インターフェース360から受信された出力に全体的に又は部分的に基づいた応答を生成することができる。さらに、データベース又は他のデータ・ストレージ装置において使用可能な情報、並びに、応答テンプレート自体のパラメータに基づいて、XML応答を生成することができる。
応答作成エンジン370は、カスタマイズ可能な応答テンプレートを含む。応答作成エンジン370は、応答作成エンジン370のテンプレートにおいて指定されたフォーマットに基づいて、XML要求328に対するXML応答385を生成するために応答テンプレートを実行する。さらに、テンプレートは、キャッシュに格納することができる。このように、テンプレートがキャッシュ可能であり、キャッシュ内で使用可能であると判定される場合には、XML応答328を生成するように実行するためのキャッシュのうちの1つから応答テンプレートを得ることができる。
応答作成エンジン370は、本発明の態様に係る応答テンプレートをコード化するためのいずれかのプログラミング言語を用いて生成することができる。本発明の例示的な実施形態によれば、応答作成エンジンは、JavaServer(商標)Pages(JSP)又はApache(商標)Velocityなどのテンプレート言語である。当然のことながら、応答作成エンジン370は、他のタイプのテンプレート言語を含むこともできる。さらに、応答作成エンジン360はまた、他のいずれかのプログラミング言語、すなわちテンプレート言語ではない言語でさえ含むことができる。例えば、応答作成エンジン370は、Cプログラミング言語でコード化することもできる。
応答作成エンジン370は、応答の完全なキャッシュと応答の一部のフラグメント・キャッシュの両方をサポートする。応答作成エンジン370は、応答作成エンジン370において指定されたキャッシュ・ポリシーに従って、応答をキャッシュする。
XML要求328のための応答がキャッシュに格納されている場合には、応答作成エンジン370は、キャッシュから応答を取り出す。応答作成エンジン370は、キャッシュされた応答に基づいて、XML応答385などのXML応答を生成する。応答生成エンジン370は、XML応答385をウェブ・サービス・コントローラ330に転送する。
XML要求328に対する応答を生成するための応答全体がキャッシュに格納されていない場合には、応答作成エンジン370は、応答の1つ又は複数のフラグメントがキャッシュに格納されているかどうかを判定する。応答の1つ又は複数のフラグメントが、キャッシュされたコンテンツ386としてキャッシュ387に格納されている場合には、応答生成エンジン370は、キャッシュされたコンテンツ386と関連するテンプレート・フラグメントを再実行するのではなく、キャッシュ387からキャッシュされたコンテンツ386を取り出す。
キャッシュ可能な応答は、キャッシュに格納することができる完全なXML応答である。キャッシュ内で使用可能なキャッシュ可能応答を生成するのではなく、キャッシュからXML応答を得ることができる。
単一のキャッシュ可能な応答フラグメントは、キャッシュに格納することができる応答の一部又は部分である。多数のキャッシュ可能な応答フラグメントは、キャッシュに格納することができるXML応答の多数の一部又は部分を含む。同様に、キャッシュされた応答フラグメントは、現時点でキャッシュに格納されているXML応答の部分又は断片である。
本明細書では、キャッシュ可能なコンテンツの組は、完全にキャッシュ可能な応答、単一のキャッシュ可能な応答フラグメント、又は、多数のキャッシュ可能な応答フラグメントを含むものとすることができる。キャッシュ可能なコンテンツの組は、応答の静的部分を含む。応答の静的部分は、更新又は修正される頻度が相対的に低い応答の部分である。対照的に、応答の動的部分は、相対的に頻繁に更新又は修正される。
例えば、ウェブ・サービス要求が、使用可能な製品の記述と、それらの製品の現在のインベントリとを要求することを受信する場合には、使用可能な製品の記述は、おそらく、週毎に更新されるか、月毎に更新されるか、年毎に更新されるか、又は、場合によっては更新されないというように、更新される頻度が相対的に低いであろう。したがって、使用可能な製品の記述は、応答の静的部分を構成することになる。この情報は、キャッシュ内で使用可能なキャッシュ可能なコンテンツとなる可能性がある。しかしながら、使用可能な製品の現在のインベントリは、製品の使用可能性の変更を反映するように、頻繁な更新を必要とするであろう。したがって、現在のインベントリは、応答の動的コンテンツを構成することになる。
応答作成エンジン370は、キャッシュに格納されていない応答フラグメントと関連するテンプレート・フラグメントを実行して、動的コンテンツの組を生成する。応答作成エンジン370は、キャッシュされた応答フラグメントをキャッシュから取り出して、キャッシュされたコンテンツ386の組を生成する。応答生成エンジン370は、動的コンテンツの組とキャッシュされたコンテンツの組に基づいて、要求に対する応答を生成する。
本発明の態様によれば、応答作成エンジン370は、テンプレートの実行によって生成される応答のフォーマットを変更するように、及び/又は、応答に対するキャッシュ・ポリシーを修正するように、修正することができるカスタマイズ可能なテンプレートである。カスタマイズ可能なテンプレートは、テンプレート・テキスト・ファイルを開き、テンプレート・テキスト・ファイルを更新及び/又は修正するための既知の又は使用可能な方法のいずれかに従ってテンプレート・コードを修正することによって、修正及び/又は更新することができる。
例えば、ユーザは、応答全体をキャッシュするのではなく、XML応答の指定されたフラグメント又は部分をキャッシュするように、応答作成エンジン310を修正することができる。このようにして、ユーザは、応答の生成の際に、応答のどの部分をキャッシュし、応答のどの部分を動的に決定するかを指定することができる。カスタマイズ可能なテンプレートは、テンプレートを更新するための既知の又は使用可能な方法のいずれかに従って、更新又は修正することができる。
テンプレートは、生成された応答を読むことができるようにXML応答を公表することによって、応答生成のカスタマイズを簡単なものにする。例えば、テンプレート言語が、JavaServer(商標)Pagesテンプレート言語である場合には、ユーザは、ウェブ・サービス・モデルのプログラミング言語を修正しなければならないのではなく、テンプレート言語ファイルを修正して付加的なXML要素を応答に挿入することができる。このようにして、テンプレート言語は、応答の容易な拡張を可能にする。
アプリケーション・プログラミング・インターフェース380は、ウェブ・サービス・コントローラ330が、標準的な一貫性のあるインターフェースを用いて応答作成エンジン370を呼び出すことを可能にする。呼び出しのパラメータは、ウェブ・サービス応答388の処理に関する情報を指定する。
応答作成エンジン370によって生成されたXML応答385を受信すると、ウェブ・サービス・コントローラ330は、XML応答385をウェブ・サービス・ランタイム320に渡す。ウェブ・サービス・ランタイム320は、XML応答385をシンプル・オブジェクト・アクセス・プロトコルのエンベロープにカプセル化してウェブ・サービス応答388を生成し、ネットワークを介して応答388を要求元310に返送する。
図3に示される例示的な説明図によれば、ウェブ・サービス要求315は、要求元310からウェブ・サービス・サーバ300に送信される。ウェブ・サービス・ランタイム320は、ウェブ・サービス要求315を受信し、要求を定義するシンプル・オブジェクト・アクセス・プロトコルのエンベロープを処理する。ウェブ・サービス・ランタイム320は、XML要求328をウェブ・サービス・コントローラ330に渡す。ウェブ・サービス・コントローラ330は、ウェブ・サービス−レガシー・アプリケーション・マッピング340を呼び出して、ウェブ・サービスをレガシー・アプリケーション・プログラミング・インターフェース360にマッピングする。マッピング340は、レガシー・アプリケーション350を実行するために、レガシー・アプリケーション・プログラミング・インターフェース360に対する呼び出しフォーマットを生成する。
ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360からレガシー・アプリケーションの実行の出力を受信する。ウェブ・サービス・コントローラ330は、アプリケーション・プログラミング・インターフェース380を呼び出し、レガシー・アプリケーション・プログラミング・インターフェース360の出力に基づいて応答を生成するように応答作成エンジン370を実行する。
応答作成エンジン370は、キャッシュ387からキャッシュされたコンテンツ386の組を受信することができる。本明細書では、キャッシュされたコンテンツの組は、キャッシュに格納された、応答全体、単一の応答フラグメント、又は、2つ以上の応答フラグメントを含むものとすることができる。応答作成エンジン370はまた、応答テンプレートを実行して動的コンテンツの組を生成する。本明細書では、動的コンテンツは、応答全体、1つの応答フラグメント、又は2つ以上の応答フラグメントを含むことができる。応答作成エンジン370は、キャッシュされたコンテンツの組と動的コンテンツの組に基づいて、XML応答385を生成する。
ウェブ・サービス・コントローラ330は、応答作成エンジン370によって生成されたXML応答385を、ウェブ・サービス・ランタイム320に送信する。ウェブ・サービス・ランタイム320は、シンプル・オブジェクト・アクセス・プロトコルのエンベロープにXML応答385を同封して、ウェブ・サービス応答388を生成する。ウェブ・サービス・ランタイム320は、ウェブを介してウェブ・サービス応答388を要求元310に送信する。
本発明の実施形態によれば、レガシー・アプリケーション350とウェブ・サービス−レガシー・アプリケーション・マッピング340とは、同じコンポーネントの内部に組み込むことができる。
本発明の例示的な例によれば、レガシー・アプリケーションがキャッシュ内で使用可能である場合には、ウェブ・サービス・コントローラ330は、要求をレガシー・アプリケーション350にマッピングするウェブ・サービス−レガシー・アプリケーション・マッピング340を呼び出さない。この実施形態によれば、レガシー・アプリケーション・プログラミング・インターフェース360の出力は、キャッシュ内で使用可能であり、実行される必要がないため、ウェブ・サービス−レガシー・アプリケーション・マッピング340を呼び出す必要はない。本発明の別の実施形態によれば、ウェブ・サービス・コントローラ330は、要求をレガシー・アプリケーション・プログラミング・インターフェース360にマッピングするウェブ・サービス−レガシー・アプリケーション・マッピング340を呼び出した後で、レガシー・アプリケーションがキャッシュ内で使用可能かどうかを判定する。
本発明の別の実施形態によれば、レガシー・アプリケーション350がキャッシュ可能である場合には、ウェブ・サービス・コントローラ330は、キャッシュへのレガシー・アプリケーション350のキャッシュを開始する。本発明の態様によれば、レガシー・アプリケーション350は、データをキャッシュするためのいずれかの既知の方法に従ってキャッシュすることができる。
本発明の例示的な例によれば、ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360を呼び出してレガシー・アプリケーション350を実行するのではなく、キャッシュから取り出された、レガシー・アプリケーション・プログラミング・インターフェース360から受信した出力を取り出す。本発明の別の実施形態によれば、ウェブ・サービス・コントローラ330は、レガシー・アプリケーション・プログラミング・インターフェース360を呼び出してレガシー・アプリケーション350の実行を開始し、レガシー・アプリケーション350の実行によって受信した出力を戻す。この例示的な例においては、出力は、レガシー・アプリケーション350の実行の結果として、レガシー・アプリケーション・プログラミング・インターフェース360から動的に受信される。
このように、ビジネス・ロジック・インターフェースであるレガシー・アプリケーション・プログラミング・インターフェース360の出力は、キャッシュの少なくとも1つから取得することができる。このような場合においては、キャッシュに格納される出力は、ビジネス・ロジック・インターフェースから得られる。ビジネス・ロジック・インターフェースの出力がキャッシュ内で使用可能でない場合には、出力は、XML要求328などの要求と関連するレガシー・アプリケーションを実行することによって、ビジネス・ロジック・インターフェースから得られる。
図4は、本発明の1つの例示的な実施形態に係るウェブ・サービス要求処理の間のメッセージ・フローの例示的な図である。図4におけるメッセージング・フローは、図3におけるウェブ・サービス・サーバ300内で実行される。
要求元は、ウェブ・サービス要求410を、シンプル・オブジェクト・アクセス・プロトコルのエンベロープ内にパッケージされたXML要求の形で、ウェブ・サービス・ランタイムに送信する。ウェブ・サービス・ランタイムは、XML要求からシンプル・オブジェクト・アクセス・プロトコルを除去し、XML要求420をウェブ・サービス・コントローラに送信する。
ウェブ・サービス・コントローラは、XML要求を受信する。ウェブ・サービス・コントローラは、ウェブ・サービス−レガシー・アプリケーション・マッピングを呼び出して、マッピング・ロジック430を実行する。マッピング・ロジック430は、XML要求をレガシー・アプリケーションにマッピングする。マッピング・ロジック430は、呼び出しについてのフォーマットを、レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースに戻す。
ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェース(API)435を実行して、レガシー・アプリケーションの実行を開始する。レガシー・アプリケーション・プログラミング・インターフェースは、レガシー・アプリケーションの実行による出力をウェブ・サービス・コントローラに戻す。
ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、応答作成テンプレートを実行する440。応答作成エンジンは、テンプレートを実行して445、動的コンテンツ450及び460を生成する。応答作成エンジンは、キャッシュされたコンテンツ455をキャッシュから取り出す。応答作成エンジンは、テンプレートを実行し465、キャッシュされたコンテンツ及び動的コンテンツに基づいてXML応答を生成する。応答作成エンジンは、XML応答をウェブ・サービス・コントローラ470に戻す。
ウェブ・サービス・コントローラは、XML応答480をウェブ・サービス・ランタイムに送信する。ウェブ・サービス・ランタイムは、XML応答をシンプル・オブジェクト・アクセス・プロトコルのエンベロープに同封して、ウェブ・サービス応答を生成する。ウェブ・サービス・ランタイムは、ウェブ・サービス応答490を要求元に返送する。
図5は、本発明の1つの例示的な実施形態に係る、ウェブ・サービス要求が要求元から最初に受信されるときの本発明の例示的な動作を概説するフローチャートである。図5におけるプロセスは、図3におけるウェブ・サービス・ランタイム320などのウェブ・サービス・ランタイムによって実行される。
ウェブ・サービス・ランタイムは、要求元からウェブ・サービス要求を受信する(ステップ510)。ウェブ・サービス・ランタイムは、XML要求を同封するシンプル・オブジェクト・アクセス・プロトコルのエンベロープからXML要求を取り出して、XML要求を生成する(ステップ520)。ウェブ・サービス・ランタイムは、要求を処理するために、XML要求をウェブ・サービス・コントローラに送信する(ステップ530)。
ウェブ・サービス・コントローラが要求の処理を完了した後、ウェブ・サービス・ランタイムは、ウェブ・サービス・コントローラからXML応答を受信する(ステップ540)。ウェブ・サービス・ランタイムは、XML応答をシンプル・オブジェクト・アクセス・プロトコルのエンベロープに同封し(ステップ550)、ウェブ・サービス応答を要求元に送信し(ステップ560)、その後プロセスは終了する。
図6は、本発明の1つの例示的な実施形態に係る、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングするためのXMLコードの例示的な図である。図6において実装されるコードは、図3におけるウェブ・サービス−レガシー・アプリケーション・マッピング340などのマッピング・コンポーネントに実装することができる。
ウェブ・サービス・コントローラは、ウェブ・サービス−レガシー・アプリケーション・マッピング・コンポーネントを呼び出して、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングし、レガシー・アプリケーションを実行するための呼び出しを生成する。
コード610は、どのウェブ・サービス−レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行するかということを判定するために、マッピング・コンポーネントによって利用される。コード620のラインは、マッピングの際に定められる「viewTaskName」と呼ばれる定数を指定する。ウェブ・サービス応答作成エンジンは、この付加的な情報を用いて応答を作成することになる。言い換えれば、この設定コードは、どのアプリケーションを実行するかということと、どのようにして応答を作成するかということとの間の関係を与える。
例えば、ウェブ・サービス・コントローラがマッピング・コンポーネントを呼び出したときは、マッピング・コンポーネントは、XML要求を名前−値ペアの組に変換する。名前−値ペアの第1の組は、レガシー・アプリケーションを実行するためにレガシー・アプリケーション・プログラミング・インターフェースによって使用される。レガシー・アプリケーション・プログラミング・インターフェースと関連するレガシー・アプリケーションの実行の結果として、名前−値ペアの第2の組が生成される。名前−値ペアの第1及び第2の組は、応答作成エンジンに渡される。応答作成エンジンは、名前−値ペアをパラメータとして用いて、XML要求に対する応答を生成する。しかしながら、これは、本発明の実施形態によるマッピング機能の実装形態の一例にすぎない。本発明の態様に従って、XML要求をインターフェースにマッピングするための他の既知の又は使用可能な方法のいずれかを利用することができる。
XML要求を受信したことに応答して、ウェブ・サービス・コントローラは、要求と関連するインターフェースを呼び出す。ウェブ・サービス・コントローラはキャッシュ機能をサポートし、それにより、インターフェースの出力は、該出力がキャッシュ可能である場合にはキャッシュに格納することができる。このように、インターフェースの出力は、ウェブ・サービス・コントローラによってキャッシュから取得することができる。
ウェブ・サービス・コントローラは、インターフェースの出力がすでにキャッシュに格納されているかどうかを判定することもできる。出力がキャッシュにない場合には、インターフェースの出力は、インターフェースを呼び出してレガシー・アプリケーションなどのアプリケーションを実行することによって、インターフェースから得ることができる。アプリケーションの実行に応答して、インターフェースは、インターフェースの出力をウェブ・サービス・コントローラに戻す。
図7は、本発明の1つの例示的な実施形態に係る、レガシー・アプリケーションが実行されるときの本発明の例示的な動作を概説するフローチャートである。図7におけるプロセスは、図3におけるウェブ・サービス・コントローラ330などのウェブ・サービス・コントローラによって実行することができる。
ウェブ・サービス・コントローラは、ウェブ・サービス・ランタイムからXML要求を受信する(ステップ710)。ウェブ・サービス・コントローラは、レガシー・アプリケーションの実行が必要かどうかを判定する(ステップ720)。例えば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ内で使用可能である場合には、レガシー・アプリケーションの実行は不要とすることができる。
レガシー・アプリケーションの実行が必要でない場合には、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し、レガシー・アプリケーション・プログラミング・インターフェースの出力に基づいて、要求に対するXML応答を生成する(ステップ760)。ウェブ・サービス・コントローラは、応答作成エンジンによって生成されたXML応答を受信する(ステップ770)。ウェブ・サービス・コントローラは、ウェブ・サービスの要求元に返送するために、XML応答をウェブ・サービス・ランタイムに送信し(ステップ780)、その後プロセスが終了する。
ここでステップ720に戻ると、レガシー・アプリケーションの実行が必要な場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーションを実行するためにレガシー・アプリケーション・プログラミング・インターフェースを呼び出すフォーマットを要求する(ステップ730)。コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出して、レガシー・アプリケーションを実行する(ステップ740)。
ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースから出力を受信する(ステップ750)。コントローラは、応答作成エンジンを呼び出す(ステップ760)。コントローラは、応答作成エンジンと関連するアプリケーション・プログラミング・インターフェースからXM応答を受信する(ステップ770)。ウェブ・サービス・コントローラは、XML応答をウェブ・サービス・ランタイムに送信し(ステップ680)、その後プロセスが終了する。
本発明の態様によれば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ・キーに基づいてキャッシュ内で使用可能であるかどうかについて判定することができる。キャッシュ・キーは、キャッシュ可能なデータのタイプを定めるパラメータ値を含む。
例えば、レガシー・アプリケーションが、30歳の男性を対象としたキャンペーンを生成するために実行される場合には、レガシー・アプリケーションからのこの出力は、そのレガシー・アプリケーションと関連するアプリケーション・プログラミング・インターフェースによってキャッシュすることができる。第2のユーザが、30歳の男性を対象としたキャンペーンを要求する場合には、ウェブ・サービス・コントローラは、性別及び年齢、すなわちこの場合には、男性及び30歳を指定するパラメータをもつキャッシュ・キーを生成する。
キャッシュ・キーはまた、キャッシュを使用している複数のアプリケーション・プログラミング・インターフェースのうちの特定のレガシー・アプリケーション・プログラミング・インターフェースを指定する。キャッシュ・キーについてのパラメータ値は、一致するまで、キャッシュ内のデータについてのパラメータと比較される。レガシー・アプリケーション・プログラミング・インターフェースの出力のキャッシュは、データをキャッシュし、キャッシュからデータを取り出すための既知の又は使用可能な方法のいずれかに従って、達成することができる。本発明の実施形態によれば、レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ内で使用可能である場合には、レガシー・アプリケーション・プログラミング・インターフェースに対する呼び出しは行われない。
図8は、本発明の1つの例示的な実施形態に係る、レガシー・アプリケーションを実行するかどうかについて判定が行われるときの本発明の例示的な動作を概説するフローチャートである。図8におけるプロセスは、図7におけるステップ720のより詳細な記述である。プロセスは、図3におけるウェブ・サービス・コントローラ330などのウェブ・サービス・コントローラに実装することができる。
ウェブ・サービス・コントローラは、レガシー・アプリケーションと関連するレガシー・アプリケーション・プログラミング・インターフェースからの出力がキャッシュ可能かどうかを判定する(ステップ882)。レガシー・アプリケーション・プログラミング・インターフェースの出力がキャッシュ可能でない場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行する(ステップ884)。応答作成エンジンは、レガシー・アプリケーション・プログラミング・インターフェースからレガシー・アプリケーションの実行の出力を受信する(ステップ886)。次いで、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、ウェブ・サービス要求に対する応答を生成する(ステップ888)。この例示的な実施形態によれば、応答は、レガシー・アプリケーション・プログラミング・インターフェースからの出力に基づいて生成され(ステップ888)、その後プロセスは終了する。
ここでステップ882に戻ると、レガシー・アプリケーションがキャッシュ可能である場合には、コントローラは、要求についてのキャッシュ・キーを生成する(ステップ890)。次いで、ウェブ・サービス・コントローラは、キャッシュ内で使用可能なデータについてのいずれかの値がキャッシュ・キーと一致するかどうかを判定する(ステップ894)。キャッシュ内の値がキャッシュ・キーと一致しない場合には、ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースを呼び出してレガシー・アプリケーションを実行する(ステップ884)。ウェブ・サービス・コントローラは、レガシー・アプリケーション・プログラミング・インターフェースからの出力を受信し(ステップ886)、生成されたキャッシュ・キーに基づいて結果をキャッシュに保存する。ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し(ステップ888)、その後プロセスは終了する。
ステップ894に戻ると、キャッシュ内の値がキャッシュ・キーの値と一致する場合には、コントローラは、レガシー・アプリケーション・プログラミング・インターフェースからの出力をキャッシュから取り出す(ステップ898)。次いで、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出し、レガシー・アプリケーション・プログラミング・インターフェースからのキャッシュされた出力に基づいてウェブ・サービス要求に対する応答を生成し(ステップ888)、その後プロセスは終了する。
本発明の実施形態によれば、応答は、レガシー・アプリケーション・プログラミング・インターフェースの出力に基づいて生成される。しかしながら、応答は、レガシー・アプリケーション・プログラミング・インターフェースの出力に加えて、又はその代わりに、他の情報に基づいて生成することもできる。
例えば、要求元は、製品の記述を要求することができる。この例においては、要求元によって要求される製品の記述は、データベース又は他のデータ・ストレージ装置において使用可能である。このタイプの要求は、要求元への応答を生成するために、アプリケーションの実行、及び/又は、アプリケーション若しくはアプリケーション・インターフェースからの出力の生成を必要としない「読み取り専用」である。この場合においては、応答作成エンジンは、データベース又は他のデータ・ストレージ場所から要求された情報を取り出すことができるのみである。応答作成エンジンは、取り出されたデータに基づいて応答を生成する。したがって、本発明の態様によれば、レガシー・アプリケーション・プログラミング・インターフェース及び/又はレガシー・アプリケーションからのいかなる出力もない状態で、応答を生成することができる。
図9は、本発明の1つの例示的な実施形態に係る、読み取り専用要求が受信されるときのXMLコードの例示的な説明図である。図9において実装されるコードは、図3における応答作成エンジン370などの応答作成エンジンに実装することができる。
いくつかの場合においては、ウェブ・サービス要求は読み取り専用要求である。例えば、要求元が、カタログ・データベースに格納されたカタログ項目の記述を要求することがある。このような場合においては、レガシー・アプリケーションの実行は不要である。代わりに、要求されたデータがデータベースから取り出され、要求元に送信されるだけである。
コード910は、ビジネス・ロジックの処理が不要であるため、レガシー・アプリケーションの実行を回避するようにウェブ・サービス・コントローラに命令するのに用いられるXML構成である。代わりに、ウェブ・サービス・コントローラは、応答作成エンジンを呼び出して、要求されたデータを提示する応答を生成するように命令される。この例示的な実施形態においては、何もしないビジネス・ロジック命令を生成してフェッチ専用要求を実行するか、又はダミー命令を使用する代わりに、コード920が、読み取り専用要求を実行する定数「responseOnly」を指定する。
本発明の態様によれば、ウェブ・サービス・コントローラは、データベース、読み取り専用メモリ、キャッシュなどのランダム・アクセス・メモリ、他のいずれかの内部データ・ストレージ装置、いずれかの外部データ・ストレージ装置、又はいずれかの外部システムを含むがこれらに限定されるものではない種々の異なるデータ源から、ウェブ・サービス要求に対応するデータを取り出すことができる。
XML要求を受信したことに応答して、応答作成エンジンは、要求に対するウェブ・サービス応答がキャッシュ可能であるかどうかを判定する。応答がキャッシュ可能である場合には、応答作成エンジンは、応答のキャッシュ可能なフラグメントを特定する。これらのキャッシュ可能なフラグメントは、要求に対応する、キャッシュ内にキャッシュされたコンテンツの組を形成する。応答作成エンジンは、要求に対応する、キャッシュ内にキャッシュされたコンテンツの組を特定し、キャッシュされたコンテンツの特定された組を形成する。応答作成エンジンは、キャッシュされたコンテンツの特定された組をキャッシュから取り出す。要求に対する応答は、応答がキャッシュされたコンテンツの組を含むように、キャッシュされたコンテンツの特定された組に基づいて生成される。
キャッシュされたコンテンツの組が要求に対する完全なXML応答である場合には、カスタマイズ可能なテンプレートは実行されない。しかしながら、キャッシュされたコンテンツの組がXML応答全体ではない場合には、キャッシュ内で使用可能ではない応答の動的部分を表すテンプレート・フラグメントの組が特定され、動的コンテンツの組を生成するために実行される。動的コンテンツの組は、応答の動的部分を形成する。このように、この例示的な例に従って生成された応答は、キャッシュされたコンテンツの組と、動的コンテンツの組とを含む。
図10は、本発明の1つの例示的な実施形態に係る、応答が生成されるときの本発明の例示的な動作を概説するフローチャートである。プロセスは、例示的な例においては、図3における応答作成エンジン370によって実装される。
応答作成エンジンは、テンプレートを起動して応答を生成する(ステップ1010)。応答作成エンジンは、応答がキャッシュ可能であるかどうかを判定する(ステップ1015)。応答がキャッシュ可能でない場合には、応答作成エンジンは、応答がフラグメントを含むかどうかを判定する(ステップ1020)。応答がフラグメントを含まない場合には、応答作成エンジンは、テンプレートを実行して(ステップ1025)、要求に対するXML応答を生成する(ステップ1030)。XML応答は、ウェブ・サービス・コントローラに送信され(ステップ1035)、その後プロセスは終了する。
ここでステップ1015に戻ると、応答がキャッシュ可能な場合には、応答作成エンジンは、応答についてのキャッシュ・キーを生成する(ステップ1040)。応答作成エンジンは、キャッシュ内のいずれかの値がキャッシュ・キーの値と一致するかどうかを判定する(ステップ1045)。キャッシュ内の値がキャッシュ・キーと一致しない場合には、応答作成エンジンは、テンプレートを実行して(ステップ1025)、要求に対するXML応答を生成する(ステップ1030)。XML応答は、ウェブ・サービス・コントローラに送信され(ステップ1035)、その後プロセスは終了する。
ここでステップ1045に戻ると、キャッシュ内のある値がキャッシュ・キーと一致した場合には、応答作成エンジンは、完全にキャッシュされた応答をキャッシュから取り出し(ステップ1050)、XML応答を生成する(ステップ1030)。応答生成エンジンは、XML応答をウェブ・サービス・コントローラに送信し(ステップ1035)、その後プロセスは終了する。
ここでステップ1020に戻ると、応答がフラグメントを含む場合には、応答作成エンジンは、応答フラグメントがキャッシュ可能であるかどうかを判定する(ステップ1055)。フラグメントがキャッシュ可能でない場合には、応答生成エンジンは、応答フラグメントと関連するテンプレートのフラグメントを実行し(ステップ1060)、ステップ1020に戻って、応答が別のフラグメントを含むかどうかを判定する。ステップ1020及び1055〜1080は、応答のフラグメントのすべてが、キャッシュから取り出されるか、又はテンプレートを実行することによって生成されるまで、実行し続ける反復ループを形成する。
ここでステップ1055に戻ると、応答フラグメントがキャッシュ可能である場合には、応答生成エンジンは、応答フラグメントと関連するキャッシュ・キーを生成する(ステップ1065)。次いで、応答作成エンジンは、キャッシュ内のいずれかの値がキャッシュ・キーについての値と一致するかどうかを判定する(ステップ1070)。キャッシュ内の値がキャッシュ・キーと一致しない場合には、応答作成エンジンは、応答フラグメントと関連するテンプレート・フラグメントを実行する(ステップ1080)。こうして、プロセスはステップ1020に戻る。この反復ループは、応答フラグメントのすべてが、キャッシュから取り出されるか、又は応答フラグメントと関連するテンプレート・フラグメントを実行することによって生成されるまで、実行し続けることになる。
ここでステップ1070に戻ると、キャッシュ内のある値がキャッシュ・キーと一致した場合には、応答作成エンジンは、キャッシュから応答フラグメントを取り出す(ステップ1075)。こうして、プロセスはステップ1020に戻る。
本発明の1つの実施形態によれば、応答作成エンジンは、新たに生成された応答がキャッシュ可能であるかどうかを判定する。言い換えれば、応答がキャッシュ可能なコンテンツの組を含むどうかに関する判定が行われる。キャッシュ可能なコンテンツの組は、XML応答全体、又は、XML応答の1つ又は複数の部分を含むことができる。
応答がキャッシュ可能なコンテンツの組を含むという判定が行われた場合には、応答作成エンジンは、キャッシュ可能なコンテンツの組がすでにキャッシュに格納されているかどうかを判定する。キャッシュ可能なコンテンツの組がまだキャッシュに格納されていない場合には、応答作成エンジンは、キャッシュされたコンテンツの組を形成するために、キャッシュ可能なコンテンツの組をキャッシュに格納する。フラグメント・キャッシュ・アプローチによれば、キャッシュ可能なコンテンツは、応答作成エンジンによってキャッシュに格納される。このように、XML応答全体、XML応答のフラグメント、又は、XML応答の多数のフラグメントを、キャッシュすることができる。
フラグメントのキャッシュは、キャッシュ・ポリシーに従って、応答作成エンジンによって行われる。応答作成エンジン・テンプレートについてXML構成で定められるキャッシュ・ポリシーは、XML応答のキャッシュを指定する。キャッシュ・ポリシーは、どのフラグメントがキャッシュされ、応答のどのフラグメントがテンプレート・フラグメントを実行することによって動的に生成されるかを定める。
図11は、本発明の1つの例示的な実施形態に係る、ウェブ・サービス応答がキャッシュされるときの本発明の例示的な動作を概説するフローチャートである。これらの例示的な例においては、プロセスは、図3における応答作成エンジン370によって実装される。
応答作成エンジンは、応答がキャッシュ可能であるかどうかを判定する(ステップ1110)。応答がキャッシュ可能である場合には、応答作成エンジンは、応答がキャッシュに格納されているかどうかを判定する(ステップ1120)。応答がキャッシュに格納されている場合には、キャッシュされた応答は、ウェブ・サービス・コントローラに送信され(ステップ1130)、その後プロセスは終了する。
ここでステップ1120に戻ると、応答がキャッシュに格納されていない場合には、応答生成エンジンは、応答をキャッシュに格納し(ステップ1140)、応答をウェブ・サービス・コントローラに送信し(ステップ1130)、その後プロセスは終了する。
ここでステップ1110に戻ると、応答がキャッシュ可能でない場合には、応答作成エンジンは、応答がフラグメントを含むかどうかを判定する(ステップ1150)。応答がフラグメントを含まない場合には、応答は送信され(ステップ1130)、その後プロセスは終了する。
ステップ1150に戻ると、応答がフラグメントを含む場合には、応答作成エンジンは、フラグメントがキャッシュ可能であるかどうかを判定する(ステップ1160)。フラグメントがキャッシュ可能でない場合には、プロセスはステップ1150に戻る。フラグメントがキャッシュ可能である場合には、応答作成エンジンは、フラグメントがキャッシュに格納されているかどうかを判定する(ステップ1170)。フラグメントがキャッシュに格納されている場合には、プロセスはステップ1150に戻る。フラグメントがキャッシュに格納されていない場合には、フラグメントはキャッシュに格納される(ステップ1180)。次いで、プロセスはステップ1150に戻る。
ステップ1150〜1180は、応答のキャッシュ可能なフラグメントのすべてがキャッシュに格納されるまで実行し続けることになる反復ループを形成する。
図12は、本発明の1つの例示的な実施形態に係る、フラグメントのキャッシュを利用して応答が生成されるときのXMLコードの例示的な説明図である。コード1210は、ウェブ・サービス応答についてのフラグメント・キャッシュ・アプローチのためのXML構成の例である。コード1210及び1240は、応答作成エンジン1250についてのXMLコードを構成する。
コード1210において、2つの別個のJavaServer(商標)Pagesフラグメントが応答に含まれる。コード1220のラインは、共通アプリケーション・エリアである「ApplicationArea.jsp」フラグメントである。このアプリケーション・エリアは、コード1220のラインにおいて示されるように、他のウェブ・サービス応答で再使用することができる。他のJavaServer(商標)Pagesフラグメントは、コード1230のラインにおける「Show/Catalog.jsp」である。このコードは、キャッシュからのカタログ・フラグメントをウェブ・サービス応答に含むようにテンプレート言語に命令する。
コード1230のラインにおいて示される「Show/Catalog.jsp」フラグメント内に3つのXMLブロックが存在し、これらはコード1240において示される。各々のXMLブロックは、JSPフラグメントによって表される。コード1240において示されるJava(商標)Server Pageフラグメントのいくつかがキャッシュ可能であるか、又は、いずれもキャッシュ可能ではない。
キャッシュ可能なフラグメントについて、キャッシュ・ポリシーを生成し、次にJavaServer(商標)Pagesフラグメントが提示されたときにキャッシュ・バージョンを用いることができるように、コンテンツをキャッシュすることができる。コード1260は、このようなポリシーの例を示す。
キャッシュ・ポリシー定義内で、コード1240における3つのフラグメントのすべては、コード1270において示されるように、要求において見つかった「catalogId」パラメータに基づいて、キャッシュ可能である。「catalogId」は、サービスによって実行されるコマンドによって戻されるものか、又はXMLサービス要求からマッピングされるパラメータのいずれかである。
コード1260において示されるように、catalogId123をもつサービスの応答が最初に実行されるときに、各々のJavaServer(商標)Pagesも実行される。しかしながら、3つのフラグメントも同時にキャッシュされる。catalogId123について同じJavaServer(商標)Pagesフラグメントを含む別の要求が次に受信されたときに、テンプレート言語を実行してフラグメントを生成する代わりに、フラグメントのキャッシュされたバージョンが戻される。
現時点で特許請求の範囲に記載されている発明の態様は、ウェブ・サービス応答をキャッシュするための改善された方法を提供する。ウェブ・サービス要求の処理及びウェブ・サービス応答の生成の際に、多数のキャッシュ・ポイントが設けられる。ウェブ・サービス・レガシー・アプリケーションの実行によって生成される出力は、レガシー・アプリケーション・プログラミング・インターフェースによって動的に提供するか、又は、出力は、キャッシュから取り出すことができる。
さらに、ウェブ・サービス要求に対するXML応答を生成するように実行される応答テンプレートをキャッシュすることもできる。さらに、このテンプレートは、フラグメント・キャッシュをサポートする。したがって、応答は、完全な応答としてその全体をキャッシュすることができる。代替的には、応答の1つ又は複数のフラグメントをキャッシュすることができる。最後に、テンプレートは、本発明の実施形態に従って応答を生成するのに利用されるテンプレート及びキャッシュ・ポリシーの簡単なカスタマイズ及び修正を可能にする。
このようにして、本発明の態様は、応答をキャッシュすることに関してオール・オア・ナッシングのアプローチに制限されるのではなく、ウェブ・サービス応答の完全な及び部分的なキャッシュを提供する。さらに、本発明の実施形態は、テンプレート・テキスト・ファイルを修正することによって応答がどのように生成されるかを簡単にカスタマイズするための能力も提供する。
本発明の説明は、例示及び説明の目的で提示されたものであり、網羅的であること、及び、開示された形式に本発明を限定することを意図するものではない。当業者であれば、多くの修正及び変形が明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するために、並びに、考えられる特定の使用に適するように様々な変更を施した様々な実施形態について他の当業者が本発明を理解できるように、選択され、説明された。
本発明の態様を実装することができるデータ処理システムのネットワークの例示的な図である。 本発明の態様を実装することができるデータ処理システムの例示的なブロック図である。 本発明の1つの例示的な実施形態に係るウェブ・サービス・サーバの例示的なブロック図である。 本発明の1つの例示的な実施形態に係るウェブ・サービス要求処理の際におけるメッセージ・フローの例示的な図である。 本発明の1つの例示的な実施形態に係る、ウェブ・サービス要求が要求元から最初に受信されるときの本発明の例示的な動作を概説するフローチャートである。 本発明の1つの例示的な実施形態に係る、ウェブ・サービス要求をレガシー・アプリケーション・プログラミング・インターフェースにマッピングするためのXMLコードの例示的な図である。 本発明の1つの例示的な実施形態に係る、レガシー・アプリケーションが実行されるときの本発明の例示的な動作を概説するフローチャートである。 本発明の1つの例示的な実施形態に係る、レガシー・アプリケーションを実行するかどうかについて判定が行われるときの本発明の例示的な動作を概説するフローチャートである。 本発明の1つの例示的な実施形態に係る、読み取り専用要求が受信されるときのXMLコードの例示的な説明図である。 本発明の1つの例示的な実施形態に係る、応答が生成されるときの本発明の例示的な動作を概説するフローチャートである。 本発明の1つの例示的な実施形態に係る、ウェブ・サービス応答がキャッシュされるときの本発明の例示的な動作を概説するフローチャートである。 本発明の1つの例示的な実施形態に係る、フラグメントのキャッシュを利用して応答が生成されるときのXMLコードの例示的な説明図である。

Claims (20)

  1. 要求元からのウェブ・サービス要求に対する応答を生成するための方法であって、
    前記ウェブ・サービス要求を受信したことに応答して、前記要求と関連するビジネス・ロジック・インターフェースを呼び出すステップと、
    前記要求に対する前記応答を生成するように、カスタマイズ可能なテンプレートを実行するステップと、
    前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定するステップと、
    前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、前記キャッシュ可能なコンテンツの組をキャッシュに格納するステップと、
    前記応答を前記要求元に送信するステップと、
    を含む方法。
  2. 前記ビジネス・ロジック・インターフェースの出力が、キャッシュの少なくとも1つから取得され、前記ビジネス・ロジック・インターフェースから得られる、請求項1に記載の方法。
  3. カスタマイズ可能なテンプレートを実行する前記ステップは、
    前記応答がキャッシュ可能であるかどうかを判定するステップと、
    前記応答がキャッシュ可能であると判定されたことに応答して、前記キャッシュ内の前記要求に対応するキャッシュされたコンテンツの組を特定するステップと、
    前記キャッシュされたコンテンツの特定された組を取り出すステップ
    をさらに含み、
    前記応答は、前記キャッシュされたコンテンツの特定された組を含む、請求項1に記載の方法。
  4. 動的コンテンツの組を生成するようにテンプレート・フラグメントの組を実行するステップをさらに含み、前記動的コンテンツの組は、前記応答の動的部分を形成し、前記応答は、前記キャッシュされたコンテンツの組と前記動的コンテンツの組とを含む、請求項3に記載の方法。
  5. 前記要求に対する完全な応答が前記キャッシュに格納されていると判定されたことに応答して、前記カスタマイズ可能なテンプレートが実行されない、請求項1に記載の方法。
  6. 前記ビジネス・ロジック・インターフェースは、ウェブ・サービス・アプリケーションと関連するアプリケーション・プログラミング・インターフェースであり、前記応答は、前記アプリケーション・プログラミング・インターフェースの出力に基づいて生成される、請求項1に記載の方法。
  7. 前記ビジネス・ロジック・インターフェースに対する呼び出しを生成するために、前記ウェブ・サービス要求をウェブ・サービス・アプリケーションにマッピングするステップをさらに含む、請求項1に記載の方法。
  8. 前記ビジネス・ロジック・インターフェースの出力は、前記出力がキャッシュ可能であると判定されたことに応答して前記キャッシュに格納される、請求項1に記載の方法。
  9. 前記カスタマイズ可能なテンプレートを表すテキスト・ファイルを更新することによって前記応答のコンテンツを修正するステップをさらに含む、請求項1に記載のコンピュータに実装される方法。
  10. 前記応答をキャッシュすることを指定するキャッシュ・ポリシーが、前記テンプレートを表すテキスト・ファイルを更新することによって修正される、請求項1に記載のコンピュータに実装される方法。
  11. 前記キャッシュ可能なコンテンツは、フラグメント・キャッシュ・アプローチに従って前記キャッシュに格納される、請求項1に記載のコンピュータに実装される方法。
  12. 要求元からのウェブ・サービス要求に対する応答を生成するためコンピュータ・プログラムであって、
    前記ウェブ・サービス要求を受信したことに応答して、前記要求と関連するビジネス・ロジック・インターフェースを呼び出すステップと、
    前記要求に対する前記応答を生成するように、カスタマイズ可能なテンプレートを実行するステップと、
    前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定するステップと、
    前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して、前記キャッシュ可能なコンテンツの組をキャッシュに格納するステップと、
    前記応答を前記要求元に送信するステップと、
    をコンピュータに実行させる、コンピュータ・プログラム。
  13. 前記ビジネス・ロジック・インターフェースの出力が、キャッシュの少なくとも1つから取得され、前記ビジネス・ロジック・インターフェースから得られる、請求項12に記載のコンピュータ・プログラム。
  14. 前記応答がキャッシュ可能であるかどうかを判定するステップと、
    前記応答がキャッシュ可能であると判定されたことに応答して、前記キャッシュ内の前記要求に対応するキャッシュされたコンテンツの組を特定するステップと、
    前記キャッシュされたコンテンツの特定された組を取り出すステップ
    を、さらにコンピュータに実行させ、
    前記応答は、前記キャッシュされたコンテンツの特定された組を含む、請求項12に記載のコンピュータ・プログラム。
  15. 動的コンテンツの組を生成するようにテンプレート・フラグメントの組を実行するステップをさらにコンピュータに実行させ、前記動的コンテンツの組は、前記応答の動的部分を形成し、前記応答は、前記キャッシュされたコンテンツの組と前記動的コンテンツの組とを含む、請求項14に記載のコンピュータ・プログラム。
  16. 前記要求に対する完全な応答が前記キャッシュに格納されていると判定されたことに応答して、前記カスタマイズ可能なテンプレートが実行されない、請求項12に記載のコンピュータ・プログラム。
  17. 前記キャッシュ可能なコンテンツは、フラグメント・キャッシュ・アプローチに従って前記キャッシュに格納される、請求項12に記載のコンピュータ・プログラム。
  18. 前記カスタマイズ可能なテンプレートを表すテキスト・ファイルを更新することによって前記応答のコンテンツを修正するステップをさらにコンピュータに実行させる、請求項12に記載のコンピュータ・プログラム。
  19. 前記応答をキャッシュすることを指定するキャッシュ・ポリシーが、前記テンプレートを表すテキスト・ファイルを更新することによって修正される、請求項12に記載のコンピュータ・プログラム。
  20. 要求元からのウェブ・サービス要求に対する応答を生成するためのシステムであって、
    前記ウェブ・サービス要求を受信したことに応答して前記要求と関連するビジネス・ロジック・インターフェースを呼び出すウェブ・サービス・コントローラであって、前記インターフェースの出力を、キャッシュの少なくとも1つから取得し、前記ビジネス・ロジック・インターフェースから得ることができる、ウェブ・サービス・コントローラと、
    前記要求に対する前記応答を生成するようにカスタマイズ可能なテンプレートを実行し、前記応答がキャッシュ可能なコンテンツの組を含むかどうかを判定し、前記応答がキャッシュ可能なコンテンツの組を含むと判定されたことに応答して前記キャッシュ可能なコンテンツの組を前記キャッシュに格納する、応答作成エンジンと、
    前記応答を前記要求元に送信するウェブ・サービス・ランタイムと、
    を備えるシステム。
JP2006353278A 2006-01-24 2006-12-27 ウェブ・サービス要求をキャッシュする方法、システム、及びコンピュータ・プログラム Expired - Fee Related JP4868590B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/337984 2006-01-24
US11/337,984 US20070174420A1 (en) 2006-01-24 2006-01-24 Caching of web service requests

Publications (2)

Publication Number Publication Date
JP2007200311A true JP2007200311A (ja) 2007-08-09
JP4868590B2 JP4868590B2 (ja) 2012-02-01

Family

ID=38286855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006353278A Expired - Fee Related JP4868590B2 (ja) 2006-01-24 2006-12-27 ウェブ・サービス要求をキャッシュする方法、システム、及びコンピュータ・プログラム

Country Status (3)

Country Link
US (1) US20070174420A1 (ja)
JP (1) JP4868590B2 (ja)
CN (1) CN101035125A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011145735A (ja) * 2010-01-12 2011-07-28 Yahoo Japan Corp ウェブページ生成装置、及びウェブページの生成方法

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003058483A1 (en) 2002-01-08 2003-07-17 Seven Networks, Inc. Connection architecture for a mobile network
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
US20060288396A1 (en) * 2005-06-17 2006-12-21 Mike Trainor Adapting legacy software with an XML/XSL ISAPI
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US7464226B2 (en) * 2006-02-23 2008-12-09 Lars Andreas Reinertsen Fractional caching
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8146110B2 (en) * 2007-12-10 2012-03-27 Microsoft Corporation Service platform for in-context results
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US20090228804A1 (en) * 2008-03-05 2009-09-10 Microsoft Corporation Service Preview And Access From an Application Page
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US9258391B2 (en) * 2009-05-29 2016-02-09 Canon Kabushiki Kaisha Processing method and apparatus
CN101997854B (zh) * 2009-08-31 2013-09-18 阿里巴巴集团控股有限公司 一种提供数据服务的处理系统及方法
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
EP2599003B1 (en) 2010-07-26 2018-07-11 Seven Networks, LLC Mobile network traffic coordination across multiple applications
US9043366B2 (en) 2010-10-01 2015-05-26 International Business Machines Corporation High performance map editor for business analysts
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
EP2636268B1 (en) 2010-11-22 2019-02-27 Seven Networks, LLC Optimization of resource polling intervals to satisfy mobile device requests
WO2012094675A2 (en) 2011-01-07 2012-07-12 Seven Networks, Inc. System and method for reduction of mobile network traffic used for domain name system (dns) queries
GB2504411A (en) 2011-04-19 2014-01-29 Seven Networks Inc Shared resource and virtual resource management in a networked environment
WO2012149221A2 (en) 2011-04-27 2012-11-01 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
GB2505585B (en) 2011-04-27 2015-08-12 Seven Networks Inc Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
EP2702524B1 (en) * 2011-04-27 2017-10-04 Seven Networks, LLC Detection and filtering of malware based on traffic observations made in a distributed mobile traffic management system
US8984581B2 (en) 2011-07-27 2015-03-17 Seven Networks, Inc. Monitoring mobile application activities for malicious traffic on a mobile device
US8918503B2 (en) 2011-12-06 2014-12-23 Seven Networks, Inc. Optimization of mobile traffic directed to private networks and operator configurability thereof
EP2789137A4 (en) 2011-12-06 2015-12-02 Seven Networks Inc SYSTEM OF REDUNDANT GROUPED MACHINES FOR PROVISION OF FAILSAFE MECHANISMS FOR MOBILE TRANSPORT MANAGEMENT AND NETWORK RESOURCE STORAGE
WO2013086455A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
WO2013086447A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9021021B2 (en) 2011-12-14 2015-04-28 Seven Networks, Inc. Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system
US8909202B2 (en) 2012-01-05 2014-12-09 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US9369544B1 (en) 2012-02-14 2016-06-14 Google Inc. Testing compatibility with web services
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US10263899B2 (en) 2012-04-10 2019-04-16 Seven Networks, Llc Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9026587B2 (en) * 2012-10-10 2015-05-05 Ca, Inc. System and method for invoking application commands with web service calls
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US20140177497A1 (en) 2012-12-20 2014-06-26 Seven Networks, Inc. Management of mobile device radio state promotion and demotion
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9369332B1 (en) * 2013-02-27 2016-06-14 Amazon Technologies, Inc. In-memory distributed cache
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
CN105637919A (zh) 2013-06-11 2016-06-01 七网络有限责任公司 优化无线网络中的保活和其他后台流量
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US10108744B2 (en) * 2014-10-07 2018-10-23 Oracle International Corporation Administrative tool and physical execution plan interface for plug-in architecture of business intelligence platform using data source cartridges
US10437924B2 (en) * 2015-12-22 2019-10-08 Oath Inc. Size-optimized data interchange method and system
US10262006B2 (en) 2016-04-29 2019-04-16 Microsoft Technology Licensing, Llc Contextually triggered entry point
CN114221995B (zh) * 2021-11-11 2024-04-09 中国建设银行股份有限公司 服务调用方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003271441A (ja) * 2002-03-07 2003-09-26 Internatl Business Mach Corp <Ibm> データ処理方法、これを用いたネットワークサービスシステム及びプログラム
JP2004348743A (ja) * 2003-05-23 2004-12-09 Microsoft Corp ポストキャッシュ置換
JP2005513640A (ja) * 2001-12-19 2005-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション フラグメント・リンキングおよびフラグメント・キャッシングの方法およびシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009563A1 (en) * 1997-07-31 2003-01-09 At&T Corp. Method for client-side inclusion of data elements
US6076108A (en) * 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6640249B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
CA2316003C (en) * 2000-08-14 2009-02-03 Ibm Canada Limited-Ibm Canada Limitee Accessing legacy applications from the internet
US20020026507A1 (en) * 2000-08-30 2002-02-28 Sears Brent C. Browser proxy client application service provider (ASP) interface
US20030051142A1 (en) * 2001-05-16 2003-03-13 Hidalgo Lluis Mora Firewalls for providing security in HTTP networks and applications
WO2003014927A2 (en) * 2001-08-08 2003-02-20 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
EP1588230A4 (en) * 2003-01-10 2008-05-07 Nexaweb Technologies Inc NETWORK ORIENTED COMPUTING SYSTEM AND METHOD
US20040167961A1 (en) * 2003-02-26 2004-08-26 Microsoft Corporation Fragment response cache
US7664826B2 (en) * 2003-05-01 2010-02-16 Oracle International Corporation System and method for caching type information for un-typed web service requests
US7093073B2 (en) * 2003-06-26 2006-08-15 International Business Machines Corporation Systems and methods for adjusting caching policies for web service requests
US7543041B2 (en) * 2003-11-12 2009-06-02 International Business Machines Corporation Pattern based web services using caching
US8554876B2 (en) * 2004-01-23 2013-10-08 Hewlett-Packard Development Company, L.P. User profile service
US20050192962A1 (en) * 2004-02-26 2005-09-01 Patricia Furrer Apparatus, system, method for enabling web-applications to access enterprise managed data
US7853961B2 (en) * 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US7716353B2 (en) * 2005-12-21 2010-05-11 Bmc Software, Inc. Web services availability cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005513640A (ja) * 2001-12-19 2005-05-12 インターナショナル・ビジネス・マシーンズ・コーポレーション フラグメント・リンキングおよびフラグメント・キャッシングの方法およびシステム
JP2003271441A (ja) * 2002-03-07 2003-09-26 Internatl Business Mach Corp <Ibm> データ処理方法、これを用いたネットワークサービスシステム及びプログラム
JP2004348743A (ja) * 2003-05-23 2004-12-09 Microsoft Corp ポストキャッシュ置換

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011145735A (ja) * 2010-01-12 2011-07-28 Yahoo Japan Corp ウェブページ生成装置、及びウェブページの生成方法

Also Published As

Publication number Publication date
CN101035125A (zh) 2007-09-12
JP4868590B2 (ja) 2012-02-01
US20070174420A1 (en) 2007-07-26

Similar Documents

Publication Publication Date Title
JP4868590B2 (ja) ウェブ・サービス要求をキャッシュする方法、システム、及びコンピュータ・プログラム
JP4208081B2 (ja) 複数のウェブサイトにパーソナライズされた価値を追加するためのシステム、ウェブサーバ、方法およびプログラム
TWI521357B (zh) 經由網頁瀏覽器輸入內容至應用程式
US6996599B1 (en) System and method providing multi-tier applications architecture
EP1923798B1 (en) Clickable placeholder images for simulating web page code unsupported on mobile devices
US9426200B2 (en) Updating dynamic content in cached resources
JP5137479B2 (ja) 異機種環境においてメッセージのサーバ・ベースのレンダリングを管理するためにコンピュータを利用する方法およびシステム
JP4818253B2 (ja) ウェブ・ページの適時更新
CN111801694A (zh) 机器学习存储库服务
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
CN103841188B (zh) 一种浏览器中Cookie信息的处理方法和装置
US20090254926A1 (en) Registering network applications with an api framework
JP2004348743A (ja) ポストキャッシュ置換
JP2005004772A (ja) 外部プログラムに基づくテーマを使用するWebページレンダリング機構
US8539026B2 (en) Source identification for multipart content validation
US20080288955A1 (en) Method and System for Managing Preferences in a Client Portlet Container
US10574724B2 (en) Automatic discovery of management nodes and generation of CLI using HA module
CN107315646B (zh) 页面组件间的数据流向控制方法和装置
US20090254670A1 (en) Providing access to network applications for standardized clients
CN106933890A (zh) 一种静态化页面的处理方法及装置
US9071570B2 (en) Method and apparatus to select and deliver portable portlets
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
JP2009054151A (ja) 通信メッセージ・インスタンス投入方法、データ・インスタンス投入方法、通信メッセージ・インスタンス投入装置、および、コンピュータ読取可能媒体
US10341415B2 (en) Electronic information tree-based routing
JP4554723B2 (ja) ネットワーク応答バッファリング動作の管理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110920

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110920

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110922

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111104

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111104

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111114

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees