(57)【要約】  サービス提供装置（２００）は、利用者（１３）ごとに提供サービスと、その版情報を記憶する版情報格納部（２０７）と、デフォルトクラス群（２２１）および版ごとの更新クラス群（２３１）を格納するローダ管理部（２１０）と、ローダ管理部（２１０）からデフォルトクラス群（２２１）を読出して実行するデフォルトローダ（２２３）と、更新クラス群（２３１）を読出して実行する差分ローダ（２３３）と、サービスの利用要求を受け付ける受付部（２０３）と、版情報格納部（２０７）を参照し、要求元の利用者（１３）の版を特定する特定部（２０５）と、デフォルトローダ（２２３）および特定された版の差分ローダ（２３３）を使用し、利用者（１３）に適した版のサービスオブジェクトを生成して処理を実行するオブジェクト管理部（２４１）と、サービスを利用者（１３）に提供する提供部（２４３）と、を備える。
2010116676.tif 000002
【特許請求の範囲】
【請求項１】
利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶手段と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶手段と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶手段と、
前記デフォルトクラス群記憶手段に記憶された前記デフォルトクラス群を読み出して実行するデフォルトロード手段と、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶手段に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ロード手段と、
前記利用者から前記サービスの利用の要求を受け付ける受付手段と、
前記版情報記憶手段を参照し、前記要求を受け付けた前記利用者に適した版を特定する特定手段と、
前記デフォルトロード手段および特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ロード手段を使用して、特定された前記利用者に適した版のサービスオブジェクトを生成して処理を実行するサービスオブジェクト管理手段と、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供する提供手段と、を備えるサービス提供装置。
【請求項２】
請求項１に記載のサービス提供装置において、
前記利用者による前記サービスの前記版ごとの利用状況を管理する利用状況管理手段と、
前記利用状況管理手段により管理されている前記利用状況に基づいて、前記利用者ごとに利用中のサービスの版を判断し、当該利用者の当該版の前記サービスの一連の利用が終了するまでは、同一の版を使用し、前記利用者ごとに提供される前記サービスの一貫性を維持する一貫性管理手段をさらに備えるサービス提供装置。
【請求項３】
請求項２に記載のサービス提供装置において、
前記利用状況管理手段および前記版情報記憶手段を参照して、いずれの前記利用者にも利用されていない旧版のサービスがあるか否かを判定する判定手段と、
利用されていない前記旧版のサービスがあると判定されたとき、当該サービスの前記旧版の前記更新版別クラス群を前記更新版別クラス群記憶手段から削除するとともに、対応する前記更新版別差分ロード手段を削除する削除手段と、をさらに備えるサービス提供装置。
【請求項４】
請求項２または３に記載のサービス提供装置において、
新しく更新された新版の差分クラス群を受け付ける更新受付手段と、
受け付けた前記新版の前記差分クラス群を直前の版の前記更新版別クラス群に追加して前記新版の前記更新版別クラス群として前記更新版別クラス群記憶手段に格納するとともに、当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ロード手段を追加する追加手段と、をさらに備えるサービス提供装置。
【請求項５】
請求項２または３に記載のサービス提供装置において、
新版としてサービス全般に跨る変更ルールを記述した設定を受け付ける更新受付手段と、
前記設定に基づき変更の対象となるクラスのみを抽出する更新クラス抽出手段と、
抽出された前記変更の対象となるクラスのみに対して変更を適用しながら前記変更済みクラス群を直前の版の更新版別クラス群に追加して前記新版の前記更新版別クラス群として、前記更新版別クラス群記憶手段に格納するとともに、当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ロード手段を追加する追加手段と、をさらに備えるサービス提供装置。
【請求項６】
請求項１乃至５いずれか１項に記載のサービス提供装置において、
前記利用者から利用するサービスおよび当該サービスの版の指定を受け付ける指定受付手段と、
前記利用者から指定された前記サービスおよび当該サービスの前記版の版情報を、前記版情報記憶手段に前記利用者に対応付けて登録する登録手段と、をさらに備えるサービス提供装置。
【請求項７】
請求項１乃至６いずれか１項に記載の複数のサービス提供装置と、
複数の前記サービス提供装置の負荷状態に応じて、利用者の要求に呼応してサービス提供を実施するサービス提供装置を決定し、前記サービス提供装置を割り当てる負荷分散装置と、を備え、
複数の前記サービス提供装置は、利用適用中のすべての版についてすべてのサービスを同様に前記利用者に提供できるように、
同じ版のデフォルトクラス群を前記デフォルトクラス群記憶手段に格納し、
同じ前記利用適用中のすべての版の更新版別クラス群を前記更新版別クラス群記憶手段にそれぞれ格納するサービス提供システム。
【請求項８】
サービス提供装置のデータ処理方法であって、
前記サービス提供装置が、
利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶装置と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶装置と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶装置と、
前記デフォルトクラス群記憶装置に記憶された前記デフォルトクラス群を読み出して実行するデフォルトローダと、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶装置に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ローダと、を備え、
前記サービス提供装置が、
前記利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて前記版情報記憶装置に記憶し、
前記デフォルトクラス群を前記デフォルトクラス群記憶装置に格納し、
前記最も古い版以降に更新された版ごとに、前記更新版別クラス群を前記更新版別クラス群記憶装置にそれぞれ格納し、
前記利用者から前記サービスの利用の要求を受け付け、
前記版情報記憶装置を参照し、前記要求を受け付けた前記利用者に適した版を特定し、
前記デフォルトローダおよび特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ローダを使用して、前記利用者に適した版のサービスオブジェクトを生成して処理を行い、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供するサービス提供装置のデータ処理方法。
【請求項９】
請求項８に記載のサービス提供装置のデータ処理方法において、
前記サービス提供装置は、前記利用者による前記サービスの前記版ごとの利用状況を管理する利用状況管理テーブルを記憶する記憶装置を備え、
前記サービス提供装置が、
前記利用者による前記サービスの前記版ごとの利用状況を前記利用状況管理テーブルで管理し、
前記利用状況管理テーブルの前記利用状況に基づいて、前記利用者ごとに利用中のサービスの版を判断し、
当該利用者の当該版の前記サービスの一連の利用が終了するまでは、同一の版を使用し、前記利用者ごとに提供される前記サービスの一貫性を維持するサービス提供装置のデータ処理方法。
【請求項１０】
請求項９に記載のサービス提供装置のデータ処理方法において、
前記サービス提供装置が、
前記利用状況管理テーブルおよび前記版情報記憶装置を参照して、いずれの前記利用者にも利用されていない旧版のサービスがあるか否かを判定し、
利用されていない前記旧版のサービスがあると判定されたとき、当該サービスの前記旧版の前記更新版別クラス群を前記更新版別クラス群記憶装置から削除するとともに、対応する前記更新版別差分ローダを削除するサービス提供装置のデータ処理方法。
【請求項１１】
請求項９または１０に記載のサービス提供装置のデータ処理方法において、
前記サービス提供装置が、
新しく更新された新版の差分クラス群を受け付け、
受け付けた前記新版の前記差分クラス群を直前の版の前記更新版別クラス群に追加して前記新版の前記更新版別クラス群として前記更新版別クラス群記憶装置に格納するとともに、当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ローダを追加するサービス提供装置のデータ処理方法。
【請求項１２】
請求項９または１０に記載のサービス提供装置のデータ処理方法において、
前記サービス提供装置が、
新しく更新された新版向けのサービス全体に跨る変更ルールを記述した設定を受け付け、
受け付けた前記設定に基づき変更の対象となるクラスのみを抽出し、
抽出した前記変更の対象となるクラスのみに対して変更を適用しながら前記変更済みクラス群を直前の版の前記更新版別クラス群に追加して前記新版の前記更新版別クラス群として前記更新版別クラス群記憶装置に格納するとともに、当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ローダを追加するサービス提供装置のデータ処理方法。
【請求項１３】
請求項８乃至１２いずれか１項に記載のサービス提供装置のデータ処理方法において、
前記サービス提供装置が、
前記利用者から利用するサービスおよび当該サービスの版の指定を受け付け、
前記利用者から指定された前記サービスおよび当該サービスの前記版の版情報を、前記版情報記憶装置に前記利用者に対応付けて登録するサービス提供装置のデータ処理方法。
【請求項１４】
サービス提供装置を制御するコンピュータプログラムであって、
コンピュータが、
利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶装置と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶装置と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶装置と、
前記デフォルトクラス群記憶装置に記憶された前記デフォルトクラス群を読み出して実行するデフォルトローダと、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶装置に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ローダと、を備え、
前記コンピュータに、
前記利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて前記版情報記憶装置に記憶する手順と、
前記デフォルトクラス群を前記デフォルトクラス群記憶装置に格納する手順と、
前記最も古い版以降に更新された版ごとに、前記更新版別クラス群を前記更新版別クラス群記憶装置にそれぞれ格納する手順と、
前記利用者から前記サービスの利用の要求を受け付ける手順と、
前記版情報記憶装置を参照し、前記要求を受け付けた前記利用者に適した版を特定する手順と、
前記デフォルトローダおよび特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ローダを使用して、前記利用者に適した版のサービスオブジェクトを生成して処理を実行する手順と、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供する手順と、を実行させるためのコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムにおいて、
前記コンピュータが、前記利用者による前記サービスの前記版ごとの利用状況を管理する利用状況管理テーブルを記憶する記憶装置を備え、
前記利用者による前記サービスの前記版ごとの利用状況を前記利用状況管理テーブルで管理する手順と、
前記利用状況管理テーブルの前記利用状況に基づいて、前記利用者の利用中のサービスの版を判断する手順と、
当該利用者の当該版のサービスの一連の利用が終了するまでは、同一の版を使用し、前記利用者ごとに提供される前記サービスの一貫性を維持する手順と、をコンピュータにさらに実行させるためのコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムにおいて、
前記利用状況管理テーブルおよび前記版情報記憶装置を参照して、いずれの前記利用者にも利用されていない旧版のサービスがあるか否かを判定する手順と、
利用されていない前記旧版のサービスがあると判定されたとき、当該サービスの前記旧版の前記更新版別クラス群を前記更新版別クラス群記憶装置から削除するとともに、対応する前記更新版別差分ローダを削除する手順と、をコンピュータにさらに実行させるためのコンピュータプログラム。
【請求項１７】
請求項１５または１６に記載のコンピュータプログラムにおいて、
新しく更新された新版の差分クラス群を受け付ける手順と、
受け付けた前記新版の前記差分クラス群を直前の版の前記更新版別クラス群に追加して前記新版の前記更新版別クラス群として前記更新版別クラス群記憶装置に格納する手順と、
当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ローダを追加する手順と、をコンピュータにさらに実行させるためのコンピュータプログラム。
【請求項１８】
請求項１５または１６に記載のコンピュータプログラムにおいて、
新しく更新された新版向けのサービス全体に跨る変更ルールを記述した設定を受け付ける手順と、
受け付けた前記設定に基づき変更の対象となるクラスのみを抽出する手順と、
抽出した前記変更の対象となるクラスのみに対して変更を適用しながら前記変更済みクラス群を直前の版の前記更新版別クラス群に追加して前記新版の前記更新版別クラス群として前記更新版別クラス群記憶装置に格納する手順と、
当該新版の前記更新版別クラス群に対応する前記新版の更新版別差分ローダを追加する手順と、をコンピュータにさらに実行させるためのコンピュータプログラム。
【請求項１９】
請求項１４乃至１８いずれか１項に記載のコンピュータプログラムにおいて、
前記利用者から利用するサービスおよび当該サービスの版の指定を受け付ける手順と、
前記利用者から指定された前記サービスおよび当該サービスの前記版の版情報を、前記版情報記憶装置に前記利用者に対応付けて登録する手順と、をコンピュータにさらに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス提供装置、サービス提供システム、サービス提供装置のデータ処理方法およびコンピュータプログラムに関し、特に、複数の版のサービスを多重に提供するサービス提供装置、サービス提供システム、サービス提供装置のデータ処理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、複数の利用者に対して同一のプラットフォーム上で様々なサービスを提供するＳａａＳ（Software as a Service）／ＡＳＰ（Application Service Provider）によるサービス提供モデルが注目を集めている。こうした形態のサービスの代表的なものとして、Ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ（ｈｔｔｐ：／／ｗｗｗ．ｓａｌｅｓｆｏｒｃｅ．ｃｏｍ／ｊｐ／）などが存在する。ＳａａＳ／ＡＳＰ型のサービスは、一定のＡＰＩ（Application Program Interface）を公開し、利用者からＳＯＡＰ（Simple Object Access Protocol）、ＨＴＴＰ（HyperText Transfer Protocol）などのプロトコルを用いてその機能を利用できるようにしているものがある。【０００３】
特許文献１（特開２００８−１２３１８３号公報）に記載のシステムは、ＳａａＳ型のサービスにおいて、サービスをソフトウェアの機能単位で提供することで、利用者が用途ごとに必要最小限のサービスを利用できることが記載されている。【０００４】
一般にこのサービスはバグ対応、機能向上などの目的で不定期に新しい版のものに更新され、個々のＡＰＩやＡＰＩによって実現される機能は変更、追加、削除されうる。【０００５】
このようなサービス更新に関連した技術として、更新モジュールを自動的に最新にする方法が特許文献２（特開２００６−０１１８０１号公報）に記載されている。しかしながら、通常サービスの更新は継続的に行われるものであり、特許文献１に記載の技術のような、単純な新版、旧版という２種類ではなく、複数のバージョンＶ１．０、Ｖ１．０１、Ｖ１．１２、Ｖ２．０といった具合に最新版と複数の旧版が存在するのが一般的であり、一部の利用者については旧版のサービスを提供し続ける必要がある。【０００６】
複数の版のサービスを継続提供するという要件に加えて、多くのＳａａＳ／ＡＳＰ型のサービスは、サービス更新時においてもサービスを継続する必要がある。このため既存のＡＳＰ事業者は旧版のサービスを継続しつつ、これらが稼働するのとは別のサーバハードウェアやＶＭＷａｒｅ（登録商標）、Ｘｅｎ（登録商標）などに代表される仮想化技術による仮想ＯＳ（Operating System）に新版サービスを配備して、あるタイミングで新版、旧版を入れ替えるという方法をとってきた。一方で、新版のＡＰＩや機能に追従できない一部の利用者に対しては旧版のサービスを提供しているハードウェアの一部を残して、旧版サービスの提供を継続する。【０００７】
このときの入れ替えの例を図１９で説明する。利用者群３（Ｕ１）は負荷分散器７を介してＶ１．００版のサービス提供装置群１０で提供されるサービスを利用している。このとき、負荷分散器７は多数の利用者３からの複数の要求を、サービス提供装置群１０内のサービス提供装置１１〜１２へ適切に分配する機能を持つ。サービス提供装置１１は要求受信応答部１０１で利用者からの要求を受信すると、ローダ１０２から処理に必要なオブジェクトを取得する。ローダ１０２には配備時にＶ１．００サービス処理を実装したクラス群１０３が読み込まれており、ローダ１０２はここから処理に必要なオブジェクトを生成して要求受信応答部１０１へ返す。処理が完了したら要求受信応答部１０１は結果を応答として利用者３へ返す。【０００８】
そして、このサービスをＶ１．０１版に更新する場合、Ｖ１．０１版のサービス提供装置群１５を増設用に用意する。サービス提供装置群１５のサービス提供装置１６〜１７は、要求受信応答部１０１およびローダ１０２はサービス提供装置群１０のものと同一で、ローダ１０２に読み込まれているＶ１．０１サービス用の処理を実装したクラス群１５３のみが異なっている。【０００９】
次に適切なタイミングで負荷分散器７の設定を変更し、Ｖ１．００版のサービス提供装置群１０への接続は止め、利用者群３からの要求をＶ１．０１版のサービス提供装置群１５内のサービス提供装置１６〜１７へ割り振る。利用者３の内、Ｖ１．００版でのサービスを継続する利用者群Ｕ２からの要求については、負荷分散器７はＶ１．００版のサービス提供装置群１０へ要求を割り振るが、一般に旧版の利用は縮小傾向にあるため、管理者は適宜Ｖ１．００版のサービス提供装置群１０内のサービス提供装置を撤去またはＶ１．０１版へ移行することによって旧版のサービス提供装置群１０を縮退する。【００１０】
上記のような版の多重管理の方法は、ほぼ同一だが一部分が異なるサービスを複数配備することにより、共通部分を多重に配備している。たとえば、Ｖ１．００サービス用クラス群１０３の一部のクラスのみを更新した場合でも、Ｖ１．０１サービス用クラス群１５３は更新のない共通部分も含めて読み込まれなければならない。【００１１】
こうした方法に対して、サービス更新時にサービス全体のコピーを用意するのではなく必要な部分のみを改版する既存技術として、高度にモジュール化されたソフトウェアの一部分を変更し、ソフトウェア全体を停止することなく再配備するというシステムの一例が、特許文献３（特開２００３−３３７７０２号公報）に記載されている。【００１２】
また、特許文献４（特開２００８−１６５３７７号公報）に記載のシステムは、一アプリケーション実行時に、ファイルシステム上の複数バージョンのライブラリを管理する方法の最適化を行う構成が記載されている。このシステムでは、同一ライブラリの異なる版を同一システムで利用可能とし、パッケージの版の更新後も、古い版のプログラムをバックアップしておくことで、以前の古い版に戻すことができるとされている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−１２３１８３号公報
【特許文献２】特開２００６−０１１８０１号公報
【特許文献３】特開２００３−３３７７０２号公報
【特許文献４】特開２００８−１６５３７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、上述したように、ＳａａＳ／ＡＳＰ型のサービスでは、サービスの要求元利用者の要件に応じて複数の版のサービスを多重に提供する必要がある。【００１５】
上述した文献記載のシステムにおいては、ＡＳＰなどサーバ側でアプリケーションを実行し、その結果を利用者に返すことでサービスを提供するシステムではなく、端末側でアプリケーションを実行するため、同じアプリケーションの複数のバージョンを同時に実行する必要はなく、仮に、上記文献記載の技術をサーバに適用し、複数のバージョンのアプリケーションを同時に実行するには、バージョンごとに適切なマウントポイントを設定して、個別にアプリケーションを立ち上げる必要がある。この場合、異なるバージョンのアプリケーション間で共通のライブラリであってもメモリ上には重複して読み込まれることから、メモリ使用容量が増大し、負荷がかかるといった問題点があった。【００１６】
本発明の目的は、上述した課題である、旧版のサービス継続に必要な計算機リソースをできるだけ効率化でき、かつ、サービスの要求元の要件に応じて複数の版のサービスを多重に提供することができるサービス提供装置、システム、方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明のサービス提供装置は、利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶手段と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶手段と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶手段と、
前記デフォルトクラス群記憶手段に記憶された前記デフォルトクラス群を読み出して実行するデフォルトロード手段と、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶手段に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ロード手段と、
前記利用者から前記サービスの利用の要求を受け付ける受付手段と、
前記版情報記憶手段を参照し、前記要求を受け付けた前記利用者に適した版を特定する特定手段と、
前記デフォルトロード手段および特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ロード手段を使用して、特定された前記利用者に適した版のサービスオブジェクトを生成して処理を実行するサービスオブジェクト管理手段と、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供する提供手段と、を備える。【００１８】
本発明のサービス提供システムは、複数の上記サービス提供装置と、
複数の前記サービス提供装置の負荷状態に応じて、利用者の要求に呼応してサービス提供を実施するサービス提供装置を決定し、前記サービス提供装置を割り当てる負荷分散装置と、を備え、
複数の前記サービス提供装置は、利用適用中のすべての版についてすべてのサービスを同様に前記利用者に提供できるように、
同じ版のデフォルトクラス群を前記デフォルトクラス群記憶手段に格納し、
同じ前記利用適用中のすべての版の更新版別クラス群を前記更新版別クラス群記憶手段にそれぞれ格納する。【００１９】
本発明のサービス提供装置のデータ処理方法は、
前記サービス提供装置が、
利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶装置と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶装置と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶装置と、
前記デフォルトクラス群記憶装置に記憶された前記デフォルトクラス群を読み出して実行するデフォルトローダと、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶装置に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ローダと、を備え、
前記サービス提供装置が、
前記利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて前記版情報記憶装置に記憶し、
前記デフォルトクラス群を前記デフォルトクラス群記憶装置に格納し、
前記最も古い版以降に更新された版ごとに、前記更新版別クラス群を前記更新版別クラス群記憶装置にそれぞれ格納し、
前記利用者から前記サービスの利用の要求を受け付け、
前記版情報記憶装置を参照し、前記要求を受け付けた前記利用者に適した版を特定し、
前記デフォルトローダおよび特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ローダを使用して、前記利用者に適した版のサービスオブジェクトを生成して処理を実行し、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供する。【００２０】
本発明のサービス提供装置を制御するコンピュータプログラムは、
コンピュータが、
利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて記憶する版情報記憶装置と、
前記利用者に提供すべき前記サービスの中で最も古い版のデフォルトクラス群を格納するデフォルトクラス群記憶装置と、
前記最も古い版以降に更新された版ごとに、前記デフォルトクラス群との差分クラス群を含む更新版別クラス群をそれぞれ格納する更新版別クラス群記憶装置と、
前記デフォルトクラス群記憶装置に記憶された前記デフォルトクラス群を読み出して実行するデフォルトローダと、
前記更新版別クラス群ごとに設けられ、前記更新版別クラス群記憶装置に記憶された前記更新版別クラス群をそれぞれ読み出して実行する更新版別差分ローダと、を備え、
コンピュータに、
前記利用者ごとに提供すべきサービスと、前記サービスの版情報を関連付けて前記版情報記憶装置に記憶する手順と、
前記デフォルトクラス群を前記デフォルトクラス群記憶装置に格納する手順と、
前記最も古い版以降に更新された版ごとに、前記更新版別クラス群を前記更新版別クラス群記憶装置にそれぞれ格納する手順と、
前記利用者から前記サービスの利用の要求を受け付ける手順と、
前記版情報記憶装置を参照し、前記要求を受け付けた前記利用者に適した版を特定する手順と、
前記デフォルトローダおよび特定された前記版の前記更新版別クラス群に対応する前記更新版別差分ローダを使用して、前記利用者に適した版のサービスオブジェクトを生成して処理を実行する手順と、
前記処理を実行した結果により前記要求に応じた前記サービスを前記利用者に提供する手順と、を実行させるためのコンピュータプログラムである。【００２１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。【００２２】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。【００２３】
また、本発明のデータ処理方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明のデータ処理方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障しない範囲で変更することができる。【００２４】
さらに、本発明のデータ処理方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００２５】
本発明によれば、サービス更新時におけるサービス停止と、利用者側で不整合の発生とを解決するサービス提供装置、サービス提供システム、サービス提供装置のデータ処理方法およびコンピュータプログラムが提供される。
【図面の簡単な説明】
【００２６】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００２７】
【図１】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図２】本発明の実施の形態に係るサービス提供装置の版情報格納部に記憶している版情報管理テーブルの構造の一例を示す図である。
【図３】本発明の実施の形態に係るサービス提供システムの動作の一例を示すフローチャートである。
【図４】本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクト動作時の動作の一例を示すフローチャートである。
【図５】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図６】本発明の実施の形態に係るサービス提供装置の利用状況記憶部に記憶しているセッション情報テーブルの構造の一例を示す図である。
【図７】本発明の実施の形態に係るサービス提供システムの動作の一例を示すフローチャートである。
【図８】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図９】本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクトの版削除時の動作の一例を示すフローチャートである。
【図１０】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図１１】本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクトの版追加時の登録動作の一例を示すフローチャートである。
【図１２】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図１３】本発明の一実施例におけるユーザリクエストデータの一例を示す図である。
【図１４】本発明の一実施例におけるセッション付きユーザリクエストデータの一例を示す図である。
【図１５】本発明の一実施例におけるサービス要求に対するサービスレスポンスの一例を示す図である。
【図１６】本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
【図１７】本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクトの版追加時の登録動作の一例を示すフローチャートである。
【図１８】本発明の一実施例におけるＡｓｐｅｃｔ記述による既存クラスの更新例を説明する図である。
【図１９】異なるバージョンのサービスを配備したサービス提供装置を備えた構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２８】
（第１の実施の形態）
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２９】
図１は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
まず、本明細書において「利用者」とは、サービス提供装置で提供されているサービスを利用する主体全般をさすものとし、それは人間、人間が使用している端末装置およびプログラム、さらに人間のインタラクションとは直接関係なく動作している装置およびプログラムのことをも指すものとする。
【００３０】
また、「利用者」は、企業単位、企業の所属部門ごとのような複数のユーザをまとめた利用者群であってもよいし、個人ユーザであってもよい。
【００３１】
まず、本発明の前提を述べる。本発明におけるサービスオブジェクトは複数のクラスを実体化したインスタンスから構成される。このインスタンスはローダによって管理されているクラスから生成され、メモリ上に配置されることでサービスオブジェクトとして実行可能な状態となる。
【００３２】
本発明のシステムが提供するサービスとは、ソフトウェアで実現できる何らかの機能であり、たとえば、ワープロや表計算などの市販のパッケージソフトウェアだけでなく、予定表やプロジェクト管理、掲示板、電子会議室、Ｗｅｂメールの配信などにより社内の情報共有を行うグループウェアと呼ばれるもの、財務・会計を行うもの、オンラインストレージによってデータ共有を行うもの、各業種や各企業に特化された、または汎用の営業管理、財務管理、生産管理、ＣＲＭ（Customer Relationship Management）顧客管理を行うものなどビジネス用のソフトウェア、およびＣＡＤ（computer aided design）や構造計算、画像／音声などのメディア処理、流体シミュレーションのような高度な科学技術計算を行うライブラリの機能を有するものを含む。
特に、頻繁に機能更新が発生し、多数のユーザによって強要されるようなＷｅｂアプリケーションサービスに有用である。
【００３３】
本発明の実施の形態に係るサービス提供装置２００は、利用者１３ごとに提供すべきサービスと、サービスの版情報を関連付けて記憶する版情報記憶部（版情報格納部２０７）と、利用者１３に提供すべきサービスの中で最も古い版のデフォルトクラス群２２１を格納するデフォルトクラス群記憶部（ローダ管理部２１０）と、最も古い版以降に更新された版ごとに、デフォルトクラス群２２１との差分クラス群を含む更新版別クラス群（更新クラス群２３１）をそれぞれ格納する更新版別クラス群記憶部（ローダ管理部２１０）と、ローダ管理部２１０に記憶されたデフォルトクラス群２２１を読み出して実行するデフォルトロード部（デフォルトローダ２２３）と、更新クラス群２３１ごとに設けられ、ローダ管理部２１０に記憶された更新クラス群２３１をそれぞれ読み出して実行する更新版別差分ロード部（差分ローダ２３３）と、利用者１３からサービスの利用の要求を受け付ける受付部（要求受付部２０３）と、版情報格納部２０７を参照し、要求を受け付けた利用者１３に適した版を特定する特定部（ローダ特定部２０５）と、デフォルトローダ２２３および特定された利用者１３に適した版の更新クラス群２３１に対応する差分ローダ２３３を使用して、特定された利用者１３に適した版のサービスオブジェクトを生成して処理を実行するサービスオブジェクト管理部２４１と、処理を実行した結果により要求に応じたサービスを利用者１３に提供する提供部（サービス提供部２４３）と、を備える。
【００３４】
利用者１３（図中、利用者Ｕ１およびＵ２）は、サービス提供装置２００にサービス要求を送信する。同図では、利用者Ｕ１より利用者Ｕ２の方がユーザ数やサービスの利用量や頻度が多いことを示しており、ユーザ数やサービスの利用量あるいは頻度などは利用者１３ごとに異なることを示している。
【００３５】
サービス提供装置２００は、インターフェイス部（Ｉ／Ｆ）２０１と、要求受付部２０３と、ローダ特定部２０５と、版情報格納部２０７と、ローダ管理部２１０と、サービスオブジェクト管理部２４１と、サービス提供部２４３と、を備えている。
ローダ管理部２１０は、デフォルトクラス群２２１と、デフォルトローダ２２３と、少なくとも一つの差分ローダ２３３と、各差分ローダ２３３に対応する更新クラス群２３１と、を有する。
【００３６】
サービス提供装置２００は、図示しないＣＰＵ（Central Processing Unit）やメモリ、ハードディスク、および通信装置を備え、キーボードやマウス等の入力装置やディスプレイやプリンタ等の出力装置が接続可能なコンピュータであり、例えば、記録媒体（磁気ディスク、半導体メモリ、光ディスク等）に格納されたコンピュータプログラムにしたがって処理を実行するコンピュータによって各構成要素の各機能が実現される。なお、以下の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００３７】
また、サービス提供装置の各構成要素は、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
【００３８】
そして、ＣＰＵが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、各ユニットの各機能を実現することができる。
本実施形態のコンピュータプログラムは、サービス提供装置２００を制御するコンピュータプログラムであって、コンピュータに、利用者１３ごとに提供すべきサービスと、サービスの版情報を関連付けて版情報格納部２０７に記憶する手順と、デフォルトクラス群２２１をローダ管理部２１０に格納する手順と、最も古い版以降に更新された版ごとに、更新クラス群２３１をローダ管理部２１０にそれぞれ格納する手順と、利用者１３からサービスの利用の要求を受け付ける手順と、版情報格納部２０７を参照し、要求を受け付けた利用者１３に適した版を特定する手順と、デフォルトローダ２２３および特定された利用者１３に適した版の更新クラス群２３１に対応する差分ローダ２３３を使用して、利用者１３に適した版のサービスオブジェクトを生成して処理を実行する手順と、処理を実行した結果により要求に応じた前記サービスを利用者１３に提供する手順と、を実行させるように記述されている。
【００３９】
インターフェイス部２０１は、インターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などのネットワーク２５を介して利用者１３の端末や装置と通信する。要求受付部２０３は、利用者１３からの要求をネットワーク２５を介して受信し、受信した要求内容から、各種情報を取り出し、サービスオブジェクト管理部２４１へ渡す。詳細には、要求受付部２０３は、利用者１３から受信した要求内容から、要求元を判別するため情報、一連の関連する要求を識別するＩＤ、利用サービスを識別する情報、および利用サービスに対するパラメータを取り出し、サービスオブジェクト管理部２４１へ渡す。なお、特に一連の関連する要求について、本発明では以下「セッション」と呼ぶこととし、このＩＤをセッションＩＤとする。
【００４０】
サービスオブジェクト管理部２４１は、要求受付部２０３から受け取ったパラメータに基づいて、要求元の利用者１３に応じて適切なサービスオブジェクトを構成して実行する。詳細には、サービスオブジェクト管理部２４１は、要求受付部２０３から受け取ったパラメータをローダ特定部２０５に渡し、利用者１３に適した版のローダを要求する。そして、ローダ特定部２０５から返されたローダを用いてサービスオブジェクトを生成する。さらにこのサービスオブジェクトにパラメータを渡して処理を行い、その結果をサービス提供部２４３に渡す。
【００４１】
ローダ特定部２０５は、サービスオブジェクト管理部２４１からの要求に応じて、ユーザごとの利用サービスの版に応じて適切なローダを特定する。詳細には、ローダ特定部２０５は、版情報格納部２０７の版情報管理テーブル７００から、要求元の利用者１３に対して提供すべき版情報を取得する。なお、もっとも古いバージョンが要求された場合には、差分ローダ２３３は取得せず、デフォルトローダ２２３のみを取得する。
【００４２】
版情報格納部２０７は、利用者ごとにどの版のサービスを利用するのかを格納する。図２は、版情報格納部２０７に記憶している版情報管理テーブル７００の構造の一例を示す図である。同図に示すように、版情報管理テーブル７００は、利用者１３の利用者ＩＤ、その利用者１３に提供するサービス、その提供されるサービスの版番号と、をそれぞれ対応付ける利用者ＩＤ欄７０１、サービス名欄７０２、版番号欄７０３を有する。なお、版番号欄７０３では、特定の版の指定だけでなく、たとえば、常に最新の版にするなどの指定も可能とする。
【００４３】
図１に戻り、サービス提供部２４３は、サービスオブジェクト管理部２４１から処理の結果を受け取り、利用者１３にネットワーク２５を介して提供する。これにより、利用者１３の要求にあったサービスを提供することができる。
【００４４】
ローダ管理部２１０において、デフォルトローダ２２３は、本システムのすべての利用者１３に共通のデフォルトクラス群２２１を管理する。差分ローダ２３３は、版ごとのデフォルトクラス群２２１からの複数の更新クラス群２３１を管理する複数の差分ローダＡ〜Ｘからなる。デフォルトローダ２２３と、すべての差分ローダＡ〜Ｘの間には親子関係があり、デフォルトローダ２２３がすべての差分ローダ２３３の親となる。なお、差分ローダ２３３は提供する必要がある版の数だけ存在し、図１のＶ１．０１、Ｖ１．０２、Ｖ２．００といった版番号やローダの数は例に過ぎない。また、この各差分ローダ２３３は提供が必要な版の数だけ用意され、図中の３つに限定されるわけではない。
【００４５】
最も古い版のサービスを実現するために必要なクラス群を格納したデフォルトクラス群２２１は、デフォルトローダ２２３がメモリ上にロードし、これより新しい版の更新部分のクラスからなる更新クラス群２３１はそれぞれの版用の差分ローダ２３３がロードする。
【００４６】
このように構成された本実施形態のサービス提供システムの動作について以下に説明する。
図３は、本実施形態のサービス提供システムの動作の一例を示すフローチャートである。以下、図１乃至図３を用いて説明する。
【００４７】
本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置２００が、利用者１３ごとに提供すべきサービスと、サービスの版情報を関連付けて版情報格納部２０７に記憶し、デフォルトクラス群２２１をローダ管理部２１０に格納し、最も古い版以降に更新された版ごとに、更新クラス群２３１をローダ管理部２１０にそれぞれ格納し、利用者１３からサービスの利用の要求を受け付け（ステップＳ１０１）、版情報格納部２０７を参照し、要求を受け付けた利用者１３に適した版を特定し（ステップＳ１０５）、デフォルトローダ２２３および特定された利用者１３に適した版の更新クラス群２３１に対応する差分ローダ２３３を使用して、利用者１３に適した版のサービスオブジェクトを生成して処理を行い（ステップＳ１０７、ステップＳ１０９）、処理を実行した結果により要求に応じたサービスを利用者１３に提供する（ステップＳ１１１）。
【００４８】
具体的には、まず、要求受付部２０３で利用者１３からの要求データを受信する（ステップＳ１０１）。そして、要求受付部２０３は、受信した要求データから要求者の利用者ＩＤ、サービスまたは操作名、および利用サービスに対するパラメータを抽出し、サービスオブジェクト管理部２４１に受け渡す（ステップＳ１０３）。サービスオブジェクト管理部２４１からパラメータをローダ特定部２０５が受け取り、ローダ特定部２０５が、版情報格納部２０７を参照し、利用者ＩＤからその利用者１３に提供すべき版情報を取得する（ステップＳ１０５）。
【００４９】
そして、ローダ特定部２０５は、ローダ管理部２１０にアクセスし、得られた版に該当する差分ローダ２３３のいずれかとデフォルトローダ２２３を取得する（ステップＳ１０７）。そして、ローダ特定部２０５は、サービスオブジェクト管理部２４１に取得した差分ローダ２３３とデフォルトローダ２２３を返す。このときもっとも古い版を利用者１３に提供する場合、ローダ特定部２０５は差分ローダ２３３は選択せず、デフォルトローダ２２３のみをサービスオブジェクト管理部２４１に返す。
【００５０】
サービスオブジェクト管理部２４１は、特定部２０５から差分ローダ２３３とデフォルトローダ２２３を受け取り、取得したローダを使用して利用者１３から要求されたサービスオブジェクトを実行する（ステップＳ１０９）。サービスオブジェクト管理部２４１はこの実行結果を、サービス提供部２４３を介して利用者１３へ返し（ステップＳ１１１）、処理を終了する。すなわち、サービス提供部２４３からネットワーク２５を介して利用者１３にサービスが提供される。
【００５１】
図４は、本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクト動作時の動作の一例を示すフローチャートである。特に、サービス提供システムにおけるサービスオブジェクト動作を示す。以下、図４を参照して、サービスオブジェクト動作時にどのようにローダが使用されるかを説明する。
【００５２】
サービスオブジェクト管理部２４１において、サービスオブジェクト動作時にはコード内でクラスへの参照が発生する（ステップＳ１５０１）。このローダ内のロード済みクラスを参照するとき、まず、ローダ特定部２０５から返された差分ローダに該当クラスがあるかどうかを確認する（ステップＳ１５０３）。該当クラスが存在する場合（ステップＳ１５０３のＹＥＳ）、この該当クラスを、実際に参照するロード済みクラスとして選択する（ステップＳ１５０５）。該当クラスが差分ローダ内に存在しない場合（ステップＳ１５０３のＮＯ）、もしくはローダ特定部２０５からデフォルトローダ２２３のみが渡されている場合（ステップＳ１５０３のＮＯ）、デフォルトローダ２２３に該当クラスがあるかどうかを確認する（ステップＳ１５０７）。
【００５３】
該当クラスが存在する場合（ステップＳ１５０７のＹＥＳ）、この該当クラスを実際に参照するロード済みクラスとして選択する（ステップＳ１５０９）。デフォルトローダ２２３にも該当クラスが存在しない場合は（ステップＳ１５０７のＮＯ）、クラスが発見できない旨のエラーを発生し、例外処理を行う（ステップＳ１５１１）。
【００５４】
ステップＳ１５０５またはステップＳ１５０９で、参照するロード済みクラスが選択された後、参照元のサービスオブジェクトに対し、このロード済みクラスを返却する（ステップＳ１５１３）。このような動作によって、差分ローダに存在するロード済みクラスを優先して、存在しない場合のみデフォルトローダ２２３のクラスを参照することができる。
【００５５】
以上、説明したように、本実施形態のサービス提供システムによれば、サービスの要求元（利用者１３）の要件に応じて複数の版のサービスを多重に提供することができ、利用者１３に適した版のサービスを、効率よく提供できる。本実施形態のサービス提供装置２００は、サービス提供を要求されている各版に対する更新クラスのみを保持し、共通クラスは共有することによってクラスの多重読み込みをしなくて済むため、複数の版のサービスを提供するコストを小さくできる。すなわち、旧版のサービス継続に必要な計算機リソースをできるだけ効率化できる。
【００５６】
（第２の実施の形態）
図５は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
本実施形態のサービス提供システムは、上記実施形態とは、利用者のサービス利用状況を確認しながら提供するサービスの一貫性を維持する点で相違する。
【００５７】
本実施形態のサービス提供装置２００は、複数の利用者ごとに異なる要求に応じた複数の版のサービスを提供する場合に、サービス更新時に利用者側でサービス不整合が発生するという問題点を解決することができる。
この問題点について、以下に詳しく説明する。利用者は提供されているサービスの機能のいくつかを組みあわせて自身のアプリケーションを実装しているケースがある。この場合、一連の利用者側アプリケーションの処理においてサービスの機能を順次呼び出して使うことになる。この時、利用者側アプリケーションの処理をまったく考慮せず突然サービス側で新版に更新した場合、一連の処理の途中で旧版の機能と新版の機能が入り混じって呼び出されてしまうことがあるためである。
【００５８】
本実施形態のサービス提供システムは、利用者のサービス利用状況を確認しながら提供するサービスの一貫性を維持することで、利用者側で不整合が発生するという課題を解決することができる。
【００５９】
本実施形態のサービス提供装置３００は、利用者１３によるサービスの版ごとの利用状況を管理する利用状況記憶部３０１と、利用状況記憶部３０１により管理されている利用状況に基づいて、利用者１３ごとに利用中のサービスの版を判断し、当該利用者１３の当該版のサービスの一連の利用が終了するまでは、同一の版を使用し、利用者１３ごとに提供されるサービスの一貫性を維持する一貫性管理部３０３をさらに備える。
【００６０】
具体的には、サービス提供装置３００は、図１の上記実施形態のサービス提供装置２００と同様な構成を有し、サービスオブジェクト管理部２４１に換えてサービスオブジェクト管理部３４１を備えるとともに、さらに、利用状況記憶部３０１と、一貫性管理部３０３と、を備えている。
【００６１】
利用状況記憶部３０１は、利用者１３によるサービスの版ごとの利用状況を管理する。図６は、利用状況記憶部３０１に記憶しているセッション情報テーブル５００の構造の一例を示す図である。同図に示すように、セッション情報テーブル５００は、セッションを識別するセッションＩＤ欄５０１、利用者ＩＤ欄５０２、版番号欄５０３、有効期限欄５０４を有する。
【００６２】
図５に戻り、一貫性管理部３０３は、利用者１３からの一連の要求群を管理するものであり、利用状況記憶部３０１により管理されている利用状況に基づいて、利用者１３ごとに利用中のサービスの版を判断し、当該利用者１３の当該版のサービスの一連の利用が終了するまでは、同一の版を使用し、利用者１３ごとに提供されるサービスの一貫性を維持する。
【００６３】
サービスオブジェクト管理部３４１は、ローダ特定部２０５から利用者１３に提供すべき版情報を取得し、利用者ＩＤおよび版情報に基づいて、該当セッションＩＤのレコードがセッション情報テーブル５００内に存在するかを一貫性管理部３０３へ問い合わせる。該当セッションＩＤのレコードがセッション情報テーブル５００内に存在する場合は、サービスオブジェクト管理部３４１は、ローダ特定部２０５に対してそのレコードに記録されている版の差分ローダ２３３のいずれかとデフォルトローダ２２３を要求する。該当セッションＩＤのレコードがセッション情報テーブル５００内に存在しない場合は、サービスオブジェクト管理部３４１は、先にローダ特定部２０５から返された版の差分ローダ２３３のいずれかとデフォルトローダ２２３を要求する。
【００６４】
このように構成された本実施形態のサービス提供装置３００の動作について、以下に説明する。図７は、本発明の実施の形態に係るサービス提供システムの動作の一例を示すフローチャートである。以下、図５乃至図７を用いて説明する。
【００６５】
本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置３００が、利用者１３によるサービスの版ごとの利用状況をセッション情報テーブル５００で管理し、セッション情報テーブル５００の利用状況に基づいて、利用者１３ごとに利用中のサービスの版を判断し（ステップＳ１００７〜ステップＳ１０１３）、当該利用者１３の当該版のサービスの一連の利用が終了するまでは、同一の版を使用し、利用者１３ごとに提供されるサービスの一貫性を維持する。
【００６６】
具体的には、本実施形態のサービス提供装置３００は、上記実施形態のサービス提供装置２００の図３のフローチャートと同様のステップＳ１０１、ステップＳ１０５〜ステップＳ１１１を有するとともに、さらに、ステップＳ１００３。ステップＳ１００７、ステップＳ１００９、ステップＳ１０１１、およびステップＳ１０１３を有する。
【００６７】
ステップＳ１０１で要求受付部２０３が受信した利用者１３からの要求データをサービスオブジェクト管理部３４１が受け取り、利用者１３からの要求データから利用者ＩＤ、セッションＩＤ、サービスまたは操作名、およびパラメータを抽出し、ローダ特定部２０５に渡す（ステップＳ１００３）。そして、ローダ特定部２０５では、図３と同様の処理（ステップＳ１０５）が行われ、利用者１３に提供すべき版情報がサービスオブジェクト管理部３４１に返される。
【００６８】
続いて、サービスオブジェクト管理部３４１は、一貫性管理部３０３に該当セッションＩＤのレコードがセッション情報テーブル５００内に存在するかを問い合わせる（ステップＳ１００７）。一貫性管理部３０３に管理されているセッション情報内に該当セッションＩＤの有効なレコードが存在する場合（ステップＳ１００９のＹＥＳ）、先にローダ特定部２０５から得られた利用者１３に提供すべきサービスの版を、一貫性管理部３０３から得られた版に変更する（ステップＳ１０１３）。すなわち、サービスオブジェクト管理部３４１は、ローダ特定部２０５に対して、そのレコードに記録されている版の差分ローダ２３３のいずれかとデフォルトローダ２２３を要求することとなる。
【００６９】
一方、該当セッションＩＤの有効なレコードが存在しない場合は（ステップＳ１００９のＮＯ）、サービスオブジェクト管理部２４１は、利用状況記憶部３０１のセッション情報テーブル５００に新規レコードを追加し、このセッションＩＤとステップＳ１００３で取得した版情報から構成されるレコードを一貫性情報として追加する（ステップＳ１０１１）。すなわち、サービスオブジェクト管理部３４１は、ローダ特定部２０５に対して、先にローダ特定部２０５から返された版の差分ローダ２３３のいずれかとデフォルトローダ２２３を要求することとなる。なお、もっとも古いバージョンが要求される場合、差分ローダ２３３は返されず、デフォルトローダ２２３のみが返る。
【００７０】
そして、ローダ特定部２０５では、図３と同様の処理（ステップＳ１０７）が行われ、ローダ特定部２０５により特定されたローダがサービスオブジェクト管理部２４１に返される。さらに、サービスオブジェクト管理部２４１では、図３と同様の処理（ステップＳ１０９）が行われ、サービス提供部２４３がネットワーク２５を介して利用者１３にサービスを提供し（ステップＳ１１１）、処理を終了する。
【００７１】
以上、説明したように、本実施形態のサービス提供システムによれば、上記実施形態と同様な効果を奏するとともに、一貫性管理部３０３により利用者１３の一連の要求を管理することと、新版のサービス提供を開始しても並行して旧版のサービスを提供することとによって、一連の要求が終了するまでは、それまで使用していた旧版のサービスを利用できるので、利用者１３側でのサービス不整合が起こりづらくなる。すなわち、本実施形態のサービス提供システムによれば、利用者１３に提供されるサービスが利用の途中で、版が更新されたり、利用者１３が版の指定を変更したりした場合等に、整合性がとれなくなるなどの不具合を防ぐことができ、サービスの一貫性を保つ機能がある。
【００７２】
（第３の実施の形態）
図８は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
本実施形態のサービス提供システムは、上記実施形態とは、利用されていない不要な旧版のサービスを、システムを止めることなく排除できる点で相違する。
【００７３】
本実施形態のサービス提供装置４００は、サービス更新時にサービスが停止するという問題点を解決することができる。すなわち、複数の利用者から要求される、異なる複数の版のサービスを停止することなく提供できないという問題点を解決することができる。
【００７４】
この問題点について、以下に詳しく説明する。この問題点は、上記実施形態の問題点とトレードオフの関係にある。サービス不整合を防ぐためには、たとえば、新版への更新の前に動作している一連の利用者側アプリケーションの処理が終了するのを待たなければならない。一方、その間新規に別の利用者側アプリケーションの要求を受け付けると別の処理が始まるため、新規の要求はすべての動作中の処理が終了するまでブロックする必要があるためである。
【００７５】
本実施形態のサービス提供装置４００は、利用状況記憶部３０１および版情報格納部２０７を参照して、いずれの利用者１３にも利用されていない旧版のサービスがあるか否かを判定する判定部（サービス配備管理部４０１）と、利用されていない旧版のサービスがあると判定されたとき、当該サービスの旧版の更新クラス群２３１をローダ管理部２１０から削除するとともに、対応する差分ローダ２３３を削除する削除部（サービス配備管理部４０１）と、をさらに備える。
【００７６】
具体的には、サービス提供装置４００は、図５の上記実施形態のサービス提供装置３００と同様な構成を有し、さらに、サービス配備管理部４０１を備えている。
【００７７】
サービス配備管理部４０１は、サービスを構成するクラス配備を管理する。詳細には、サービス配備管理部４０１は、利用状況記憶部３０１および版情報格納部２０７を参照して、いずれの利用者１３にも利用されていない旧版のサービスがあるか否かを判定し、利用されていない旧版のサービスがあると判定されたとき、当該サービスの旧版の更新クラス群２３１をローダ管理部２１０から削除するとともに、対応する差分ローダ２３３をローダ管理部２１０から削除する。
【００７８】
サービス配備管理部４０１が、上記の削除可否の判定を実施するタイミングは、たとえば、定期的に判定を行い、所定期間以上利用されていない旧版のサービスを自動的に削除してもよいし、あるいは、サービス提供装置４００の管理者から特定の版の削除要求を図示されない操作受付部を介して受け付けた時、特定の版のサービスについて利用者がいない場合に削除してもよい。
【００７９】
このように構成された本実施形態のサービス提供装置４００の動作について、以下に説明する。図９は、本発明の実施の形態に係るサービス提供システムの動作の一例を示すフローチャートである。特に、サービスオブジェクトの版削除時の動作の一例を示す。以下、図８および図９を用いて説明する。
【００８０】
本実施形態のサービス提供装置４００のデータ処理方法は、サービス提供装置４００が、セッション情報テーブル５００および版情報格納部２０７を参照して、いずれの利用者にも利用されていない旧版のサービスがあるか否かを判定し（ステップＳ２１０１、ステップＳ２１０５）、利用されていない旧版のサービスがあると判定されたとき、当該サービスの旧版の更新クラス群２３１をローダ管理部２１０から削除するとともに、対応する差分ローダ２３３を削除する（ステップＳ２１１３）。
【００８１】
具体的には、定期的、または特定の版の削除要求があった場合、サービス配備管理部４０１は版情報格納部２０７に問い合わせて該当版の利用者１３が存在するかどうかを調べる（ステップＳ２１０１）。利用者１３が存在する場合（ステップＳ２１０１のＹＥＳ）、削除ができないため、その旨をエラーとして要求元に返し、例外処理を行い（ステップＳ２１０３）、本処理を終了する。該当版の利用者１３がいない場合（ステップＳ２１０１のＮＯ）、一貫性管理部３０３に該当版を利用しているセッションが残存しているかどうかを問い合わせる（ステップＳ２１０５）。一貫性管理部３０３は、利用状況記憶部３０１を参照し、利用者１３が残存しているか否かをサービス配備管理部４０１に返す。
【００８２】
利用者１３が残存していない場合（ステップＳ２１０５のＮＯ）、サービス配備管理部４０１は、該当版の差分ローダをローダ特定部２０５での管理対象から外し、ローダ管理部２１０から差分ローダごと、すなわち、差分ローダ２３３と更新クラス群２３１を削除し（ステップＳ２１１３）、処理を終了する。該当版を利用しているセッションが残存している場合（ステップＳ２１０５のＹＥＳ）、さらに、一貫性管理部３０３に、そのセッションが有効期限内かどうか確認する（ステップＳ２１０７）。一貫性管理部３０３は、利用状況記憶部３０１を参照し、セッションが有効期限内かどうかをサービスオブジェクト管理部２４１に返す。有効期限内であれば（ステップＳ２１０７のＹＥＳ）、サービスオブジェクト管理部２４１は、一定時間待ち（ステップＳ２１０９）、その後、Ｓ２１０５に戻り、処理を繰り返す。有効期限後であれば（ステップＳ２１０７のＮＯ）、サービス配備管理部４０１は、一貫性管理部３０３に利用状況記憶部３０１のセッション情報テーブル５００内のセッション情報から該当セッションのレコードを削除させる（ステップＳ２１１１）。そして、サービスオブジェクト管理部２４１は、ローダ管理部２１０から当該差分ローダ２３３および更新クラス群２３１を削除して（ステップＳ２１１３）、処理を終了する。
【００８３】
このように、本実施形態のサービス提供装置４００によれば、サービス提供時の動作と並行して、サービス提供装置４００の管理者によるサービス管理の中で、サービス配備管理部４０１は、ローダ特定部２０５、一貫性管理部３０３と連携して新規版のサービス配備を行うことができる。
【００８４】
以上、説明したように、本実施形態のサービス提供システムによれば、上記実施形態と同様な効果を奏するとともに、利用されていない不要な旧版のサービスをシステムを止めずに排除できるとともに、これによりサービス提供装置４００のローダ管理部２１０のメモリ使用容量が利用されていない不要な旧版のサービスのために浪費されることを防ぐことができ、負荷を低減できる。
【００８５】
本発明の他の実施の形態として、図９の版の削除においてＳ２１０９で一定時間待つことなく有効期限内の対応セッションが残っている場合エラーを返して例外処理を行う方法がある。図９の方式の場合、該当セッションがなくなるか、有効期限以降になるまで無限にループする。版の削除の手続きを行うユーザインタフェースによっては有効期限内の対応セッションが残っていることをサービス管理者に示して終了するような実装が必要になる場合、この実施の形態の手順が有効である。
【００８６】
（第４の実施の形態）
図１０は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
本実施形態のサービス提供システムは、上記実施形態とは、新しい新版のサービスを、システムを止めることなく追加して更新できる点で相違する。
【００８７】
本実施形態のサービス提供装置８００は、新しく更新された新版の差分クラス群を受け付ける更新受付部８０３と、受け付けた新版の差分クラス群を更新される直前の版の更新クラス群２３１に追加して新版の更新クラス群２３１としてローダ管理部２１０に格納するとともに、当該新版の更新クラス群２３１に対応する新版の差分ローダ２３３を追加する追加部（サービス配備管理部８０１）と、をさらに備える。
【００８８】
また、サービス提供装置８００は、利用者１３から利用するサービスおよび当該サービスの版の指定を受け付ける指定受付部（要求受付部２０３）と、利用者１３から指定されたサービスおよび当該サービスの版の版情報を、版情報格納部２０７に利用者１３に対応付けて登録する登録部（サービス配備管理部８０１）と、をさらに備える。
【００８９】
具体的には、サービス提供装置８００は、図５の上記実施形態のサービス提供装置３００と同様な構成を有し、さらに、サービス配備管理部８０１と更新受付部８０３を備えている。あるいは、図８の上記実施形態のサービス提供装置４００のサービス配備管理部４０１をサービス配備管理部８０１に換え、それ以外はサービス提供装置４００と同様な構成を有してもよい。また、サービス配備管理部８０１は、後述する機能とともにサービス配備管理部４０１と同様な機能も有することができる。
【００９０】
更新受付部８０３は、管理者などから新しく更新された特定の新版の差分クラス群の追加登録要求を受け付ける。
サービス配備管理部８０１は、更新受付部８０３が追加登録要求を受け付けた新版の差分クラス群を直前の版の更新クラス群２３１に追加して新版の更新クラス群２３１としてローダ管理部２１０に格納するとともに、当該新版の更新クラス群２３１に対応する新版の差分ローダ２３３をローダ管理部２１０に追加する。
【００９１】
さらに、サービス配備管理部８０１は、利用者１３から指定されたサービスおよび当該サービスの版の版情報を、版情報格納部２０７に利用者１３に対応付けて登録する。
【００９２】
具体的には、サービス配備管理部８０１は、追加登録要求に応じて、新規差分ローダを生成し、ローダ管理部２１０へ版番号と共に登録する。さらに、サービス配備管理部８０１は、この新規差分ローダに配備すべき更新クラス群をローダ管理部２１０に読み込む。そして、要求受付部２０３が利用者１３から、新版のサービスの利用要求を受け付けたとき、サービス配備管理部８０１は、利用要求に基づいて、その新版を利用する利用者１３の利用者ＩＤと、利用するサービス名と、利用する版番号とを取得し、互いに関連付けて図２の版情報格納部２０７に登録する。
【００９３】
このように構成された本実施形態のサービス提供装置８００の動作について、以下に説明する。図１１は、本発明の実施の形態に係るサービス提供システムの動作の一例を示すフローチャートである。特に、サービスオブジェクトの版追加時の登録動作の一例を示す。以下、図１０および図１１を用いて説明する。
【００９４】
本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置８００が、新しく更新された新版の差分クラス群を受け付け（ステップＳ２００１）、受け付けた新版の差分クラス群を更新される直前の版の更新クラス群２３１に追加して新版の更新クラス群２３１としてローダ管理部２１０に格納するとともに、当該新版の更新クラス群２３１に対応する新版の差分ローダ２３３をローダ管理部２１０に追加する。
【００９５】
本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置８００が、利用者１３から利用するサービスおよび当該サービスの版の指定を受け付け（ステップＳ２００７）、利用者１３から指定されたサービスおよび当該サービスの版の版情報を、版情報格納部２０７に利用者に対応付けて登録する（ステップＳ２００９）。
【００９６】
具体的には、更新受付部８０３が特定の版の追加要求を受け付けた場合（ステップＳ２００１のＹＥＳ）、サービス配備管理部８０１は、新規差分ローダを生成し、ローダ管理部２１０へ版番号と共に登録する（ステップＳ２００３）。さらに、サービス配備管理部８０１は、この新規差分ローダに配備すべき更新クラス群をローダ管理部２１０に読み込む（ステップＳ２００５）。そして、要求受付部２０３が利用者１３から、新版のサービスの利用要求を受け付けたとき（ステップＳ２００７のＹＥＳ）、サービス配備管理部８０１は、利用要求に基づいて、その新版を利用する利用者１３の利用者ＩＤと、利用するサービス名と、利用する版番号とを取得し、互いに関連付けて図２の版情報格納部２０７に登録する（ステップＳ２００９）。
【００９７】
このように、本実施形態のサービス提供装置８００によれば、サービス提供時の動作と並行して、サービス提供装置８００の管理者によるサービス管理の中で、サービス配備管理部８０１は、ローダ特定部２０５、一貫性管理部３０３と連携して旧版のサービスの配備解除および一貫性管理部３０３で管理している古いレコードの削除を行うことができる。
【００９８】
以上、説明したように、本実施形態のサービス提供システムによれば、上記実施形態と同様な効果を奏するとともに、旧版のサービス終了を待たなくても新版サービスを開始できることと、システム全体を入れ替えなくても新版の差分ローダを追加するだけでサービス更新が可能であるので、サービスを継続したままサービスの更新が可能である。これにより、サービス提供装置８００は、新しく更新された版のサービスを、システムを止めることなく追加できる。
【００９９】
（第５の実施の形態）
図１２は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。
本実施形態のサービス提供システムは、上記実施形態とは、複数のサービス提供装置を備える点で相違する。本実施形態において、複数のサービス提供装置は互いに同じ構成を有し、同じ版構成のサービスを提供するローダおよびクラス群を有する。
【０１００】
本実施形態のサービス提供システム１０００は、利用者側の要求としての旧版でのサービス継続にコストがかかりがちであるという問題点を解決することができる。
【０１０１】
この問題点について、以下に詳しく説明する。旧版に対して専用のハードウェア、仮想ＯＳを割り当てて運用するような従来の方法の場合、旧版の提供には一定のハードウェアリソースが必要となる。一般に旧版のサービスは利用者の数が少なくなるが、図１９のような方法の場合、最低１台は旧版のサービス用にサービス提供装置を確保する必要があり、利用者数にきめ細かく追随した計算機リソースの調整が困難であることが理由の一つである。また継続提供が必要な版が多数存在する場合、サービス提供装置ごとに少しずつ異なる各版のサービス用クラス群の管理が煩雑となり、管理コストが増加することがもう一つの理由である。
【０１０２】
本実施形態のサービス提供システム１０００は、上記実施形態の複数のサービス提供装置８００（Ａ１、Ａ２、...、Ａｎ）の負荷状態に応じて、利用者１３の要求に呼応してサービス提供を実施するサービス提供装置８００を決定し、サービス提供装置８００を割り当てる負荷分散装置（負荷分散器２７）と、を備え、複数のサービス提供装置８００は、利用適用中のすべての版についてすべてのサービスを同様に利用者に提供できるように、同じ版のデフォルトクラス群２２１（図１０）をデフォルトクラス群記憶部（ローダ管理部２１０：図１０）に格納し、同じ利用適用中のすべての版の更新版別クラス群（更新クラス群２３１：図１０）を更新版別クラス記憶部（ローダ管理部２１０：図１０）にそれぞれ格納する。
【０１０３】
この構成によれば、複数のサービス提供装置が同じ構成を有するので、サービスや版ごとにサーバを分ける場合に比較して、サービスによって利用者数や負荷が異なる場合でも、事前に負荷を考慮する必要がなく、システム構築が簡単で、サーバの増設や置き換えなどもシステムを止めずに実施でき、簡易に負荷の分散を実現できる。
【０１０４】
利用者１３（図中、利用者Ｕ１およびＵ２）は、負荷分散器２７を介して少なくとも一のサービス提供装置８００（図中、複数のサービス提供装置Ａ１、Ａ２、. . .、Ａｎ）にサービス要求を送信する。
【０１０５】
サービス提供装置８００においてサービスオブジェクトにより適切な処理をした後、利用者１３に処理の結果を返す。大量の利用者１３からのサービス要求を処理するため負荷分散器２７には複数のサービス提供装置８００が接続され、適切に処理を割り振る。サービス提供装置８００が非常に高性能である場合、利用者１３からのサービス要求がそれほど多くない場合は、負荷分散器２７を介さずに１つのサービス提供装置８００のみで全利用者のサービス要求を処理する場合もありうる。
【０１０６】
なお、負荷分散器２７は、一般的な装置で構成することができ、本発明の本質に関わらないので詳細な説明は省略する。
なお、本実施形態において、旧版のサービスの削除や、新版のサービスの登録などは、複数のサービス提供装置８００で同様に実行され、複数のサービス提供装置８００は、互いに同じ構成を維持するものとする。
【０１０７】
本実施形態のサービス提供システム１０００によれば、旧版のサービス継続に必要な計算機リソースをできるだけ効率化できる。すなわち、複数の版のサービスを提供するコストを小さくできる。この理由は、サービス提供を要求されている各版に対する更新クラスのみを保持し共通クラスは共有することによってクラスの多重読み込みをしなくて済むからである。
【０１０８】
また、一つの装置で複数の版のサービス提供が可能であるため、特定の版の利用者数が少なくても他の版のサービス提供装置として動作することによりハードウェアリソースの利用効率が高い。すなわち、版ごとに装置を準備すると版の利用状況によって各装置のリソースの利用状況にばらつきが生じてしまうため、装置の配備を調整する必要があるが、本実施形態のサービス提供システムでは、利用者の利用状況などを予想して計画を立てる必要がない。さらに、どのサービス提供装置も同一の構成で運用できるため、運用コストを下げることが可能であることも理由の一つである。
【０１０９】
（第６の実施の形態）
図１６は、本発明の実施の形態に係るサービス提供システムの構成を示すブロック図である。本実施形態のサービス提供システムは、図１０の上記第４の実施形態とは、新しい新版のサービスの指定にサービス横断的な変更設定を指定された場合にシステムを止めることなく追加更新できる点で相違する。なお、図１６の本実施形態のサービス提供システムは、図８および図１２の上記実施形態のサービス提供システムにも適用することができる。
【０１１０】
第４の実施の形態では新版のサービスを受け付ける際に、新版の更新クラス群を更新受付部８０３で受け付けることが前提である。明示的に更新されたクラス群を与える代わりに、Ａｓｐｅｃｔ  Ｏｒｉｅｎｔｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ（ＡＯＰ）のようにサービス横断的な変更設定を指定することにより該当クラスを自動更新する技術が存在する。この技術はプログラムコードの一定の性質をもつ部分に対して一律に変更を加えることや、再コンパイルなしで既存の実行バイナリに動的に直接変更を加えることを可能にする技術である。以後、このサービス横断的な変更のことをＡｓｐｅｃｔ、その変更設定をＡｓｐｅｃｔ定義と呼ぶこととする。
【０１１１】
ＡＯＰのような技術でサービスを動的に更新する場合、クラスローダにクラスがロードされる際にＡｓｐｅｃｔ注入機構によりＡｓｐｅｃｔが該当クラスに適用される。本来はサービスを構成するクラス全体をクラスローダに再ロードしてＡｓｐｅｃｔ適用をおこなうことになるが、これは差分ローダ上にすべてのクラスを多重にロードすることになり効率が悪い。そこで、本実施形態では、ＡＯＰのような新規版のサービス配備時の仕組みとしてサービス横断的な変更点を登録することで自動的に複数のクラスを更新するタイプのサービス全体にわたるサービス更新による新版の登録時にも他のサービスを止めずに効率的にサービス提供を行えるシステムを提供する。
【０１１２】
本実施形態のサービス提供システムは、図１６に示すように、図１０のサービス提供装置８００に替えて、サービス提供装置９００を備える。
本実施形態のサービス提供装置９００は、新版としてサービス全般に跨る変更ルールを記述した設定（Ａｓｐｅｃｔ定義）を受け付ける更新受付部８０３と、設定に基づき変更の対象となるクラスのみを抽出する更新クラス抽出部９０１と、抽出された変更の対象となるクラスのみに対して変更を適用しながら変更済みクラス群（差分クラス群）を変更される直前の版の更新版別クラス群（差分クラス群２３１）に追加して新版の更新版別クラス群（差分クラス群２３１）として、更新版別クラス群記憶部（ローダ管理部２１０）に格納するとともに、当該新版の更新版別クラス群（差分クラス群２３１）に対応する新版の更新版別差分ロード部（差分ローダ２３３）を追加する追加部（サービス配備管理部８０１）と、をさらに備える。
【０１１３】
具体的には、本実施形態のサービス提供装置９００は、図１０のサービス提供装置８００と同様な構成を有し、さらに、更新クラス抽出部９０１と、Ａｓｐｅｃｔ注入機構９０２と、をさらに備える。
【０１１４】
本実施形態のサービス提供装置９００において、更新受付部８０３は、Ａｓｐｅｃｔ定義によるサービス更新を受け付ける。サービス配備管理部８０１は、更新受付部８０３がＡｓｐｅｃｔ定義によるサービス更新を受け付けた場合、サービス中のどのクラスを更新しなければならないかを更新クラス抽出部９０１に問い合わせる。そして、サービス配備管理部８０１は、更新対象となるクラスのみを新たに生成した新版用の差分ローダへ読み込むようローダ管理部２１０に指示する。
【０１１５】
更新クラス抽出部９０１は、サービス配備管理部８０１からの問合せに応じて、サービス中のどのクラスを更新しなければならないかを、更新受付部８０３が受け付けたＡｓｐｅｃｔ定義を調べ、更新対象のクラスを抽出し、サービス配備管理部８０１に返信する。すなわち、更新クラス抽出部９０１は、サービス更新に対して、事前にその変更点でどのクラスに更新がかかるかを調べる。
【０１１６】
ローダ管理部２１０は、新規差分ローダ上へサービス配備管理部８０１から指示された更新対象クラスをロードする。このとき同時にＡｓｐｅｃｔ注入機構９０２が働き、登録したＡｓｐｅｃｔ定義に基づいた変更を更新対象クラスへ適用するよう、各差分ローダ２３３に指示する。すなわち、ローダ管理部２１０は、更新クラス抽出部９０１が抽出した該当クラスを更新版の差分ローダ上に読み込む際に登録された変更点に応じてクラスを更新する。
【０１１７】
こうすることで、ＡＯＰのようなサービス全体にわたるサービス更新による新版の登録時にも他のサービスを止めずに効率的にサービス提供を行うことが可能になる。
【０１１８】
次に、本実施の形態のサービス提供システムにおけるサービスオブジェクトの版追加時の登録動作全体の動作について詳細に説明する。図１７は、本発明の実施の形態に係るサービス提供システムにおけるサービスオブジェクトの版追加時の登録動作の一例を示すフローチャートである。以下、図１６および図１７を用いて説明する。
【０１１９】
本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置９００が、新しく更新された新版向けのサービス全体に跨る変更ルールを記述した設定（Ａｓｐｅｃｔ定義）を受け付ける（ステップＳ２２０１のＹＥＳ）。そして、サービス配備管理部８０１が、登録されたＡｓｐｅｃｔ定義を更新クラス抽出部９０１へ渡し、更新クラス抽出部９０１は追加する版の変更内容を記述したＡｓｐｅｃｔ適用の対象となるクラスだけを抽出してサービス配備管理部８０１へ返す（ステップＳ２２０２）。新規受付でない場合（ステップＳ２２０１のＮＯ）、ステップＳ２２０５に進む。
【０１２０】
サービス配備管理部８０１が、ローダ管理部２１０にこのＡｓｐｅｃｔ適用対象クラス群のみをロードする差分ローダを新版向けのクラスローダとして生成させる（ステップＳ２２０３）。そして、サービス配備管理部８０１が、この新規差分ローダに上記Ａｓｐｅｃｔ適用対象クラス群をＡｓｐｅｃｔ注入機構９０２でＡｓｐｅｃｔを適用しながらロードする（Ｓ２２０４）。
【０１２１】
さらに、本実施形態のサービス提供装置のデータ処理方法は、サービス提供装置９００が、利用者１３から利用するサービスおよび当該サービスの版の指定を受け付け（ステップＳ２２０５のＹＥＳ）、利用者１３から指定されたサービスおよび当該サービスの版の版情報を、版情報格納部２０７に利用者に対応付けて登録する（ステップＳ２２０６）。利用を受け付けなかった場合（ステップＳ２２０５のＮＯ）、本フローを終了する。
【実施例】
【０１２２】
具体的な実施例を用いて本発明を実施するための最良の形態の動作を、図２、図６、図１２乃至図１５を参照して説明する。ただし以下は一実施例であり、動作やデータ書式などをこれに限定しない。本実施例では、上記実施形態のサービス提供システム１０００を例に説明する。【０１２３】
まず、利用者からの初期の要求データの例を図１３に示す。この例では要求データ６００はＸＭＬ（ＥＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ、ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇ／ＴＲ／ｘｍｌ）の形式で記述されており、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ、ＲＦＣ２６１６）などのプロトコルで利用者から送信される。この要求データをもとにサービス提供装置８００は利用者に対して適切なサービスオブジェクトを生成する。この要求データではユーザＩＤ６０２を指定してサービス“ＭｙＡｎａｌｙｚｅ”、操作“ｉｎｖｏｋｅ”をサービス識別部６０３で指定している。サービスに対するパラメータはパラメータ指定部６０４で指定する。この要求データ６００は一連のサービス要求の最初のものである前提なのでセッションはまだ作成されておらず、セッション情報はデータ内に含まれていない。【０１２４】
サービス提供装置８００のサービスオブジェクト管理部３４１は、要求データ６００を元に版情報格納部２０７へ問い合わせて、どの版のサービスを利用するかを決定する。図２の版情報格納部２０７の例では、ユーザＩＤ“ａ１２３４”、サービス“ＭｙＡｎａｌｙｚｅ”のレコードを版情報管理テーブル７００から検索し、該当する版番号欄の版番号“Ｖ１．０５”を返す。もし該当レコードが存在しない場合は、その時点での最新版の版番号を返す。【０１２５】
サービスオブジェクト管理部３４１は“Ｖ１．０５”の差分ローダをローダ特定部２０５から取得し、“ＭｙＡｎａｌｙｚｅ”のサービスオブジェクトを生成する。さらにこのサービスオブジェクトの操作“ｉｎｖｏｋｅ”に引数“ｘｘｘ”、“ｙｙｙ”を与えて実行し結果を利用者に返す。図１５にレスポンスの例を示す。レスポンス６５０はそれ以後の一連のサービス継続時に使用されるセッションＩＤ６５１とサービス処理の結果６５２を返す。この例では処理を受け付けた旨の結果が返る。【０１２６】
続いて一連のサービスを継続する場合の要求データの例を図１４に示す。この要求データ６１０はサービス“ＭｙＡｎａｌｙｚｅ”、操作“ｉｎｖｏｋｅ”の処理結果を取得するための操作“ｇｅｔＲｅｓｕｌｔ”を実行する。要求データ６１０にはセッション情報６１３が付いているので、サービスオブジェクト管理部３４１は一貫性管理部３０３にセッション“２００８１１１４−３２４５”に該当するバージョン情報をセッション情報テーブル５００から検索する。一貫性管理部３０３で管理されるセッション情報テーブル５００に記憶されているセッション情報を図６に示す。【０１２７】
一貫性管理部３０３はこのセッション情報テーブル５００を要求データに含まれるセッションＩＤを元に検索し、該当するレコードの有効期限欄５０４の値からレコードの情報が有効かどうかを判断する。この場合は有効であるため版番号欄５０３の値“Ｖ１．０５”を返す。サービスオブジェクト管理部３４１は返された版番号“Ｖ１．０５”の差分ローダをローダ特定部２０５から取得し、サービス“ＭｙＡｎａｌｙｚｅ”、操作“ｉｎｖｏｋｅ”処理を実行して処理結果を利用者に返す。【０１２８】
新規にサービスを要求する場合には要求データ６００のようにセッション情報を付けない。これによってあらかじめ版情報格納部２０７で格納されている版かあるいは最新版のサービスオブジェクトによるサービスを実行できる。そのサービス要求が一連のサービス要求の一部である場合は同一のセッションＩＤを指定したセッション情報をつける。これによって、セッション情報取得時に提供された版によるサービスが継続され、またセッションが有効な間はその版のローダが破棄されることはない。【０１２９】
サービス配備管理部８０１は定期的に一貫性管理部３０３へアクセスして、セッション情報テーブル５００のセッション情報から有効期限欄５０４の値が現在時刻以前になっているレコードを検索し、そうしたレコードはセッション情報テーブル５００から削除する。【０１３０】
次に、本実施例における新版のサービス配備の例を図１６および図１８を用いて説明する。
本発明における新版サービスは、デフォルトローダ２２３上にロードされたデフォルトクラス群２２１のクラスに対するＡｓｐｅｃｔとして管理者によって更新受付部８０３を介して配備される。【０１３１】
図１８のＡｓｐｅｃｔ定義１２００の例は、ＡｓｐｅｃｔＪ（ｈｔｔｐ：／／ｗｗｗ．ｅｃｌｉｐｓｅ．ｏｒｇ／ａｓｐｅｃｔｊ／）での記述例である。このＡｓｐｅｃｔ定義１２００が、新版サービス用の改版内容として配備されると、更新クラス抽出部９０１は、Ａｓｐｅｃｔ定義１２００を解析して、内容が更新されるＭｙＡｎａｌｙｚｅクラス（デフォルトクラス）１１００を抽出する。次に、ローダ管理部２１０は、このＭｙＡｎａｌｙｚｅクラス１１００のみをロードする新版用の差分ローダを生成する。この差分ローダには、ＭｙＡｎａｌｙｚｅクラス１１００に対して、Ａｓｐｅｃｔ注入機構９０２がＡｓｐｅｃｔ定義１２００を適用して改版したＡｓｐｅｃｔ適用済みＭｙＡｎａｌｙｚｅクラス１１０１をロードする。【０１３２】
このようにＡｓｐｅｃｔ適用が必要なクラスのみ事前に抽出し、専用のクラスローダ上でＡｓｐｅｃｔ適用することで、サービス全体を停止することなく、様々な版のＡｓｐｅｃｔを適用したサービスを同一のサービス提供装置で提供することができる。【０１３３】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。【０１３４】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１３５】
なお、本発明において利用者に関する情報を取得、利用する場合は、これを適法に行うものとする。【０１３６】
この出願は、２００９年３月３０日に出願された日本出願特願２００９−０８３１１７号および２０１０年２月２６日に出願された日本出願特願２０１０−４１４７４号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2010116676.tif 000003
【図２】
2010116676.tif 000004
【図３】
2010116676.tif 000005
【図４】
2010116676.tif 000006
【図５】
2010116676.tif 000007
【図６】
2010116676.tif 000008
【図７】
2010116676.tif 000009
【図８】
2010116676.tif 000010
【図９】
2010116676.tif 000011
【図１０】
2010116676.tif 000012
【図１１】
2010116676.tif 000013
【図１２】
2010116676.tif 000014
【図１３】
2010116676.tif 000015
【図１４】
2010116676.tif 000016
【図１５】
2010116676.tif 000017
【図１６】
2010116676.tif 000018
【図１７】
2010116676.tif 000019
【図１８】
2010116676.tif 000020
【図１９】
2010116676.tif 000021
【国際調査報告】
2010116676.tif 000022
2010116676.tif 000023
2010116676.tif 000024
2010116676.tif 000025