JP2014512035A - 複数のソフトウェアアプリケーションを必要とするセッションを提供するための方法およびシステム - Google Patents

複数のソフトウェアアプリケーションを必要とするセッションを提供するための方法およびシステム Download PDF

Info

Publication number
JP2014512035A
JP2014512035A JP2013558439A JP2013558439A JP2014512035A JP 2014512035 A JP2014512035 A JP 2014512035A JP 2013558439 A JP2013558439 A JP 2013558439A JP 2013558439 A JP2013558439 A JP 2013558439A JP 2014512035 A JP2014512035 A JP 2014512035A
Authority
JP
Japan
Prior art keywords
application server
user
transaction
affinity
application
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
JP2013558439A
Other languages
English (en)
Other versions
JP6087847B2 (ja
Inventor
ピエール・ドール
ディートマー・ファウザー
ジェローム・ダニエル
ステファーヌ・モンベル
シリル・ドゥゲ
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.)
Amadeus SAS
Original Assignee
Amadeus SAS
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 Amadeus SAS filed Critical Amadeus SAS
Publication of JP2014512035A publication Critical patent/JP2014512035A/ja
Application granted granted Critical
Publication of JP6087847B2 publication Critical patent/JP6087847B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0603Catalogue ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/14Travel agencies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5016Session

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Primary Health Care (AREA)
  • Development Economics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)

Abstract

分散環境でユーザセッションの一貫したビューをユーザに提供するための、コンピュータによって実施される方法を開示する。この方法は、このユーザセッションについてのユーザコンテキストの部分を記憶するためのデータ記憶手段をアプリケーションサーバ(A1、A2、…)に提供し、それにより、各ユーザセッションにつき、ユーザセッションとのアフィニティをそれぞれが有するアプリケーションサーバ(A3、B8、C4)のセットを定義することを含む。各アプリケーションサーバは、このユーザセッションに必要とされるソフトウェアアプリケーションを処理するように構成される。ルーティング手段(10、11、12)で、少なくとも1つのデータプロセッサを用いて、○ユーザからの要求を受け取り、この要求を満たすために、ユーザセッションとのアフィニティを有するアプリケーションサーバ(A1、A2、…)に向けてユーザセッションのトランザクションをルーティングするステップと、○アフィニティキーを含むように構成された相関レコード(DCX)をユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについてユーザセッションとのアフィニティを有するアプリケーションサーバを識別するものであるステップと、○相関レコードをトランザクションと共に伝搬し、それにより、ルーティング手段(10、11、12)が、このユーザセッションのユーザコンテキストにリンクされトランザクションの処理に関連するソフトウェアアプリケーションを処理するアプリケーションサーバ(A3、B8、C4)をターゲットにすることができるようにするステップとを実施する。

Description

本発明は一般に、分散コンピューティング環境で、開かれている各セッションの一貫したビューをソフトウェアアプリケーションのユーザに提供する方法およびシステムに関する。より詳細には、本発明は、非常に多数のユーザセッションが同時におそらく開かれ、各ユーザセッションが、完了するために様々なソフトウェアアプリケーションの協働を必要とする可能性がある場合の、方法およびシステムに関する。
日常生活で電子サービスを使用する人々の数が日々増加するのに伴い、これらの電子サービスを提供するシステムは、数が常に増加するユーザセッションを処理することが必要とされる。加えて、ユーザは今や、送達される情報およびサービスがますます効率的かつ洗練されたものになることを期待している。そこで、この目標を達成するために、各ユーザセッションのトランザクションが複数の異なるソフトウェアアプリケーションによって処理される必要がしばしばある。
例えば、旅行観光産業では、予約システムは、フライトの空席のチェックを要求する、同時に開かれた何万ものユーザセッションを処理しなければならない。ユーザからこのようなユーザセッションに提供される情報は通常、フライトの出発日、出発地、および到着地を含む。これらはこのセッションについてのユーザコンテキストの一部をなすが、ユーザコンテキストはまた、空席情報、価格、フライト参照など、セッションによって処理される様々なトランザクションから収集されるデータも含む。
十分なスループットを維持するために、いくつかの解決法は、非常に強力な単一の処理ユニットを有する集中コンピューティングシステムに基づく。しかし、これらの集中システムは、新しい追加アプリケーションを配置することと処理能力を増大させることの両方の点で、ほとんどスケーラブルでない。加えて、これらのシステムは、集中処理ユニットの障害が全般的な停止につながることがあるため、信頼性がない。
他の解決法は、総処理能力が多数の分散マシンに広がる、分散システムに依拠する。しかし、これらの既存の分散システム中では、所与のユーザセッション専用に充てられた全てのトランザクションが、やはり単一のマシンによって管理される。
この場合、スケーラビリティは、単純にマシンの数を増加させることによって達成され、したがって、システムの全体的な処理能力を容易に適合させて、スループットのニーズを満たすことができる。
しかし、これらの分散システムでは、新しいサービスの統合を管理することは難しいままである。特に、新しいサービスが、ユーザ側から見た一貫性を常に維持しながら、すでにロードされたソフトウェアアプリケーションと対話するように意図された新しいソフトウェアアプリケーションに基づくときには、そうである。
このため、ユーザ側から見て一貫性があり統一されたビューを維持できるためには、新しいソフトウェアアプリケーションがあらゆる単一マシンにロードされなければならない。しかしこれは、時間がかかる操作である上に、ロードするステップが分散システム全体にわたって完了するまでは、全てのユーザ間の一貫性を実際に達成することはできない。
したがって、本発明の一般的な目的は、処理能力のスケーラビリティを可能にし、新しいサービスの統合を容易にしながら、セッションの統一されたビューをユーザに提供することのできる、方法およびシステムについて述べることである。
本発明の実施形態により、前述および他の目的が少なくとも部分的に達成され、他の利点が実現される。
本発明は、コンピュータ化されたユーザセッションの統一されたビューをユーザに提供する方法に関し、ユーザセッションは、システムによって処理される複数のソフトウェアアプリケーションの動作を必要とし、システムはユーザとクライアント/サーバモードで動作し、複数のソフトウェアアプリケーションはそれぞれ、ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされる。この方法は、少なくとも1つのプロセッサを用いて実施される以下のステップ、すなわち、
- 各ユーザセッションにつき、ユーザコンテキストの少なくとも一部分にリンクされた各ソフトウェアアプリケーションが、このソフトウェアアプリケーションをそれぞれが独立して処理するアプリケーションサーバのグループのうちの専用アプリケーションサーバによって処理され、それにより、各セッションにつき、ユーザセッションとのアフィニティ(affinity)をそれぞれが有するアプリケーションサーバのセットが定義されるステップと、
- ユーザセッションとのアフィニティを有する各アプリケーションサーバに、前記各アプリケーションサーバによって処理されるアプリケーションソフトウェアにリンクされたユーザコンテキストの部分を記憶するように構成されたデータ記憶手段を提供するステップと、
- 1つまたは複数のルーティング手段において、ユーザからの要求を少なくとも受け取り、この要求を満たすために、ユーザセッションとのアフィニティを有するアプリケーションサーバに少なくとも向けてユーザセッションのトランザクションをルーティングするステップであって、1つまたは複数のルーティング手段のうちの1つが、ユーザセッションを担当する主要ルーティング手段であるステップとを含み、トランザクションをルーティングするステップが、
○ アフィニティキー(Affinity Key)を含むように構成された相関レコード(DCX)をユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについてユーザセッションとのアフィニティを有するアプリケーションサーバを示すものであるステップと、
○ 相関レコードを各トランザクションと共に伝搬し、それにより、ルーティング手段が、相関レコードを読み取って、ユーザセッションとのアフィニティを有しトランザクションの処理に関連するソフトウェアアプリケーションを処理するアプリケーションサーバをターゲットにすることができるようにするステップとを含むことを特徴とする。
本発明の別の態様は、ユーザにユーザセッションを提供する方法に関し、ユーザセッションは、ユーザとクライアント/サーバモードで動作するシステムによって処理される複数のソフトウェアアプリケーションの動作を必要とし、ソフトウェアアプリケーションのうちの少なくとも1つは、ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされる。この方法は、各ユーザセッションにつき、各ソフトウェアアプリケーションが、前記各ソフトウェアアプリケーションをそれぞれが独立して処理するアプリケーションサーバのグループのうちの1つのアプリケーションサーバによって処理されること、および、それにより、ユーザコンテキストの部分にリンクされたソフトウェアアプリケーションを処理する各アプリケーションサーバが、ユーザコンテキストにリンクされ、すなわちセッションとのアフィニティを有し、リンク先のユーザコンテキストの部分を記憶するように構成されたデータ記憶手段を提供されることを特徴とする。この方法は、少なくとも1つのプロセッサを用いて実施されるステップであって、アフィニティキーを含むように構成された相関レコード(DCX)をユーザセッションに割り当てるステップを含み、各アフィニティキーは、所与のソフトウェアアプリケーションおよび前記ユーザセッションについてターゲットにしなければならないアプリケーションサーバを示す。この方法はまた、1つまたは複数のルーティング手段のうちの1つにおいてプロセッサを介して実施される以下のステップを含み、1つのルーティング手段は、ユーザセッションを担当する主要ルーティング手段である。すなわち、トランザクションを受け取るステップと、トランザクションによって呼び出されるソフトウェアアプリケーションを決定するステップと、ユーザコンテキストにリンクされたアプリケーションサーバにルーティングされることをトランザクションが必要とするかどうか判定するステップとを含み、
○ ユーザコンテキストにリンクされたアプリケーションサーバにルーティングされることをトランザクションが必要とする場合は、
- 相関レコードが、呼び出されたソフトウェアアプリケーションについてのいずれかのアフィニティキーを含む場合は、アフィニティキーに従ってトランザクションをルーティングし、
- 相関レコードが、呼び出されたソフトウェアアプリケーションについてのアフィニティキーを含まない場合は、ルーティング手段のうちの1つが、呼び出されたソフトウェアアプリケーションを処理するアプリケーションサーバのグループのうちのアプリケーションサーバを選択し、選択されたアプリケーションサーバを示すアフィニティキーで相関レコードを拡充し、選択されたアプリケーションサーバにトランザクションをルーティングし、主要ルーティング手段は、相関レコードを記憶する。
任意選択で、かつ好ましくは、ユーザコンテキストにリンクされたアプリケーションサーバにルーティングされることをトランザクションが必要としない場合は、ルーティング手段は、呼び出されたソフトウェアアプリケーションを処理するアプリケーションサーバのグループのうちでアプリケーションサーバを選択し、選択されたアプリケーションサーバにトランザクションをルーティングする。
任意選択で、かつ好ましくは、トランザクションを受け取るステップは、ユーザからトランザクションを受け取ることを含む。任意選択で、トランザクションを受け取るステップは、ソフトウェアアプリケーションからトランザクションを受け取ることを含む。
本発明の別の態様は、ソフトウェアプログラム命令を含む非一時的なコンピュータ可読記録媒体に関する。ソフトウェアプログラム命令が少なくとも1つのデータプロセッサによって実行されると、前記請求項のいずれか一項における方法の実行を含む動作が実施される。
別の態様によれば、本発明は、前述の特徴およびステップのいずれか1つにおける方法を実行するように構成された手段を備えるシステムに関する。
本発明の別の態様は、ユーザにユーザセッションを提供するためのシステムに関し、このシステムは複数のソフトウェアアプリケーションを備え、ユーザセッションを提供するためにソフトウェアアプリケーションの動作が必要とされ、ソフトウェアアプリケーションのうちの少なくとも1つは、ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされる。このシステムは、
○ 少なくともプロセッサをそれぞれが備える複数のマシンと、
○ それぞれがマシン上で稼動する複数のアプリケーションサーバであって、このユーザセッションについて、各ソフトウェアアプリケーションが、このソフトウェアアプリケーション専用に充てられたアプリケーションサーバのグループのうちの1つのアプリケーションサーバによって処理され、それにより、各ユーザセッションにつき、ユーザセッションとのアフィニティをそれぞれが有するアプリケーションサーバのセットが定義されるように、それぞれが構成されたアプリケーションサーバと、
○ ユーザコンテキストの部分にリンクされたソフトウェアアプリケーションを処理する各アプリケーションサーバに関連するデータ記憶手段であって、前記記憶手段に関連するアプリケーションサーバによって処理されるソフトウェアアプリケーションにリンクされたユーザコンテキストの部分を記憶するようにそれぞれが構成されたデータ記憶手段と、
○ 1つまたは複数のルーティング手段とを備え、これらのルーティング手段のうちの主要ルーティング手段がユーザセッションを担当するように構成され、1つまたは複数のルーティング手段が、ユーザからの要求を少なくとも受け取り、この要求を満たすために、ユーザセッションのトランザクションを、ユーザセッションとのアフィニティを有するアプリケーションサーバに向けてルーティングするように構成され、ルーティング手段が、トランザクションステップが
○ アフィニティキーを含むように構成された相関レコード(DCX)をユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについてユーザセッションとのアフィニティを有するアプリケーションサーバを示すものであるステップと、
○ 相関レコードを各トランザクションと共に伝搬し、それにより、ルーティング手段が、相関レコードを読み取って、ユーザセッションとのアフィニティを有しトランザクションの処理に関連するソフトウェアアプリケーションを処理するアプリケーションサーバをターゲットにすることができるようにするステップとを含むように構成されたことを特徴とする。
本発明の実施形態の前述および他の態様は、後続の詳細な説明を添付の図面と共に読めば、より明白になる。
本発明の一実施形態によるシステムの例を示す図である。 例示的な使用事例が描かれた、本発明の別の実施形態によるシステムの例を示す図である。 図2のシステムと、ユーザコンテキストの部分の寿命がユーザセッションの寿命にリンクされる必要があるステップを示す別の例示的な使用事例とを示す図である。 アフィニティ初期化ステップを示す、システムのいくつかの構成要素の単純化された高レベルブロック図である。 例示的な使用事例を示す、システムのいくつかの構成要素の単純化された高レベルブロック図である。
いくつかの有利な特徴およびステップについて以下に述べる。次いで、いくつかの例示的な実施形態および使用事例について、図面に関してさらに詳述する。
上に示したように、本発明は、コンピュータ化されたユーザセッションの統一されたビューをユーザに提供する方法に関し、ユーザセッションは、システムによって処理される複数のソフトウェアアプリケーションの動作を必要とし、システムはユーザとクライアント/サーバモードで動作し、複数のソフトウェアアプリケーションはそれぞれ、ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされる。この方法は、少なくとも1つのプロセッサを用いて実施される以下のステップ、すなわち、
- 各ユーザセッションにつき、ユーザコンテキストの少なくとも一部分にリンクされた各ソフトウェアアプリケーションが、このソフトウェアアプリケーションをそれぞれが独立して処理するアプリケーションサーバのグループのうちの専用アプリケーションサーバによって処理され、それにより、各セッションにつき、ユーザセッションとのアフィニティをそれぞれが有するアプリケーションサーバのセットが定義されるステップと、
- ユーザセッションとのアフィニティを有する各アプリケーションサーバに、前記各アプリケーションサーバによって処理されるアプリケーションソフトウェアにリンクされたユーザコンテキストの部分を記憶するように構成されたデータ記憶手段を提供するステップと、
- 1つまたは複数のルーティング手段において、ユーザからの要求を少なくとも受け取り、この要求を満たすために、ユーザセッションとのアフィニティを有するアプリケーションサーバに少なくとも向けてユーザセッションのトランザクションをルーティングするステップであって、1つまたは複数のルーティング手段のうちの1つが、ユーザセッションを担当する主要ルーティング手段であるステップとを含み、トランザクションをルーティングするステップは、
○ アフィニティキーを含むように構成された相関レコード(DCX)をユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについてユーザセッションとのアフィニティを有するアプリケーションサーバを示すものであるステップと、
○ 相関レコードを各トランザクションと共に伝搬し、それにより、ルーティング手段が、相関レコードを読み取って、ユーザセッションとのアフィニティを有しトランザクションの処理に関連するソフトウェアアプリケーションを処理するアプリケーションサーバをターゲットにすることができるようにするステップとを含む。
したがって、各サービスグループが、独立したアプリケーションサーバセット上で処理され、各アプリケーションサーバは、独立したマシンによっておそらく稼動され、サービスグループに関係するユーザコンテキストの部分は、このサービスグループを担当するアプリケーションサーバのうちの1つの上でローカルに記憶され、各ユーザは、システムが1つだけのアプリケーションサーバであるかのように、システムと対話する。DCXは、システムに入来する各トランザクションに追加されて、おそらく多数であるサーバにわたって広がる複数のユーザコンテキストの部分を相関させる。アフィニティキーは、所与のサービスセットについて、どのアプリケーションサーバ(およびマシン)がユーザコンテキストの部分を保持しているかを識別するための特定の情報である。次いで、アフィニティキーは、ユーザのコンテキストを管理する特定のアプリケーションサーバにトランザクションをルーティングするために、ESBによって使用される。
したがって、本発明は、システムのモジュール性を保持して処理容量の増大を容易にするとともに、新しいサービス/製品の容易な統合を可能にして、一貫性があり統一されたユーザコンテキストのビューをユーザに提供するための、解決法を開示する。
本発明はまた、様々なソフトウェアアプリケーションを含む大域的な製品の各下位部分に割り振られたリソースをより容易に制御できるようにするので、操作性の点で大きな利点をもたらす。本発明はまた、所与のマシンまたは1組のマシン上の停止が他のマシンに著しく影響を及ぼすことがないので、大域的な停止のリスクを最小限に抑えることも可能にする。
全てのアプリケーションサーバは、相互から独立している。アプリケーションサーバは、相互を知らない。ルーティング手段によって読み取られる相関レコードのみが、異なるソフトウェアアプリケーションを処理する2つのアプリケーションサーバ間で会話を確立するのを可能にする。したがって、アフィニティキーは、相関レコードに追加される参照であり、アフィニティキーにより、ルーティング手段は、ユーザセッションにリンクされたユーザコンテキストの部分を保持しトランザクションの処理に関連するアプリケーションサーバを、ターゲットにすることができる。
任意選択で、本発明は、以下の非限定的な特徴およびステップのうちの少なくとも1つを含んでもよい。
1つまたは複数のルーティング手段は、あらゆる単一アプリケーションサーバにどのように到達するかを知っているように構成される。
したがって、1つまたは複数のルーティング手段は、各アプリケーションサーバの存在と、各アプリケーションサーバがどこに位置するかとを知っている。1つまたは複数のルーティング手段はまた、所与のソフトウェアアプリケーションがどのアプリケーションサーバ上で処理されるかも知っている。
好ましくは、相関レコードは、主要ルーティング手段に関連するデータ記憶手段に記憶される。
主要ルーティング手段は、ユーザ要求を受け取るルーティング手段である。アフィニティキーは、ルーティング手段によって設定される。
ルーティング手段は、エンタープライズサービスバス(ESB)である。
ルーティング手段は、ソフトウェアアプリケーションを処理するアプリケーションサーバからのトランザクションと、セッションに割り当てられた相関レコードとを受け取り、トランザクションを、別のソフトウェアアプリケーションの処理に専用に充てられた別のアプリケーションサーバにルーティングする。トランザクションをルーティングするステップは、ルーティング手段が相関レコードを読み取るステップを含む。
相関レコードが前記ルーティング手段において受け取られた際、トランザクションがルーティングされなければならない前記別のアプリケーションサーバを示すアフィニティキーを相関レコードが含まない場合は、前記ルーティング手段がトランザクションを別のアプリケーションサーバにルーティングするステップは、前記別のソフトウェアアプリケーションにリンクされたユーザコンテキストの部分の寿命がセッションの寿命にリンクされなければならないかどうかをルーティング手段が判定する追加ステップを含む。
相関レコードが前記ルーティング手段において受け取られた際、トランザクションがルーティングされなければならない前記別のアプリケーションサーバを示すアフィニティキーを相関レコードが含まない場合であって、前記別のソフトウェアアプリケーションにリンクされたユーザコンテキストの部分の寿命がユーザセッションの寿命にリンクされなければならない場合は、前記ルーティング手段がトランザクションを別のアプリケーションサーバにルーティングするステップは、
- 前記ルーティング手段がアフィニティ初期化の要求を主要ルーティング手段に送る追加ステップと、
- 次いで主要ルーティング手段が、
○ 前記別のソフトウェアアプリケーションを処理するアプリケーションサーバのグループのうちで前記別のアプリケーションサーバを選択し、
○ 前記別のアプリケーションサーバにアフィニティ初期化のメッセージを送り、
○ 前記別のアプリケーションサーバからアフィニティ初期化の確認を受け取り、
○ 前記別のアプリケーションサーバを示すアフィニティキーで相関レコードを拡充し、
○ 拡充された相関レコードを前記ルーティング手段に送る追加ステップと、
- 次いで前記ルーティング手段が、拡充された相関レコードのアフィニティキーに従って前記別のアプリケーションサーバにトランザクションをルーティングする追加ステップとを含む。
相関レコードが前記ルーティング手段において受け取られた際、トランザクションがルーティングされなければならない前記別のアプリケーションサーバを示すアフィニティキーを相関レコードが含まない場合であって、前記別のソフトウェアアプリケーションにリンクされたユーザコンテキストの部分の寿命がセッションの寿命にリンクされなくてよい場合は、前記ルーティング手段がトランザクションを前記別のアプリケーションサーバにルーティングするステップは、前記ルーティング手段が、トランザクションを達成するために処理しなければならない前記別のソフトウェアアプリケーションを処理するアプリケーションサーバのグループのうちで前記別のアプリケーションサーバを選択し、前記別のアプリケーションサーバにトランザクションをルーティングする追加ステップを含む。
相関レコードは、前記別のアプリケーションサーバを示すアフィニティキーで拡充されるのが好ましい。
相関レコードは前記ルーティング手段によって拡充され、相関レコードは、返信パスを介して主要ルーティング手段に返されて、主要ルーティング手段に関連するデータ記憶手段に記憶される。相関レコードを拡充するルーティング手段と、主要ルーティング手段とは、別個である。代替の一実施形態によれば、相関レコードを拡充するルーティング手段と、主要ルーティング手段とは、同じである。
相関レコードが前記ルーティング手段において受け取られた際、トランザクションがルーティングされなければならない前記別のアプリケーションサーバを示すアフィニティキーを相関レコードがすでに含む場合は、前記ルーティング手段は、アフィニティキーに従って前記アプリケーションサーバにトランザクションをルーティングする。
アプリケーションサーバは、ルーティング手段からトランザクションを受け取り、トランザクションの処理を介してユーザコンテキストの部分を生成し、前記アプリケーションサーバに提供されたデータ記憶手段にユーザコンテキストの部分を記憶する。
アプリケーションサーバは、前記アプリケーションサーバからユーザコンテキストの前記部分を取り出すのを可能にするアプリカティブコンテキストキー(Applicative Context Key)で相関レコードを拡充する。
したがって、アプリカティブコンテキストキーは、ソフトウェアアプリケーションにリンクされたユーザコンテキストの前記部分が前記アプリケーションサーバ上のどこに位置するかを示す参照である。
アプリカティブコンテキストキーで拡充された相関レコードは、返信パスを介して主要ルーティング手段に返送され、主要ルーティング手段に関連するデータ記憶手段に記憶される。
前記ユーザセッションに関係するさらに別のトランザクションが前記アプリケーションサーバで受け取られると、前記アプリケーションサーバは、アプリカティブコンテキストキーに基づいて、ユーザコンテキストの前記部分を前記記憶手段中で突き止める。次いで、ユーザコンテキストの前記部分をさらに取り出して処理することができる。これにより、ユーザコンテキストの全ての部分を、それがどこに位置しようと容易に取り出すことができる。
相関レコードは、各トランザクションと共に伝搬される。相関レコードは、ルーティング手段によってアフィニティキーで拡充され、それによりルーティング手段は、ユーザセッションのコンテキストの部分を保持するアプリケーションサーバをターゲットにすることができる。相関レコードはまた、アプリケーションサーバによってアプリカティブコンテキストキーで拡充され、それにより各アプリケーションサーバは、記憶手段に記憶されたユーザコンテキストの部分を取り出すことができる。新しいアフィニティキーまたは新しいアプリカティブコンテキストキーで相関レコードが拡充される度に、相関レコードは主要ルーティング手段に返される。
ソフトウェアアプリケーションにリンクされたユーザコンテキストの部分の寿命がユーザセッションの寿命にリンクされなければならない場合は、ユーザセッションがアクティブである限り、主要ルーティング手段と、前記ソフトウェアアプリケーションを処理するアプリケーションサーバとの間で、ステートフルな会話が開いている。このステートフルな会話は、ユーザセッションが終わると自動的に閉じられる。
ユーザセッションがアクティブである限り、主要ルーティング手段は、ユーザコンテキストの前記部分が記憶されたままでなければならないことを、前記アプリケーションサーバに定期的に示すのが有利である。
主要ルーティング手段は、前記別のソフトウェアアプリケーションにリンクされたユーザコンテキストの前記部分を削除してよいことを、前記アプリケーションサーバに示す。
ソフトウェアアプリケーションにリンクされたユーザコンテキストの部分は、ユーザによって、かつ/または、ユーザコンテキストの前記部分を記憶するデータ記憶手段を備えるアプリケーションサーバにリンクされたソフトウェアアプリケーションによって、生成されてよい。ソフトウェアアプリケーションにリンクされたユーザコンテキストの部分はまた、このソフトウェアアプリケーションによって必要とされるかまたは生成されてよい。
所与のアプリケーションサーバの各データ記憶手段は、別のアプリケーションサーバのデータ記憶手段とは別個である。
アプリケーションサーバは、プロセッサとデータ記憶手段とを備えるマシン上で稼動する。一実施形態によれば、少なくとも複数のアプリケーションサーバが、同じマシン上で稼動する。別の実施形態によれば、1つのマシンにつき、1つの単一アプリケーションサーバが稼動する。
典型的には、セッションは、旅行製品の入手可能性をチェックすること、旅行製品をブッキングすること、旅行製品の支払いをすることのうちの、少なくとも1つを可能にする。例えば、ユーザコンテキストの部分は、旅行製品の入手可能性に関係する場合がある。典型的には、旅行製品は、フライト、鉄道、またはボート輸送の、チケットである。ユーザコンテキストの部分はまた、旅行の乗客名簿(PNR、passenger name record)に関係する場合もある。
本発明のコンテキストでは、ユーザセッションは、ユーザに少なくともサービスが提供される場合のセッションと考えることができ、サービスは、1つまたは複数のソフトウェアアプリケーションが処理されることを必要とする。
例えば、ユーザセッションの間、ユーザは、鉄道乗車券の入手可能性情報に関係するサービス、および航空券の入手可能性情報に関係するサービスにアクセスする。これらの各サービスは、ソフトウェアアプリケーションの動作を必要とする。ソフトウェアアプリケーションは例えば、出発日および/または出発地および/または到着地に関する入力をユーザから受け取るためのソフトウェアアプリケーション、ユーザ要求のプロトコルを別のプロトコルに変換するためのソフトウェアアプリケーション、鉄道在庫データベースから鉄道に関する入手可能性データを取り出すためのソフトウェアアプリケーション、航空会社在庫データベースから入手可能性データを取り出すためのソフトウェアアプリケーションなどである。
図1に示すように、システムは、ユーザからの要求を受け取るルーティング手段を少なくとも備える。ルーティング手段は、エンタープライズサービスバスであることが好ましい。別法として、ルーティング手段は、トランザクションを適切なアプリケーションサーバにルーティングできるルータまたはいずれか他の手段であってもよい。以下では、ルーティング手段をESBと呼ぶ。その性質は、エンタープライズサービスバス、ルータなど、何であってもよい。
各ユーザセッションにつき、1つのESBがそのセッションを担当する。このESBを、主要ESBと呼ぶ。主要ESBは、ユーザからの要求を受け取るESBであることが好ましい。
システムは、複数のマシンを備えることが好ましい。各マシンは、少なくともアプリケーションサーバを稼動する処理手段を少なくとも備えるハードウェアデバイスである。マシンのうちの少なくともいくつかは、データ記憶手段も備える。少なくともアプリケーションサーバは、マシン上で稼動する。アプリケーションサーバは、処理手段を使用する。アプリケーションサーバのうちの少なくともいくつかは、データ記憶手段も使用する。したがって、アプリケーションサーバは、処理手段、および最終的にはデータ記憶手段にリンクされる。
特定の一実施形態によれば、単一のマシン上で、複数のアプリケーションサーバが稼動する。各アプリケーションサーバは、それ自体のプロセッサ手段、および最終的にはそれ自体の最終的なデータ記憶手段を使用することができる。別法として、複数のアプリケーションサーバが、同じプロセッサ、および最終的には同じデータ記憶手段を共有することもできる。
別の実施形態によれば、所与のマシンに対して、1つのアプリケーションサーバのみが稼動する。したがって、この別の実施形態によれば、マシンにトランザクションをルーティングすることはまた、以下の記述においては、アプリケーションサーバにトランザクションをルーティングすることを意味することになる。
各アプリケーションサーバは、ソフトウェアアプリケーションを処理する。
有利にも、同じソフトウェアアプリケーションが、複数のアプリケーションサーバによって独立して処理され、これらのアプリケーションサーバは、同じマシン上で、または異なるマシン上で稼動する。
システムは、プラットフォームと呼ぶこともできる。
アプリケーションサーバは、グループ20、30、40、50に編成される。
同じアプリケーションサーバグループのうちの全てのアプリケーションサーバは、同じソフトウェアアプリケーションを処理する。例えば、グループ20の各アプリケーションサーバA1、A2、...、A12は、ソフトウェアアプリケーションAを処理する。グループ30の各アプリケーションサーバB1、B2、...、B8は、ソフトウェアアプリケーションBを処理する。グループ40の各アプリケーションサーバC1、C2、C3は、ソフトウェアアプリケーションCを処理する。
所与のセッションに対して、ソフトウェアアプリケーション1つにつき動作するアプリケーションサーバは1つだけである。したがって、同じソフトウェアアプリケーションを処理するアプリケーションサーバのグループのうち、1つのアプリケーションサーバが、この所与のセッション専用に充てられる。
上に示したように、データを記憶する必要のある各アプリケーションサーバには、データ記憶手段が提供される。あるセッション専用に充てられたアプリケーションサーバは、この専用アプリケーションサーバによって処理されるソフトウェアアプリケーションに関連するユーザコンテキストの部分を、その記憶手段に記憶する。
本発明では、ユーザコンテキスト(コンテキストとも呼ぶ)は、ユーザに関係しセッションの処理に関連するコンテキストである。ユーザコンテキストは、要求された機能を実施するためにシステムがこの特定のユーザに対して使用する全ての機能的および技術的情報を表し、例えば、旅行予約システムでは、アクティブなエンドセッションにリンクされた予約(ショッピング)セッションコンテキストを表す。ユーザコンテキストの部分は、ユーザ個人参照、出発日、出発地、または到着地など、ユーザによって提供されたデータとすることができる。この、ユーザコンテキストの部分は、記憶手段にリンクされたソフトウェアアプリケーションによって必要とされることがある。ユーザコンテキストの部分はまた、ソフトウェアアプリケーションによって生成されるデータとすることもできる。例えば、ユーザコンテキストの部分は、ソフトウェアアプリケーションによって取り出されるフライト空席、または、ソフトウェアアプリケーションによって計算されるか取り出される価格に関係するものである場合がある。ユーザコンテキストの部分はまた、乗客名簿(PNR、passenger name record)、またはPNRの一部に関係するものである場合もある。
したがって、ユーザのコンテキストは、おそらく非常に多数であるアプリケーションサーバにわたって分散し、ユーザコンテキストの各部分はローカルに記憶される。図1に示すように、ユーザUaのコンテキストは、部分a0、a1、a2、a3を含み、アプリケーションサーバA2、B3、C2にわたって分散する。ユーザUbのコンテキストは、部分b0、b1、b2、b3を含み、アプリケーションサーバA5、B5、C4にわたって分散する。より正確には、ユーザUaのコンテキストの部分a1は、アプリケーションサーバA2のデータ記憶手段に記憶される。ユーザUaのコンテキストの部分a2は、アプリケーションサーバB3のデータ記憶手段に記憶される。ユーザUcのコンテキストの部分c3は、アプリケーションサーバC3などのデータ記憶手段に記憶される。
したがって、所与のユーザセッション専用に充てられた全てのアプリケーションサーバは、このセッションとのアフィニティをそれぞれが有するアプリケーションサーバのセットを形成する。
セッションを処理し、セッションの統一されたビューをユーザに提供するためには、システムは、このセッションとのアフィニティを有する全てのアプリケーションサーバをターゲットにしなければならない。
セッションの統一されたビューをユーザに提供することは、様々なソフトウェアアプリケーションが様々な独立したアプリケーションサーバによって処理されることに、ユーザが気付かないことを意味する。したがって、セッションに関係するソフトウェアアプリケーションおよびアプリケーションサーバの数は、ユーザにはトランスペアレントである。ユーザは、システムが1つの一意のアプリケーションサーバおよびマシンであるかのように、システムと対話する。
関連する複数のアプリケーションサーバをターゲットにするための解決法については、後で図2〜5に関して詳述する。
図1は、追加のアプリケーションサーバをシステムに加えてそれによりシステム全体の処理能力を高めることができることを、明確に示す。例えば、アプリケーションサーバA1、A2、...、A8を含むグループ20に、アプリケーションサーバA9、A10、A11、A12が追加される。したがって、グループ20によってより多くのトランザクションを処理することができ、処理時間を減少させずにより多数のセッションを同時に扱うことができる。加えて、追加のアプリケーションサーバを統合することは、容易であり、ユーザにとって完全にトランスペアレントである。
有利にも、本発明はまた、新しいサービスまたは新しいソフトウェアアプリケーションをシステムに統合することも可能にする。アプリケーションサーバD1、D2、D3、D4のグループ50は、前に統合されたアプリケーションサーバによって処理されない新しいソフトウェアアプリケーションを処理するアプリケーションサーバが統合されることを例示する。したがって、すでに統合されたあらゆる単一アプリケーションサーバに新しいソフトウェアアプリケーションをロードする必要なしに、追加のサービスを全てのユーザに提供することができる。さらに、新しいソフトウェアアプリケーションをシステムに統合することは、非常に単純である。というのは、これらの新しいソフトウェアアプリケーションおよびアプリケーションサーバの存在を知らなければならないのは、ESBのみだからである。より正確には、新しい各アプリケーションサーバを統合するとき、アプリケーションサーバ、およびその上で稼動するソフトウェアアプリケーションが、ESBに対して宣言される。複数のESBがある場合、全てのESBは、システムのトポロジを知っている。すなわち、各ESBは、各アプリケーションサーバをどこに配置するか、および、各アプリケーションサーバ上で処理されるソフトウェアアプリケーションがどれであるかを知っている。
特定の一実施形態では、複数のアプリケーションサーバが単一のハードウェアマシン上で稼動する。しかし、ESBは、各ソフトウェアアプリケーション専用に充てられた全てのアプリケーションサーバを知っている。
すでにシステム中にあるアプリケーションサーバのグループは、追加のアプリケーションサーバまたは追加のソフトウェアアプリケーションが統合されたことを知らなくてもよい。したがって、追加の処理容量または追加のサービスを統合しても、システムの残りの部分には影響せず、ユーザにはトランスペアレントである。
本発明により、新しいソフトウェアアプリケーションを全てのユーザに同時に利用可能にすることもまた容易であり、時間がかからない。
例示する使用事例では、あらゆるアプリケーションサーバは、ユーザコンテキストの部分を保持する。いくつかの実施形態では、アプリケーションサーバは、ユーザコンテキストの部分を記憶しない。例えば、このようなアプリケーションサーバは、販売トランザクションを外部プロバイダに伝搬する場合に、担当のHTMLリソースなど何らかの静的データを取り出すことを担う。
アフィニティキー
次に、ユーザセッションの統一されたビューをユーザに提供するための解決法を、さらに詳細に説明する。
セッション中は、ユーザは、同じESBを介してシステムに入る。好ましくは、エントリポイントを形成するESBは、主要ESBであり、このセッションの最後までセッションを担当する。
システムに入来する各トランザクションにつき、主要ESBは、分散コンテキストコリレータ(DCX、Distributed Context Correlator)と呼ばれるレコードを作成する。
DCXは、一意のユーザセッションに専用とされる。DCXは、主要ESBにおいて記憶される。DCXは、参照を含む。参照は、所与のソフトウェアアプリケーションまたはソフトウェアアプリケーションセットについて、どのアプリケーションサーバがユーザコンテキストを保持しているかを識別する。この参照を、アフィニティキーと呼ぶ。各ESBはシステムのトポロジを知っているので、ESBは、DCXのアフィニティキーを読み取ることにより、セッションとのアフィニティを有するアプリケーションサーバ、すなわち、ユーザコンテキストの部分を記憶するデータ記憶手段を使用するアプリケーションサーバを、ターゲットにすることができる。したがって、ユーザのコンテキスト全体が多数の独立したマシンにわたり広がっている場合であっても、ユーザのコンテキスト全体にアクセスすることができる。
DCXは、各トランザクションに追加される。DCXは、2つのアプリケーションサーバ間の全てのトランザクションにカスケードされる。あるアプリケーションサーバが別のアプリケーションサーバを呼び出すとき、この別のアプリケーションサーバにDCXが送信される。このような、あるアプリケーションサーバが別のアプリケーションサーバを呼び出すトランザクションを、コラテラル(collateral)呼出しまたはコラテラルトランザクションと呼ぶ。
DCXを受け取った各アプリケーションサーバは、前記アプリケーションサーバがその記憶手段に記憶されたユーザコンテキストの部分を取り出すのを可能にする追加の情報で、DCXを拡充できることが好ましい。したがって、次にアプリケーションサーバがこのセッションのトランザクションを受け取ったとき、アプリケーションサーバは、単にDCXのこの情報を読み取ることによって、また、このトランザクションの送出元である他のアプリケーションサーバがどこであっても、このセッションについてのユーザコンテキストの部分を容易に取り出すことができるようになる。本発明では、DCXに記憶されるこの情報を、アプリカティブコンテキストキーと呼ぶ。
このように、DCXは、それが帰属するセッションの参照と、このセッションとのアフィニティを有するアプリケーションサーバをターゲットにするためのアフィニティキーと、各アプリケーションサーバがそのユーザコンテキストの部分を取り出せるようにするためのアプリカティブコンテキストキーとを含む。
アプリカティブコンテキストキー
DCXはまた、一意の識別子も含む。特定の一実施形態によれば、特定の参照を使用する代わりに、この一意の識別子を使用してサブアプリカティブコンテキストを参照することができる。したがって、アプリケーションサーバは、それら自体のアプリカティブコンテキストキーを作成して記憶する代わりに、この一意の識別子を暗黙的なアプリカティブコンテキストキーとして使用することができる。このような場合、アプリケーションコンテキストは、記憶手段中で一意の識別子で索引付けされる。したがって、DCXは、より少ない情報を含むが、なお、アプリケーションサーバがそれらのユーザコンテキストの部分を取り出すのを可能にする。
有利にも、DCXは、トランザクションにおいて使用される通信プロトコルから独立して、任意のトランザクションに対して利用可能である。
したがって、ソフトウェアアプリケーションが呼び出されるときはいつでも、トランザクションを受け取ったESBは、このトランザクションが、このセッションとのアフィニティを有するアプリケーションサーバにルーティングされることを必要とするかどうか判定する。
アフィニティが必要とされる場合、すなわち、このソフトウェアアプリケーションに関連するユーザコンテキストの部分を保持するアプリケーションサーバにトランザクションがルーティングされる必要がある場合は、ESBは、このアプリケーションサーバをターゲットにしなければならない。このために、ESBは、DCXのアフィニティキーを読み取り、該当するアプリケーションサーバを識別する。
次いで、前記該当するアプリケーションサーバは、トランザクションおよびDCXを受け取る。次いで、このアプリケーションサーバは、アプリケーションコンテキストキーを読み取って、トランザクションを処理するのに必要とされるユーザコンテキストの部分を取り出すことができる。
ESBに到達したトランザクションによってアフィニティが必要とされない場合は、呼び出されたソフトウェアアプリケーションを処理するアプリケーションサーバグループのうちの特定のアプリケーションサーバに、前記トランザクションをルーティングする必要はない。
例えばこれは、それ自体のユーザコンテキストの部分を生成するソフトウェアアプリケーションの場合に、かつ、前記ソフトウェアアプリケーションを処理するアプリケーションサーバが、このセッションに関係するトランザクションを初めて受け取ったときに、生じる。この最初のトランザクションの前には、前記アプリケーションサーバによってどんなユーザコンテキストの部分も生み出されていない。典型的な一例は、アプリケーションサーバが、所与のパラメータ(日付/出発地/到着地)について、入手可能なフライトを取り出そうとする使用事例に関するものである。これらのパラメータを受け取る前は、アプリケーションサーバは、このセッションについてどんなコンテキストも保持していない。しかし、最初の処理の後は、前記アプリケーションサーバは、取り出されたフライトをその専用の記憶手段に記憶し、それによりユーザコンテキストの部分を生み出す。
次いで、このアプリケーションサーバとセッションとの間に、アフィニティが生み出される。アプリケーションサーバは、アフィニティキーでDCXを拡充する。このアフィニティキーによってさらに、あらゆるESBがこのアプリケーションサーバをターゲットにすることができるようになる。アプリケーションサーバはまた、アプリカティブコンテキストキーでDCXを拡充することが好ましく、このアプリカティブコンテキストキーにより、アプリケーションサーバは、次にこのセッションのトランザクションを受け取ったときに、入手可能なフライトを取り出すことができるようになる。
DCXが拡充されると、DCXは、返信パスを使用して主要ESBに返送され、そこで記憶される。
アフィニティが必要とされない別の例は、セッションに関係するどんなデータも記憶する必要がないソフトウェアアプリケーションに関するものである。例えば、このようなソフトウェアアプリケーションは、メッセージのフォーマットを別のプロトコルに適するように修正することを可能にする。メッセージが変換されると、次いでメッセージは伝搬されるが、フォーマット変換を実施したアプリケーションサーバにおいて記憶される必要はない。この場合、DCXは、このソフトウェアアプリケーションについてのどんなアフィニティキーで拡充されることもない。
ESBが、トランザクションを受け取り、このトランザクションがアフィニティを必要としないと判定したとき、ESBは、トランザクションのルーティング先となるアプリケーションサーバを決定する。通常、ESBは、負荷平衡または近接パラメータを考慮に入れる。
次に、例示的な使用事例を示す図2を参照しながら、本発明を説明する。
明確にするために、図2では、ユーザUaのみが表されている。セッションの初めには、ユーザコンテキストはない。この実施形態では、システムは、複数のESB10、11、12を備える。ESBは、アプリケーションサーバ上での各処理後にトランザクションがESBに到達するように構成される。
ユーザUaは、セッションを開始し、ESB10を介してシステムに入る。したがって、ESB10は、このセッションについての主要ESBである。ユーザUaは、ユーザコンテキストの部分a0を形成する情報を、主要ESB10に提供する。主要ESB10は、ユーザコンテキストの部分a0を保持する。通常、a0は、主要ESBに記憶されたDCXを含むかまたはDCXである。ESB10は、ソフトウェアアプリケーションAが呼び出されると決定する。ESB10は、アフィニティが要求されるかどうか判定する。アフィニティがこの段階で要求され、かつDCXがソフトウェアアプリケーションAについてのどんなアフィニティキーも含まないときは、ESBは、ソフトウェアアプリケーションAを処理するアプリケーションサーバのグループのうちの、いずれか1つのアプリケーションサーバを選択する。この例では、アプリケーションサーバA3が選択される。主要ESB10は、アプリケーションサーバA3にトランザクション(トランザクション1)を送る(ステップ201)。アプリケーションサーバA3は、トランザクションを処理し、ユーザコンテキストの部分a1を生成し、A3が稼動しているマシンのデータ記憶手段にa1を記憶する。主要ESBはまた、アフィニティキーでDCXを拡充する。このアフィニティキーにより、任意のESBが、このセッションについてソフトウェアアプリケーションAが呼び出されたときにターゲットアプリケーションサーバA3をさらにターゲットにすることができるようになる。アフィニティの要求は、ESB構成の一部である。トランザクションパラメータ(ESBに到達するトランザクションのソース、宛先、ソフトウェアアプリケーションなど)に基づいて、このESBはその構成により、アフィニティを考慮してトランザクションを処理しなければならないかどうか判定することができる。したがって、アフィニティが要求されるかどうか判定するために、静的な情報(ESBの構成)が考慮される。一方、DCXの内容は、動的な情報である。
アプリケーションサーバA3は、アプリケーションコンテキストキーをDCXに追加するのが好ましく、このアプリケーションコンテキストキーによってさらに、アプリケーションサーバA3は、次にこのセッションのトランザクションを受け取ったときにコンテキストの部分a1を容易に取り出すことができるようになる。
次いで、DCXは主要ESB10に返され、そこで記憶される。ESB11が、アプリケーションサーバA3からトランザクションを受け取り、ソフトウェアアプリケーションAによってソフトウェアアプリケーションBが呼び出されると決定する(ステップ202)。このような呼出しは、コラテラル呼出しまたはコラテラルトランザクションである。ソフトウェアアプリケーションBによってアフィニティが要求されるが、アプリケーションBについてのアフィニティがDCXに記憶されていないときは、ESB11は、ソフトウェアアプリケーションBを実行するアプリケーションサーバのグループのうちの、いずれか1つのアプリケーションサーバを選択することができる。ESB11は、アプリケーションサーバB8を選択し、B8に対応するアフィニティキーでDCXを拡充し、トランザクション1の処理に必要とされるコラテラルトランザクションがアプリケーションサーバB8に到達する。アプリケーションサーバB8は、トランザクションを処理し、ユーザUaのコンテキストの部分a2を生み出す。コラテラル呼出しを介して生み出されたユーザコンテキストの部分は、サブコンテキストとも呼ぶ。
DCXは、アプリケーションサーバB8に関係するアプリカティブコンテキストキーで拡充される。
ソフトウェアアプリケーションAおよびソフトウェアアプリケーションBによって受け取られた呼出し201、202と同様、ソフトウェアアプリケーションCが、アフィニティを求める要求なしで呼び出される(ステップ203)。トランザクション1を処理するために、ソフトウェアアプリケーションCを処理するアプリケーションサーバC4が選択される。アプリケーションサーバC4は、ユーザコンテキストの部分a3を生み出して、それをそのデータ記憶手段に記憶する。DCXはアフィニティキーで拡充されるが、このアフィニティキーは、ユーザコンテキストの部分a3を取り出すためにアプリケーションサーバC4をターゲットすることを可能にするものである。DCXは、返信によって主要ESB10に返される。
主要ESB10は、ユーザUaから新しいトランザクション(トランザクション2)を受け取る。主要ESB10は、この新しいトランザクションを処理するためにソフトウェアアプリケーションBが呼び出され、かつアフィニティが要求される、と決定する。したがって、サービスBのグループのうち、このサービスに関連するユーザコンテキストの部分を保持するアプリケーションサーバをターゲットにしなければならない。DCXを読み取ることにより、主要ESB10は、サービスBのグループのうちの、このセッションでの該当するアプリケーションサーバの参照を読み取り、したがってアプリケーションサーバB8をターゲットにする。
次いで、主要ESB10は、新しいトランザクションをアプリケーションサーバB8にルーティングする(ステップ204)。
次いで、アプリケーションサーバB8は、新しいトランザクションを受け取り、そのユーザコンテキストの部分a3を取り出し、新しいトランザクションを処理することになる。
したがって、様々なサーバおよびESBが対話できるようにすることにより、本発明は、セッションのコンテキストが分散されローカルに記憶される一方で、セッションの統一されたビューを提供するための、効率的な解決法を提供する。
ユーザコンテキストの部分のコンテキスト寿命
次に、本発明の非限定的だが特に有利な特徴について述べる。これらの特徴により、セッションの間にトランザクションを処理するために最終的に必要とされる可能性のある、ユーザコンテキストのいくつかの部分を、このセッションの間ずっと利用可能に維持することができる。セッションが終わったとき、コンテキストのこれらの部分は除去される。
実際、ユーザコンテキストは、セッションの寿命の間だけ有効であることが好ましい。したがって、セッションのコンテキストは永続的ではなく、セッションが終わると、コンテキストはそれ以上記憶されず除去される。
例えば、ブッキングを管理するためのユーザセッションのユーザコンテキストにおいて使用されるユーザコンテキストの全ての部分は、ユーザセッションの終わりまで保持される。
分散コンテキストコリレータ(DCX)は、ユーザセッションの全寿命の間、利用可能である。ユーザコンテキストの部分を保持するどんなアプリケーションサーバも、そのコンテキストの寿命をユーザセッションの寿命にリンクすることを要求することができる。
ユーザコンテキストとユーザセッションは、DCXを保持するESBと、ユーザコンテキストを保持するアプリケーションサーバとの間でステートフルな会話を開くことによって、寿命の点でリンクされる。
ステートフルな会話を開く要求は、呼び出されるサービスの一部として、ESB構成において静的に定義される。より正確には、ESBがトランザクションを受け取ったとき、ESBは、トランザクションのソース、宛先、および呼び出されたソフトウェアアプリケーションなど、トランザクションのパラメータを分析する。次いでESBは、その構成により、ステートフルな会話が開かれなければならないかどうか判定することができる。トランザクションがアフィニティを考慮に入れなければならないかどうかの判定にも、同じメカニズムが当てはまる。
あるアプリケーションサーバが、別のアプリケーションサーバ上で処理されるサービスまたはソフトウェアアプリケーションを呼び出す場合であって、そのユーザコンテキストの寿命がDCXの寿命にリンクされることを必要とする場合、コラテラルトランザクションのルーティングを担当するESBは、次いで、主要ESBを呼び出し、主要ESBに、前記別のアプリケーションサーバとのステートフルな会話を開くよう求める。次いで主要ESBは、前記別のアプリケーションサーバとのステートフルな会話を開く。次いで、コラテラルトランザクションのルーティングを担当するESBは、主要ESBとのステートフルな会話が開かれた前記別のアプリケーションサーバに、トランザクションをルーティングする。
主要ESBと所与のアプリケーションサーバとの間のステートフルな会話は、この所与のアプリケーションサーバにいずれかのトランザクションが行く前に、開いているはずである。この理由は次のとおりである。すなわち、トランザクションが、ステートフルな会話が開かれる前にコラテラルトラフィックによって所与のアプリケーションサーバにルーティングされなければならない場合は、コラテラルトランザクションをルーティングするESBは、ステートフルな会話を開くよう主要ESBに要求した後でトランザクションをアプリケーションサーバにルーティングすることになるからである。この機能を、会話の自動初期化と呼ぶ。
このようなステートフルな会話が開かれると、DCXの寿命は、主要ESBとのステートフルな会話中であるアプリケーションサーバが稼動しているマシンに記憶されたユーザコンテキストの寿命にリンクされる。前記ユーザコンテキストは、DCXが消えることになるときにのみ削除されることになる。
この解決法により、本発明は、セッション終了時に記憶されているデータを制限しながら、セッション中に利用可能でなければならないコンテキストの全ての部分を維持することを可能にする。加えて、この解決法は、アプリケーションサーバ間で送信されるトラフィックおよびデータのボリュームを制限する。
好ましい一実施形態によれば、ステートフルな会話が開いているとき、ESBは、そのステートフルな会話を共有するアプリケーションサーバに、ユーザコンテキストが維持されなければならないことを示すメッセージを定期的に送る。これらのメッセージは、「キープアライブ(keep alive)」メッセージと呼ばれる。したがって、「キープアライブ」メッセージが、主要ESBから、この主要ESBとのステートフルな会話中である全てのアプリケーションサーバに送られる。セッションが終わると、DCXは削除されてよく、主要ESBは、ステートフルな会話中にある全てのアプリケーションサーバに、ユーザコンテキストを削除してよいことを示すメッセージを送る。これらのメッセージを、「終了(terminate)」メッセージと呼ぶ。
アプリケーションサーバまたはマシンおよびユーザコンテキストごとに、DCXの主要ESBオーナからのステートフルな会話は1つしかない。全てのコラテラルトランザクションは、大域的なトランザクションがステートフルであっても、ステートレスな会話を使用している。
図3に、ステートフルな会話が開いていなければならないトランザクションの第1の例を示す。
ユーザUaは、主要ESB10を介してシステムに要求を送る。ステップ301および302は、図2のステップ201および202と同様である。アプリケーションサーバB8がトランザクションを処理すると、ESB12が、トランザクションを受け取り(ステップ303)、このトランザクションのルーティングを担当する。ESB12は、ソフトウェアアプリケーションBによって呼び出されたソフトウェアアプリケーションCが、そのユーザコンテキストの部分の寿命をセッションの寿命にリンクさせることを必要とすると決定する。
サービスグループCのどのアプリケーションサーバ上にも顧客Uaのユーザコンテキストの部分がまだ存在しない場合は、トランザクションをサービスグループCにルーティングするのを担当するESB12は、DCXを保持する主要ESB10を呼び出し、主要ESB10に、サービスグループCのうちの1つのアプリケーションサーバとのステートフルな会話を開くよう要求する(ステップ304)。次いで主要ESB10は、サービスグループCのアプリケーションサーバのうちの1つのアプリケーションサーバとのステートフルな会話を開く(ステップ305)。次いでDCXは、選択されたアプリケーションサーバC4の参照で拡充される。次いでDCXは、コラテラルトランザクションのルーティングを担当するESB12に返される。次いでESB12は、DCXを読み出すことによってアプリケーションサーバC4をターゲットにし、主要ESBとの会話中にあるアプリケーションサーバC4にトランザクションをルーティングする(ステップ306)。
図4に、ステートフルな会話が開かれていなければならないトランザクションの別の例を示す。
ステップ401で、主要ESBは、グラフィカルユーザインタフェース(GUI)を介してユーザからの要求を受け取る。例えば、この要求は、乗客ファイルの作成である。この要求のプロトコルはHTMLである。システムによって処理されるためには、要求は、EDIFACTプロトコルなど、別のプロトコルに変換されなければならない。主要ESBは、要求を変換するために、ソフトウェアアプリケーションAを処理するアプリケーションサーバのグループのうちのアプリケーションサーバをターゲットにしなければならないと決定する。このような変換には、アフィニティは必要とされない。次いで主要ESBは、サービスAのグループのうちのアプリケーションサーバを選択し、このアプリケーションサーバにトランザクションをルーティングする(ステップ402)。このアプリケーションサーバをA1と呼ぶ。
A1は、プロトコルを変換することによってトランザクションを処理する。A1によって記憶されなければならないデータはない。したがって、A1においてユーザコンテキストの部分は生み出されない。主要ESBとA1との間の会話は、ステートレスである。
次いで、ESB(コラテラルESB(ESB Col)とも呼ぶ)が、トランザクションを受け取る(ステップ403)。コラテラルESBは、ソフトウェアアプリケーションBを処理するアプリケーションサーバにトランザクションがルーティングされなければならないと決定する。コラテラルESBはまた、アフィニティが要求されること、および、次の処理を担当するアプリケーションサーバに関連するコンテキストの部分の寿命がセッションの寿命にリンクされなければならなくなることを決定する。コラテラルESBは、DCXを読み取り、DCX中でソフトウェアアプリケーションBについてアフィニティが設定されていないと判定する(ステップ404)。次いでコラテラルESBは、主要ESBを呼び出し、主要ESBに、ソフトウェアアプリケーションBを処理するアプリケーションとのステートフルな会話を開くよう要求する(ステップ405)。主要ESBは、ソフトウェアアプリケーションBを処理するのに専用に充てられたアプリケーションサーバ(B2と呼ぶ)を選択する。主要ESBは、B2に対応するアフィニティキーでDCXを拡充し(ステップ406)、アフィニティ初期化の要求をこのアプリケーションサーバに転送する(ステップ407)。したがって、B2には、そのユーザコンテキストの部分の寿命がセッションの寿命にリンクされなければならないことが通知される(ステップ405)。B2は、そのデータ記憶手段の一部をユーザコンテキストの部分に割り振る(ステップ408)。B2は、アプリカティブコンテキストキーでDCXを拡充し、DCXを主要ESBに返送する(ステップ409)。DCXは、主要ESBにおいて記憶され、コラテラルESBに返送される(ステップ410)。
コラテラルESBは、元のメッセージを取り出し、このメッセージを新しいDCXで更新し、DCXのアフィニティキーに従ってアプリケーションサーバB2をターゲットにする(ステップ411)。したがって、トランザクションはB2にルーティングされる(ステップ411)。次いでB2は、EDIFACTプロトコルで要求を受け取り、要求を処理する。例えば、要求は、乗客ファイルの作成に存するものとすることができる。
B2のユーザコンテキストの部分の寿命がセッションの寿命にリンクされているので、乗客ファイルは、セッションの全タイムライフの間はB2において利用可能であることになり、その後は削除されることになる。
図5に、本発明の別の使用事例を示す。この例示的な使用事例では、ESB10は、複数のマルチプレクサ(MUX1、MUX2、MUX3)と、マルチプレクサX3に関連する少なくともサーバ(SRV2)とを備える。
ステップ501で、ユーザがサーバSRV2に要求を送る。サーバSRV2は、このセッションについてのDCXレコードを作成する。
セッションが開始した直後は、利用可能なコンテキストはまだなく、ソフトウェアアプリケーションAを処理するアプリケーションサーバA1が呼び出され、アプリケーションサーバA1は、トランザクションをDCXと共に受け取る。DCXは、このアプリケーションサーバA1のアフィニティキーで拡充される。したがって、ソフトウェアアプリケーションAについてのアフィニティが設定される(ステップ502)。A1は、トランザクションを処理し、そのユーザコンテキストの部分を記憶し、そのアプリカティブコンテキストキーでDCXを拡充する。例えば、ユーザコンテキストはフライト空席に関係し、A1は、入手可能なフライトの参照を取り出すことを担当する。次いでDCXは、主要ESB10に返送され(ステップ503)記憶される(ステップ504)。ステップ505で、A1の処理の結果(入手可能なフライトの参照)がユーザに提供される。これにより、このセッションの最初のトランザクションが終了する。
次いで、ユーザは別のトランザクションを開始する。例えば、ユーザは、トランザクション1を介して取り出されたフライトのうちの1つのセグメントを購入したいと望む。
SRV2は、購入要求を受け取り、ソフトウェアアプリケーションBが呼び出されなければならないと決定する(ステップ506)。次いで、サービスBのグループのうちのアプリケーションサーバB1とのアフィニティが作成される。このアプリケーションサーバB1にDCXが送られる(ステップ507)。B1についてのアプリカティブコンテキストキーも作成される(508)。次いでDCXは、ソフトウェアアプリケーションBを処理するアプリケーションサーバから来る全てのトランザクションを扱うことを担当するマルチプレクサMUX1を介して、カスケードされる(ステップ509)。MUX1は、アフィニティの要求付きでソフトウェアアプリケーションAが呼び出されると決定する。DCXにより、MUX1は、A1をターゲットにすることができる(ステップ510)。A1は、そのアプリカティブコンテキストキーにより、前のトランザクションの間に記憶されたそのコンテキストの部分(入手可能なフライトの参照)を取り出す。次いでA1は、トランザクションをDCXと共にMUX1に返送する(ステップ511)。A1からの返信は、ESBによってB1に返される(ステップ512)。B1は、A1から取り出されたデータにより、トランザクションを処理する。例えば、入手可能なセグメントに価格が付けられる。DCXは、カスケードされ(ステップ513)、処理の結果と共に主要ESBに送られる(ステップ514)。DCXは記憶される。処理の結果はユーザに提供される(ステップ515)。
上記に詳述したように、本発明は、システムのモジュール性を保持して処理容量の増大を容易にするとともに、新しいサービス/製品の容易な統合を可能にして、一貫性があり統一されたユーザコンテキストのビューを提供するための、解決法をもたらす。
本発明はまた、様々なソフトウェアアプリケーションを含む大域的な製品の各下位部分に割り振られたリソースをより容易に制御できるようにするので、操作性の点で大きな利点をもたらす。本発明はまた、所与のマシンまたは1組のマシン上の停止が他のマシンに著しく影響を及ぼすことがないので、全体的な停止のリスクを最小限に抑えることも可能にする。
以上の記述では、本発明の例示的な実施形態を実現するための様々な方法、装置、およびコンピュータプログラムソフトウェアに関する完全で有益な記述を、例示的かつ非限定的な例として提供した。しかし、以上の記述を添付の図面および添付の特許請求の範囲と共に読めば、様々な修正および適応が当業者には明らかになるであろう。いくつかの例に過ぎないが、他の類似のまたは等価なデータ構造および論理フローの使用を、当業者によって試みることもできる。しかし、本発明の教示のこのような修正および類似の修正もなお、本発明の実施形態の範囲に入ることになる。
さらに、本発明の例示的な実施形態の特徴のいくつかは、他の特徴の対応する使用なしで有利に使用することができる。したがって、以上の記述は、本発明の原理、教示、および実施形態の限定において考えるのではなく、これらの例示に過ぎないと考えるべきである。
1 ユーザUa
2 ユーザUb
3 ユーザUc
10 ESB
11 ESB
12 ESB
20 アプリケーションサーバのグループ
30 アプリケーションサーバのグループ
40 アプリケーションサーバのグループ
50 アプリケーションサーバのグループ
100 システム
A1、A2、...、A12 アプリケーションサーバ
B1、B2、...、B8 アプリケーションサーバ
C1、C2、C3 アプリケーションサーバ
D1、D2、D3、D4 アプリケーションサーバ

Claims (20)

  1. ユーザ(1、2、3)にユーザセッションを提供する方法において、前記ユーザセッションが、システム(100)によって処理される複数のソフトウェアアプリケーションの動作を必要とし、前記システムが前記ユーザとクライアント/サーバモードで動作し、複数のソフトウェアアプリケーションが、前記ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされた方法であって、少なくとも1つのデータプロセッサを用いて実施される以下のステップ、すなわち、
    - 各ユーザセッションにつき、ユーザコンテキストの少なくとも一部分にリンクされた各ソフトウェアアプリケーションが、前記ソフトウェアアプリケーションをそれぞれが独立して処理するアプリケーションサーバ(A1、A2、...)のグループ(20、30、40、50)のうちの専用アプリケーションサーバ(A1、A2、...)によって処理され、それにより、各セッションにつき、前記ユーザセッションとのアフィニティをそれぞれが有するアプリケーションサーバ(A3、B8、C4)のセットを定義するステップと、
    - 前記ユーザセッションとのアフィニティを有する各アプリケーションサーバに、前記各アプリケーションサーバによって処理される前記ソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの前記一部分を記憶するように構成されたデータ記憶手段を提供するステップと、
    - 1つまたは複数のルーティング手段(10、11、12)において、前記ユーザからの要求を少なくとも受け取り、前記要求を満たすために、前記ユーザセッションとのアフィニティを有する前記アプリケーションサーバ(A3、B8、C4)に少なくとも向けて前記ユーザセッションのトランザクションをルーティングするステップであって、前記1つまたは複数のルーティング手段のうちの1つが、前記ユーザセッションを担当する主要ルーティング手段(10)であるステップとを含み、トランザクションをルーティングする前記ステップが、
    ○ アフィニティキーを含むように構成された相関レコード(DCX)を前記ユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについて前記ユーザセッションとのアフィニティを有するアプリケーションサーバを示すものであるステップと、
    ○ 相関レコードを各トランザクションと共に伝搬し、それにより、前記ルーティング手段(10、11、12)が、前記相関レコードを読み取って、前記ユーザセッションとのアフィニティを有し前記トランザクションの処理に関連する前記ソフトウェアアプリケーションを処理する前記アプリケーションサーバ(A3、B8、C4)をターゲットにすることができるようにするステップと
    を含むことを特徴とする方法。
  2. 前記1つまたは複数のルーティング手段(10、11、12)が、あらゆる単一アプリケーションサーバ(A3、B8、C4)にどのように到達するかを知っているように構成された、請求項1に記載の方法。
  3. 前記相関レコードが、前記主要ルーティング手段(10)に関連するデータ記憶手段に記憶される、請求項1または2に記載の方法。
  4. 前記主要ルーティング手段(10)が、前記ユーザからの前記要求を受け取る前記ルーティング手段(10、11、12)である、請求項1から3のいずれか一項に記載の方法。
  5. 前記アフィニティキーが前記ルーティング手段(10、11、12)によって設定される、請求項1から4のいずれか一項に記載の方法。
  6. 前記ルーティング手段(10、11、12)がエンタープライズサービスバス(ESB)である、請求項1から5のいずれか一項に記載の方法。
  7. ルーティング手段(10、11、12)が、ソフトウェアアプリケーションを処理するアプリケーションサーバから、前記ユーザセッションに割り当てられた前記相関レコードと共にトランザクションを受け取り、次いで、別のソフトウェアアプリケーションを処理する別のアプリケーションサーバに前記トランザクションをルーティングし、前記トランザクションをルーティングする前記ステップが、前記ルーティング手段(10、11、12)が前記相関レコードを読み取るステップを含む、請求項1から6のいずれか一項に記載の方法。
  8. 前記相関レコードが前記ルーティング手段(10、11、12)において受け取られた際、前記別のアプリケーションサーバを示すアフィニティキーを前記相関レコードが含まない場合は、前記ルーティング手段(10、11、12)が前記トランザクションを別のアプリケーションサーバにルーティングする前記ステップが、前記別のソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの前記一部分の寿命が前記ユーザセッションの寿命にリンクされなければならないかどうかを前記ルーティング手段(10、11、12)が判定するステップを含む、請求項7に記載の方法。
  9. 前記相関レコードが前記ルーティング手段(10、11、12)において受け取られた際、前記別のアプリケーションサーバを示すアフィニティキーを前記相関レコードが含まない場合であって、前記別のソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの前記一部分の寿命が前記ユーザセッションの寿命にリンクされなければならない場合は、前記ルーティング手段(10、11、12)が前記トランザクションを別のアプリケーションサーバにルーティングする前記ステップが、
    - 前記ルーティング手段(10、11、12)がアフィニティ初期化の要求を前記主要ルーティング手段(10)に送る追加ステップと、
    - 次いで前記主要ルーティング手段(10)が、
    ○ 前記別のソフトウェアアプリケーションを処理するアプリケーションサーバ(B1、B2、...)の前記グループのうちで前記別のアプリケーションサーバを選択し、
    ○ 前記別のアプリケーションサーバを示すアフィニティキーで前記相関レコードを拡充し、
    ○ 前記別のアプリケーションサーバにアフィニティ初期化のメッセージを送り、
    ○ 前記別のアプリケーションサーバからアフィニティ初期化の確認を受け取り、
    ○ 拡充された前記相関レコードを前記ルーティング手段(10、11、12)に送る追加ステップと、
    - 次いで前記ルーティング手段(10、11、12)が、拡充された前記相関レコードの前記アフィニティキーに従って前記別のアプリケーションサーバに前記トランザクションをルーティングする追加ステップと
    を含む、請求項7または8に記載の方法。
  10. 前記相関レコードが前記ルーティング手段(10、11、12)において受け取られた際、前記別のアプリケーションサーバを示す前記アフィニティキーを前記相関レコードが含まない場合であって、前記別のソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの前記一部分の前記寿命が前記ユーザセッションの前記寿命にリンクされなくてよい場合は、前記ルーティング手段(10、11、12)が前記トランザクションを前記別のアプリケーションサーバにルーティングする前記ステップが、前記ルーティング手段(10、11、12)が、前記別のソフトウェアアプリケーションを処理するアプリケーションサーバ(B1、B2、...)の前記グループのうちで前記別のアプリケーションサーバを選択し、前記別のアプリケーションサーバに前記トランザクションをルーティングする追加ステップを含む、請求項8に記載の方法。
  11. 前記相関レコードが、前記別のアプリケーションサーバを示す前記アフィニティキーで拡充される、請求項10に記載の方法。
  12. 前記相関レコードが前記ルーティング手段(10、11、12)によって拡充され、前記相関レコードが、前記主要ルーティング手段(10)に返されて、前記主要ルーティング手段(10)に関連するデータ記憶手段に記憶される、請求項11に記載の方法。
  13. 前記相関レコードが前記ルーティング手段(10、11、12)において受け取られた際、前記別のアプリケーションサーバを示す前記アフィニティキーを前記相関レコードがすでに含む場合は、前記ルーティング手段(10、11、12)が前記アフィニティキーに従って前記トランザクションをルーティングする、請求項7に記載の方法。
  14. アプリケーションサーバが、ルーティング手段(10、11、12)からトランザクションを受け取り、前記トランザクションの処理を介して前記ユーザコンテキストの一部分を生成し、前記アプリケーションサーバに提供されたデータ記憶手段に前記ユーザコンテキストの前記一部分を記憶する、請求項1から13のいずれか一項に記載の方法。
  15. 前記アプリケーションサーバが、前記アプリケーションサーバから前記ユーザコンテキストの前記一部分を取り出すのを可能にするアプリカティブコンテキストキーで前記相関レコードを拡充する、請求項14に記載の方法。
  16. 前記アプリカティブコンテキストキーで拡充された前記相関レコードが、前記主要ルーティング手段(10)に送られ、前記主要ルーティング手段(10)に関連するデータ記憶手段に記憶される、請求項15に記載の方法。
  17. 前記ユーザセッションに関係する更なるトランザクションが前記アプリケーションサーバで受け取られると、前記アプリケーションサーバが前記アプリカティブコンテキストキーに基づいて前記ユーザコンテキストの前記一部分を前記記憶手段中で位置特定する、請求項15または16に記載の方法。
  18. ソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの一部分の寿命が前記ユーザセッションの寿命にリンクされなければならない場合は、前記ユーザセッションがアクティブである限り、前記主要ルーティング手段(10)と、前記ソフトウェアアプリケーションを処理する前記アプリケーションサーバとの間で、ステートフルなやり取りが機能しており、前記ユーザセッションが終わると前記ステートフルなやり取りが自動的に終了される、請求項1から9のいずれか一項に記載の方法。
  19. ソフトウェアプログラム命令を含む非一時的なコンピュータ可読記録媒体であって、前記ソフトウェアプログラム命令が少なくとも1つのデータプロセッサによって実行されると、請求項1から18のいずれか一項に記載の方法の実行を含む動作が実施される、コンピュータ可読記録媒体。
  20. ユーザ(1、2、3)にユーザセッションを提供するためのシステム(100)において、複数のソフトウェアアプリケーションを備え、前記ユーザセッションを提供するために前記ソフトウェアアプリケーションの動作が必要とされ、前記ソフトウェアアプリケーションのうちの少なくとも1つが、前記ユーザセッションに関係するユーザコンテキストの少なくとも一部分にリンクされたシステム(100)であって、
    ○ 少なくともプロセッサをそれぞれが備える複数のマシンと、
    ○ それぞれがマシン上で稼動する複数のアプリケーションサーバ(A1、A2、...)であって、前記ユーザセッションについて、各ソフトウェアアプリケーションが、前記ソフトウェアアプリケーション専用に充てられたアプリケーションサーバ(A1、A2、...)のグループ(20、30、40、50)のうちの1つのアプリケーションサーバによって処理され、それにより、各ユーザセッションにつき、前記ユーザセッションとのアフィニティをそれぞれが有するアプリケーションサーバ(A3、B8、C4)のセットを定義するように、それぞれが構成されたアプリケーションサーバと、
    ○ 前記ユーザコンテキストの一部分にリンクされたソフトウェアアプリケーションを処理する各アプリケーションサーバに関連するデータ記憶手段であって、前記記憶手段に関連する前記アプリケーションサーバによって処理される前記ソフトウェアアプリケーションにリンクされた前記ユーザコンテキストの前記一部分を記憶するようにそれぞれが構成されたデータ記憶手段と、
    ○ 1つまたは複数のルーティング手段(10、11、12)とを備え、前記ルーティング手段のうちの主要ルーティング手段(10)が前記ユーザセッションを担当するように構成され、前記1つまたは複数のルーティング手段(10、11、12)が、
    前記ユーザからの要求を少なくとも受け取り、前記要求を満たすために、前記ユーザセッションのトランザクションを、前記ユーザセッションとのアフィニティを有する前記アプリケーションサーバ(A3、B8、C4)に向けてルーティングするように構成され、前記ルーティング手段(10、11、12)は、トランザクションステップが
    ○ アフィニティキーを含むように構成された相関レコード(DCX)を前記ユーザセッションに割り当てるステップであって、各アフィニティキーが、所与のソフトウェアアプリケーションについて前記ユーザセッションとのアフィニティを有するアプリケーションサーバを示すものであるステップと、
    ○ 相関レコードを各トランザクションと共に伝搬し、それにより、前記ルーティング手段(10、11、12)が、前記相関レコードを読み取って、前記ユーザセッションとのアフィニティを有し前記トランザクションの処理に関連する前記ソフトウェアアプリケーションを処理する前記アプリケーションサーバ(A2、B3、C2)をターゲットにすることができるようにするステップとを含むように構成されたことを特徴とするシステム。
JP2013558439A 2011-03-15 2012-03-15 複数のソフトウェアアプリケーションを必要とするセッションを提供するための方法およびシステム Active JP6087847B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP11305281A EP2500856A1 (en) 2011-03-15 2011-03-15 Method and system for providing a session involving a plurality of software applications
EP11305281.5 2011-03-15
US13/065,312 2011-03-18
US13/065,312 US8433809B2 (en) 2011-03-15 2011-03-18 Method and system for providing a session involving a plurality of software applications
PCT/EP2012/054563 WO2012123544A1 (en) 2011-03-15 2012-03-15 Method and system for providing a session involving a plurality of software applications

Publications (2)

Publication Number Publication Date
JP2014512035A true JP2014512035A (ja) 2014-05-19
JP6087847B2 JP6087847B2 (ja) 2017-03-01

Family

ID=44314913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558439A Active JP6087847B2 (ja) 2011-03-15 2012-03-15 複数のソフトウェアアプリケーションを必要とするセッションを提供するための方法およびシステム

Country Status (11)

Country Link
US (1) US8433809B2 (ja)
EP (1) EP2500856A1 (ja)
JP (1) JP6087847B2 (ja)
KR (1) KR101636601B1 (ja)
CN (1) CN103403749A (ja)
AU (1) AU2012228218B2 (ja)
BR (1) BR112013019278A2 (ja)
CA (1) CA2824393C (ja)
SG (1) SG192161A1 (ja)
WO (1) WO2012123544A1 (ja)
ZA (1) ZA201305950B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9209983B2 (en) * 2007-11-19 2015-12-08 Cisco Technology, Inc. Generating a single advice of charge request for multiple sessions in a network environment
US9202237B2 (en) * 2007-11-27 2015-12-01 Cisco Technology, Inc. Generating a single billing record for multiple sessions in a network environment
US9235620B2 (en) 2012-08-14 2016-01-12 Amadeus S.A.S. Updating cached database query results
US9569224B2 (en) 2014-05-06 2017-02-14 Oracle International Corporation System and method for adaptively integrating a database state notification service with a distributed transactional middleware machine
US9524186B2 (en) 2014-04-28 2016-12-20 Oracle International Corporation System and method for supporting common transaction identifier (XID) optimization based on resource manager (RM) instance awareness in a transactional environment
US20160285957A1 (en) * 2015-03-26 2016-09-29 Avaya Inc. Server cluster profile definition in a distributed processing network
US10380359B2 (en) 2016-08-05 2019-08-13 Sensoriant, Inc. Software-based switch for providing products and/or services to users without compromising their privacy
US10860735B2 (en) 2016-08-05 2020-12-08 Sensoriant, Inc. Database system for protecting and securing stored data using a privacy switch
US10607019B2 (en) * 2016-08-05 2020-03-31 Sensoriant, Inc. System and methods for maintaining user privacy in applications providing products and/or services
EP3510492A4 (en) * 2016-09-09 2020-04-08 Sensoriant, Inc. SOFTWARE-BASED SWITCH FOR PROVIDING PRODUCTS AND / OR SERVICES TO USERS WITHOUT INTERFERENCE TO YOUR PRIVACY
US10891440B1 (en) 2019-10-30 2021-01-12 Globant España, S.A. Natural language driven transaction system
US11695849B2 (en) * 2021-01-19 2023-07-04 International Business Machines Corporation Transaction tracking for high availability architecture using a tracking token and middleware instance information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310298A (ja) * 2003-04-03 2004-11-04 Ibm Japan Ltd 情報処理システム、情報処理装置、セッション管理方法及びプログラム
JP2006059321A (ja) * 2005-05-30 2006-03-02 Hitachi Ltd 分散オブジェクト環境におけるセッション維持方法

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495606A (en) 1993-11-04 1996-02-27 International Business Machines Corporation System for parallel processing of complex read-only database queries using master and slave central processor complexes
US5819255A (en) 1996-08-23 1998-10-06 Tandem Computers, Inc. System and method for database query optimization
US5822747A (en) 1996-08-23 1998-10-13 Tandem Computers, Inc. System and method for optimizing database queries
US6158044A (en) 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US7328166B1 (en) 1999-01-20 2008-02-05 Sabre, Inc. Global reservations transaction management system and method
US6392997B1 (en) 1999-03-16 2002-05-21 Cisco Technology, Inc. Technique for group-based routing update with limited per neighbor/adjacency customization
GB2348985A (en) * 1999-04-15 2000-10-18 Ibm Centralized affinity maintenance in a workload managed client/server system
WO2000063808A1 (en) 1999-04-16 2000-10-26 Cg & G Software Plus Tee time reservation system
WO2001033472A2 (en) 1999-11-01 2001-05-10 Ita Software, Inc. Method and apparatus for providing availability of airline seats
US20030004760A1 (en) 1999-12-03 2003-01-02 Schiff Martin R. Systems and methods of on-line booking of cruises
US7437408B2 (en) 2000-02-14 2008-10-14 Lockheed Martin Corporation Information aggregation, processing and distribution system
JP2004531780A (ja) 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
NO312697B1 (no) 2000-09-01 2002-06-17 Ericsson Telefon Ab L M Fremgangsmåte for å tilveiebringe effektive operasjoner i et serversystem
US6640222B1 (en) 2000-09-29 2003-10-28 Motorola, Inc. Method for selecting an information unit among conflicting information units based on context fields by a user device
US20020078150A1 (en) 2000-12-18 2002-06-20 Nortel Networks Limited And Bell Canada Method of team member profile selection within a virtual team environment
US7003565B2 (en) * 2001-04-03 2006-02-21 International Business Machines Corporation Clickstream data collection technique
US7165105B2 (en) 2001-07-16 2007-01-16 Netgenesis Corporation System and method for logical view analysis and visualization of user behavior in a distributed computer network
US7512652B1 (en) 2001-09-28 2009-03-31 Aol Llc, A Delaware Limited Liability Company Passive personalization of buddy lists
US7289619B2 (en) 2002-01-09 2007-10-30 Agilquest Corporation System and method for managing workplace real estate and other resources
CA2381737A1 (en) 2002-04-15 2003-10-15 Ibm Canada Limited-Ibm Canada Limitee Framework for managing data that provides correlation information in a distributed computing system
US7089228B2 (en) 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US20030233473A1 (en) 2002-05-07 2003-12-18 International Business Machines Corporation Method for configuring logical connections to a router in a data communication system
US7337226B2 (en) * 2002-05-10 2008-02-26 Oracle International Corporation Method and mechanism for implementing dynamic sizing of session pools
US7987491B2 (en) * 2002-05-10 2011-07-26 Richard Reisman Method and apparatus for browsing using alternative linkbases
US7146400B2 (en) 2002-05-29 2006-12-05 International Business Machines Corporation Web and lotus notes adapter layers
US8020196B2 (en) * 2002-10-25 2011-09-13 Randle William M Secure transmission and exchange of standardized data
US8602774B2 (en) * 2002-12-04 2013-12-10 Bryan Wasylucha Process of tooth whitening and apparatus therefor
US7454761B1 (en) 2002-12-20 2008-11-18 Cisco Technology, Inc. Method and apparatus for correlating output of distributed processes
US20040128542A1 (en) 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for native authentication protocols in a heterogeneous federated environment
CA2527668A1 (en) 2003-06-02 2004-12-16 Liquid Machines, Inc. Managing data objects in dynamic, distributed and collaborative contexts
KR100541758B1 (ko) 2003-07-08 2006-01-10 주식회사 팬택앤큐리텔 무선가입자망의 가입자접속장치에서 패킷 형태의 과금갱신 정보 전송 방법
US7395279B2 (en) 2003-11-17 2008-07-01 International Business Machines Corporation System and method for achieving different levels of data consistency
US20050108069A1 (en) 2003-11-18 2005-05-19 Tomer Shiran System and a method for prefetching travel information
JP4452533B2 (ja) 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
US7778962B2 (en) 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US20050262100A1 (en) 2004-05-19 2005-11-24 Bea Systems, Inc. System and method for context propagation in application servers and transaction-based systems
CN100481013C (zh) * 2004-08-03 2009-04-22 索芙特瑞斯提股份有限公司 用于经由上下文策略控制来控制应用程序间关联的系统和方法
US7543069B2 (en) * 2004-10-18 2009-06-02 International Business Machines Corporation Dynamically updating session state affinity
US20060155857A1 (en) * 2005-01-06 2006-07-13 Oracle International Corporation Deterministic session state management within a global cache array
US20060212583A1 (en) 2005-03-17 2006-09-21 Beadle Bruce A Distributing messaging session logs to users entering an already ongoing messaging session
US7412224B2 (en) 2005-11-14 2008-08-12 Nokia Corporation Portable local server with context sensing
ATE547907T1 (de) 2005-12-12 2012-03-15 Ericsson Telefon Ab L M Verfahren und anordnung zum herstellen einer kommunikationssitzung für multimedia
JP2007219608A (ja) * 2006-02-14 2007-08-30 Fujitsu Ltd 負荷分散処理プログラム及び負荷分散装置
US7925624B2 (en) 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
CN101083620B (zh) * 2006-05-31 2010-09-29 华为技术有限公司 消息业务路由装置和方法
US7774463B2 (en) 2006-07-25 2010-08-10 Sap Ag Unified meta-model for a service oriented architecture
US8112550B2 (en) 2006-09-19 2012-02-07 Tacoda Llc System and method for preserving consumer choice
CN101197806B (zh) * 2006-12-08 2012-04-18 华为技术有限公司 一种路由会话的方法、网络及设备
US20080167906A1 (en) 2007-01-05 2008-07-10 De Marcken Carl Support for flexible travel planning
EP2118842A2 (en) 2007-01-05 2009-11-18 ITA Software, Inc. Providing travel information using cached query answers
US20080262878A1 (en) 2007-04-17 2008-10-23 Travelocity.Com Lp Systems, methods, and computer program products for generating and updating a cache of price and availability information for travel packages and components
US7870267B2 (en) 2007-05-16 2011-01-11 International Business Machines Corporation Creating global sessions across converged protocol applications
US8108528B2 (en) 2007-07-11 2012-01-31 International Business Machines Corporation System and method for verifying the identity of a chat partner during an instant messaging session
CN101187946A (zh) 2007-12-14 2008-05-28 无敌科技(西安)有限公司 利用实时信息更新数据系统及其方法
WO2009144862A1 (ja) 2008-05-28 2009-12-03 パナソニック株式会社 通信端末装置及び通信制御方法並びに通信制御プログラム
US20100312586A1 (en) 2009-06-03 2010-12-09 Drefs Martin J Generation of Travel-Related Offerings
EP2282287A1 (en) 2009-07-28 2011-02-09 Amadeus S.A.S. Method to keep coherent a travel shopping basket
US9515849B2 (en) 2009-12-22 2016-12-06 At&T Intellectual Property I, L.P. Method and apparatus for managing communication faults
US9880014B2 (en) 2010-11-24 2018-01-30 Telenav, Inc. Navigation system with session transfer mechanism and method of operation thereof
ES2689112T3 (es) 2011-03-15 2018-11-08 Amadeus S.A.S. Método y sistema para mecanismo de sincronización en sistema de reservas de múltiples servidores
EP2500848A1 (en) 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for centralized reservation context management on multi-server reservation system
ES2454548T3 (es) 2011-03-15 2014-04-10 Amadeus S.A.S. Procedimiento y sistema para proporcionar una sesión en un entorno heterogéneo
EP2521074A1 (en) 2011-05-02 2012-11-07 Amadeus S.A.S. Method and system for an improved reservation system optimizing repeated search requests

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310298A (ja) * 2003-04-03 2004-11-04 Ibm Japan Ltd 情報処理システム、情報処理装置、セッション管理方法及びプログラム
US20040249921A1 (en) * 2003-04-03 2004-12-09 International Business Machines Corporation System, method and program for coordinating timeouts for distributed servers
JP2006059321A (ja) * 2005-05-30 2006-03-02 Hitachi Ltd 分散オブジェクト環境におけるセッション維持方法

Also Published As

Publication number Publication date
EP2500856A1 (en) 2012-09-19
CA2824393A1 (en) 2012-09-20
KR101636601B1 (ko) 2016-07-20
ZA201305950B (en) 2015-03-25
BR112013019278A2 (pt) 2017-02-21
US8433809B2 (en) 2013-04-30
KR20140010960A (ko) 2014-01-27
SG192161A1 (en) 2013-08-30
CN103403749A (zh) 2013-11-20
JP6087847B2 (ja) 2017-03-01
AU2012228218A1 (en) 2013-05-02
WO2012123544A1 (en) 2012-09-20
US20120239728A1 (en) 2012-09-20
AU2012228218B2 (en) 2015-03-19
CA2824393C (en) 2018-05-01

Similar Documents

Publication Publication Date Title
JP6087847B2 (ja) 複数のソフトウェアアプリケーションを必要とするセッションを提供するための方法およびシステム
JP5898240B2 (ja) ヘテロジニアスな環境においてセッションを提供するための方法およびシステム
US8185897B2 (en) Task management system
CN106202505A (zh) 数据处理方法及其系统
US20230291815A1 (en) Just-in-time auto-provisioning systems and methods for information exchange platform
JP6050260B2 (ja) 独立した外部システムとのセッション同期のためのシステムおよび方法
CN109618003A (zh) 一种服务器规划方法、服务器及存储介质
US20050283455A1 (en) Processing of data sets in a computer network
JP2007249295A (ja) セッション管理プログラム、セッション管理方法およびセッション管理装置
KR20220120939A (ko) 네트워크 장비에서의 패킷 프로세싱 방법, 장치 및 컴퓨터 프로그램
JP2005292986A (ja) 業務処理用ejbコンポーネントシステム
JP2019040273A (ja) リソース管理サーバ、および、リソース管理方法
US20120144037A1 (en) Provisioning of services and equipment
Jablonski et al. Putting It All Together

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170202

R150 Certificate of patent or registration of utility model

Ref document number: 6087847

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250