(57)【要約】      （修正有）【課題】プログラムの更新に対して柔軟に対応することが可能なサーバ装置、方法及びプログラムを提供することにある。【解決手段】サーバ装置は、管理手段と、判定手段と、破棄手段とを具備する。管理手段は、ユーザに関するユーザ情報を含むクライアント装置との間のセッションを管理する。判定手段は、プログラムが更新された場合に、管理されているセッションに含まれるユーザ情報に基づいて当該セッションにおいて実行される処理を更新するかを判定する。破棄手段は、セッションにおいて実行される処理を更新しないと判定された場合、当該セッションを破棄する。【選択図】図４
2020013305.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置を使用するユーザが利用可能なプログラムを実行するサーバ装置において、
前記ユーザに関するユーザ情報を含む前記クライアント装置との間のセッションを管理する管理手段と、
前記プログラムが更新された場合に、前記管理されているセッションに含まれるユーザ情報に基づいて当該セッションにおいて実行される処理を更新するかを判定する判定手段と、
前記セッションにおいて実行される処理を更新しないと判定された場合、当該セッションを破棄する破棄手段と
を具備するサーバ装置。
【請求項２】
更新手段を更に具備し、
前記プログラムは、前記サーバ装置で実行される処理内容が定義されたサーバ処理クラスを含み、
前記管理されるセッションは、前記サーバ処理クラスから生成されたサーバ処理インスタンスを含み、
前記判定手段は、前記プログラムに含まれるサーバ処理クラスが更新された場合に、前記管理されているセッションに含まれるサーバ処理インスタンスを更新するかを判定し、
前記破棄手段は、前記サーバ処理インスタンスを更新しないと判定された場合、前記セッションを破棄し、
前記更新手段は、前記サーバ処理インスタンスを更新すると判定された場合、前記管理されているセッションに含まれるサーバ処理インスタンスを、前記更新されたサーバ処理クラスから生成されたサーバ処理インスタンスに更新する
請求項１記載のサーバ装置。
【請求項３】
前記クライアント装置と前記サーバ装置とは、ステートフルなネットワークプロトコルを用いて持続的にコネクションを確立した上でリアルタイムに双方向通信を実行し、
前記管理されるセッションは、前記クライアント装置と前記サーバ装置との間で双方向通信を実行するための通信インスタンスを更に含み、
前記破棄手段は、前記クライアント装置と前記サーバ装置との間の双方向通信を切断し、前記セッションに含まれる通信インスタンス及びサーバ処理インスタンスを破棄する
請求項２記載のサーバ装置。
【請求項４】
前記ユーザ情報は、前記ユーザの役割を含み、
前記サーバ処理クラスは、前記ユーザ情報に含まれる前記ユーザの役割が引数として渡される更新判定メソッドを含み、
前記更新判定メソッドの返り値は、更新及び破棄を含み、
前記判定手段は、前記更新判定メソッドの返り値が破棄である場合に前記サーバ処理インスタンスを更新しないと判定し、前記更新判定メソッドの返り値が更新である場合に前記サーバ処理インスタンスを更新すると判定する
請求項２記載のサーバ装置。
【請求項５】
前記サーバ処理クラスは、複数の前記更新判定メソッドを含み、
前記判定手段は、前記更新判定メソッドの各々の返り値のうちの少なくとも１つが破棄である場合に前記サーバ処理インスタンスを更新しないと判定し、前記更新判定メソッドの各々の返り値のうちの全てが更新である場合に前記サーバ処理インスタンスを更新すると判定する
請求項４記載のサーバ装置。
【請求項６】
前記ユーザ情報は、前記ユーザの役割を含み、
前記サーバ処理クラスは、前記ユーザ情報に含まれる前記ユーザの役割が引数として渡される更新判定メソッドを含み、
前記更新判定メソッドの返り値は、更新、維持及び破棄を含み、
前記判定手段は、前記更新判定メソッドからの返り値が破棄である場合に前記サーバ処理インスタンスを更新しないと判定し、前記更新判定メソッドの返り値が更新である場合に前記サーバ処理インスタンスを更新すると判定し、
前記更新判定メソッドの返り値が維持である場合、前記管理されているセッションは維持される
請求項２記載のサーバ装置。
【請求項７】
前記サーバ処理クラスは、複数の前記更新判定メソッドを含み、
前記判定手段は、前記更新判定メソッドの各々の返り値のうちの少なくとも１つが破棄である場合に前記サーバ処理インスタンスを更新しないと判定し、前記更新判定メソッドの各々の返り値のうちの全てが更新である場合に前記サーバ処理インスタンスを更新すると判定し、
複数の前記更新判定メソッドの返り値の全てが破棄でなく、かつ、当該返り値のうちの少なくとも１つが維持である場合、前記管理されているセッションは維持される
請求項６記載のサーバ装置。
【請求項８】
前記判定手段は、前記サーバ処理クラスに含まれる更新判定メソッドを指定するための外部定義ファイルを読み込み、当該外部定義ファイルで指定される更新判定メソッドの返り値を取得する請求項４〜７のいずれか一項に記載のサーバ装置。
【請求項９】
前記セッションが破棄された場合、前記クライアント装置の画面は、前記サーバ装置との新たなセッションを生成するための画面に遷移する請求項１〜８のいずれか一項に記載のサーバ装置。
【請求項１０】
クライアント装置を使用するユーザが利用可能なプログラムを実行するサーバ装置が実行する方法であって、
前記ユーザに関するユーザ情報を含む前記クライアント装置の間のセッションを管理するステップと、
前記プログラムが更新された場合に、前記管理されているセッションに含まれるユーザ情報に基づいて当該セッションにおいて実行される処理を更新するかを判定するステップと、
前記セッションにおいて実行される処理を更新しないと判定された場合、当該セッションを破棄するステップと
を具備する方法。
【請求項１１】
クライアント装置を使用するユーザが利用可能なサーバ装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記ユーザに関するユーザ情報を含むクライアント装置との間のセッションを管理するステップと、
前記プログラムが更新された場合に、前記管理されているセッションに含まれるユーザ情報に基づいて当該セッションにおいて実行される処理を更新するかを判定するステップと、
前記セッションにおいて実行される処理を更新しないと判定された場合、当該セッションを破棄するステップと
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、サーバ装置、方法及びプログラムに関する。
【背景技術】
【０００２】
一般に、クライアント装置上で動作するブラウザを介してユーザが利用可能なＷｅｂアプリケーションプログラムが知られている。このＷｅｂアプリケーションプログラムには、ブラウザ上で動作するプログラム（Ｗｅｂクライアントプログラム）及び当該クライアント装置と通信可能に接続されるサーバ装置上で動作するプログラム（Ｗｅｂサーバプログラム）が含まれる。
【０００３】
上記したようにユーザがＷｅｂアプリケーションプログラムを利用する場合、クライアント装置とサーバ装置との間のセッションにおいてＷｅｂサーバプログラムに基づく処理（以下、サーバ処理と表記）がサーバ装置で実行され、当該サーバ処理の結果がクライアント装置に表示される。
【０００４】
なお、上記したＷｅｂアプリケーションプログラムは、例えば複数のユーザ（以下、第１及び第２ユーザと表記）によって利用される場合がある。この場合、第１ユーザが使用するクライアント装置とサーバ装置との間のセッションにおいてサーバ処理（以下、第１ユーザのサーバ処理と表記）が実行されるとともに、第２ユーザが使用するクライアント装置とサーバ装置との間のセッションにおいてもサーバ処理（以下、第２ユーザのサーバ処理と表記）が実行される。
【０００５】
ここで、Ｗｅｂアプリケーションプログラムの機能（サーバ処理）はＷｅｂサーバプログラムを更新することによって変更可能であるが、当該Ｗｅｂサーバプログラムが更新される際に、第１ユーザのサーバ処理を継続して実行する一方で、第２ユーザのサーバ処理を停止するようなことは困難である。
【０００６】
このため、例えばＷｅｂサーバプログラムの更新に対して、特定のユーザのサーバ処理を停止するといった柔軟な対応をすることが可能な仕組みが求められている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−２１８９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本発明が解決しようとする課題は、プログラムの更新に対して柔軟に対応することが可能なサーバ装置、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
実施形態によれば、クライアント装置を使用するユーザが利用可能なプログラムを実行するサーバ装置が提供される。前記サーバ装置は、管理手段と、判定手段と、破棄手段とを具備する。前記管理手段は、前記ユーザに関するユーザ情報を含む前記クライアント装置との間のセッションを管理する。前記判定手段は、前記プログラムが更新された場合に、前記管理されているセッションに含まれるユーザ情報に基づいて当該セッションにおいて実行される処理を更新するかを判定する。前記破棄手段は、前記セッションにおいて実行される処理を更新しないと判定された場合、当該セッションを破棄する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるＷｅｂアプリケーションシステムによって実行されるＷｅｂアプリケーションプログラムの利用態様の一例について説明するための図。
【図２】Ｗｅｂアプリケーションプログラムの更新について説明するための図。
【図３】サーバ装置のシステム構成の一例を示す図。
【図４】サーバ装置の機能構成の一例を示すブロック図。
【図５】Ｗｅｂアプリケーションシステムの一連の動作の概要について説明するための図。
【図６】サーバ装置及びクライアント装置間でセッションを開始する際のサーバ装置の処理について説明するための図。
【図７】Ｗｅｂサーバプログラムが更新された際のサーバ装置の処理について説明するための図。
【図８】サーバ処理クラスが更新された際のサーバ処理部の処理手順の一例を示すフローチャート。
【図９】更新判定処理の処理手順の一例を示すフローチャート。
【図１０】サーバ処理クラスに含まれる更新判定メソッドの一例を示す図。
【図１１】サーバ処理クラスに含まれる更新判定メソッドの一例を示す図。
【図１２】更新判定メソッドの引数に渡される値の一例を示す図。
【図１３】セッション破棄処理の処理手順の一例を示すフローチャート。
【図１４】サーバ装置の動作について具体的に説明するための図。
【図１５】サーバ装置の動作について具体的に説明するための図。
【図１６】サーバ装置の動作について具体的に説明するための図。
【図１７】サーバ処理インスタンスの処理が実行されることによってオペレータのクライアント装置に表示される画面の一例を示す図。
【図１８】サーバ処理インスタンスの処理が実行されることによって管理者のクライアント装置に表示される画面の一例を示す図。
【図１９】セッションが破棄された場合にオペレータのクライアント装置に表示される画面の一例を示す図。
【図２０】オペレータのクライアント装置に表示されるログイン画面の一例を示す図。
【図２１】新たに生成されたセッションにおいて異なるサーバ処理インスタンスの処理が実行された場合にオペレータのクライアント装置に表示される画面の一例を示す図。
【図２２】第２実施形態に係るサーバ装置の機能構成の一例を示すブロック図。
【図２３】サーバ処理クラスが更新された際のサーバ処理部の処理手順の一例を示すフローチャート。
【図２４】サーバ処理クラスに含まれる更新判定メソッドの一例を示す図。
【図２５】更新判定メソッドの返り値の型の一例を示す図。
【図２６】更新判定メソッドの引数に渡される値の一例を示す図。
【図２７】サーバ装置の動作について具体的に説明するための図。
【図２８】サーバ装置の動作について具体的に説明するための図。
【図２９】第３実施形態におけるサーバ処理クラスに含まれる更新判定メソッドの一例を示す図。
【図３０】更新判定処理の処理手順の一例を示すフローチャート。
【図３１】サーバ装置の動作について具体的に説明するための図。
【図３２】サーバ装置の動作について具体的に説明するための図。
【図３３】第２実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれている場合における更新判定処理の処理手順の一例を示すフローチャート。
【図３４】第４実施形態におけるサーバ処理クラスに含まれる更新判定メソッドの一例を示す図。
【図３５】サーバ装置内に外部定義が予め用意されている構成を示す図。
【図３６】外部定義の一例を示す図。
【図３７】外部装置内に外部定義が予め用意されている構成を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態について説明する。
（第１実施形態）
まず、第１実施形態について説明する。本実施形態に係るサーバ装置は、ユーザが利用可能なＷｅｂアプリケーションプログラムを実行するシステム（以下、Ｗｅｂアプリケーションシステムと表記）を構成する。
【００１２】
図１を参照して、本実施形態におけるＷｅｂアプリケーションシステムによって実行されるＷｅｂアプリケーションプログラムの利用態様の一例について説明する。
【００１３】
図１に示すように、Ｗｅｂアプリケーションシステム１は、例えばサーバ装置１０と、複数のクライアント装置２０とを備える。
【００１４】
ここで、Ｗｅｂアプリケーションシステム１によって実行されるＷｅｂアプリケーションプログラムは、サーバ装置１０上で動作するプログラム（以下、Ｗｅｂサーバプログラムと表記）とクライアント装置２０のブラウザ上で動作するプログラム（以下、Ｗｅｂクライアントプログラムと表記）とを含む。
【００１５】
サーバ装置１０は、クライアント装置２０との間のセッションにおいてＷｅｂサーバプログラムに基づく処理（以下、サーバ処理と表記）を実行する。
【００１６】
クライアント装置２０は、サーバ装置１０と通信可能に接続される。クライアント装置２０は、ユーザによって使用される例えばパーソナルコンピュータ、スマートフォン及びタブレット端末等の電子機器である。クライアント装置２０は、ブラウザ上でＷｅｂクライアントプログラムが動作することによってサーバ装置１０からサーバ処理の結果を取得し、当該結果をユーザに対して表示する。
【００１７】
ここで、Ｗｅｂアプリケーションシステム１が例えばコールセンター等に導入され、当該コールセンターのオペレータ等の状況を管理するためにＷｅｂアプリケーションプログラムが利用される場合を想定する。このＷｅｂアプリケーションプログラムによれば、オペレータの状況を管理する管理システム（監視制御システム）のＨＭＩ（Human Machine Interface）を実現することができる。
【００１８】
この場合、サーバ装置１０は、例えばオペレータの各々によって使用される複数のデバイス（例えば、パーソナルコンピュータ等）３０と通信可能に接続される。なお、複数のデバイス３０は、サーバ装置１０に直接接続されていてもよいし、例えばゲートウェイ３１等を介してサーバ装置１０に接続されていてもよい。
【００１９】
これによれば、サーバ装置１０は、例えば当該サーバ装置１０に接続された複数のデバイス３０の各々から当該デバイス３０を使用するオペレータの状況を示すプレゼンス情報を取得し、当該プレゼンス情報の一覧をクライアント装置２０に表示するようなサーバ処理を実行することができる。なお、オペレータの状況を示すプレゼンス情報には、例えば当該オペレータが着席しているか離席しているかを示す情報及び当該オペレータが通話中であるか否かを示す情報等が含まれる。
【００２０】
また、サーバ装置１０は、例えばユーザの操作に基づくクライアント装置２０からの指示に基づいて、複数のデバイス３０を制御するようなサーバ処理を実行することも可能である。
【００２１】
なお、サーバ装置１０（Ｗｅｂサーバプログラム）とクライアント装置２０（ブラウザ）とは、ステートフルなネットワークプロトコル（以下、ステートフルプロトコルと表記）に基づく通信が実行されるものとする。ステートフルプロトコルとは、例えばＷｅｂＳｏｃｋｅｔ及びＷｅｂＲＴＣのように持続的にコネクションを確立した上でＷｅｂサーバプログラムとブラウザとの間でリアルタイムに双方向通信を行うためのプロトコルである。本実施形態においては、Ｗｅｂサーバプログラムとブラウザとの間ではＷｅｂＳｏｃｋｅｔによる通信（接続）が行われるものとして説明する。
【００２２】
ここで、図１に示すように、複数のクライアント装置２０の各々がコールセンター（オペレータ）を管理する管理ユーザ及びオペレータ等の一般ユーザによって使用される場合を想定する。以下、管理ユーザによって使用されるクライアント装置２０を管理ユーザのクライアント装置２０、一般ユーザによって使用されるクライアント装置２０を一般ユーザのクライアント装置２０と称する。
【００２３】
この場合において、例えば図２に示すようにサーバ装置１０に接続される複数のデバイス３０に新規デバイス３２が追加され、当該新規デバイス３２に対する制御（機能）を管理ユーザのみが利用可能とするようにＷｅｂサーバプログラムが変更される場合を想定する。同様に、例えばオペレータの各々の状況を示すプレゼンス情報を一覧表示する機能を管理ユーザのみが利用可能とするようにＷｅｂサーバプログラムが変更される場合を想定する。
【００２４】
上記したようなＷｅｂアプリケーションプログラムの変更は当該Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）を更新することによって実現されるが、当該Ｗｅｂサーバプログラムの更新中もＷｅｂサーバプログラムと管理ユーザのクライアント装置２０のブラウザ間ではＷｅｂＳｏｃｋｅｔによる接続が維持される。一方、サーバ装置１０と一般ユーザのクライアント装置２０との間のセッションにおいて実行されるサーバ処理（一般ユーザのサーバ処理）については停止する必要がある。
【００２５】
具体的には、Ｗｅｂサーバプログラムが更新されると新規デバイス３２に対する制御は管理ユーザのみが利用可能であるため、このような更新後のＷｅｂサーバプログラムに基づく処理（新規デバイス３２を制御するサーバ処理）は、サーバ装置１０と一般ユーザのクライアント装置２０との間のセッションにおいては停止する必要がある。また、Ｗｅｂサーバプログラムが更新される前の一般ユーザのサーバ処理においてはオペレータの各々の状況を示すプレゼンス情報の一覧を取得していたが、当該Ｗｅｂサーバプログラムが更新された後では当該プレゼンス情報の一覧を取得（表示）可能なのは管理ユーザのみであるため、このような一般ユーザのサーバ処理の利用も停止する必要がある。
【００２６】
そこで、本実施形態に係るサーバ装置１０は、Ｗｅｂサーバプログラムが更新された際に、当該更新されたＷｅｂサーバプログラムに基づく処理が認可されていないユーザ（ここでは、一般ユーザ）のサーバ処理を停止することを実現するための構成を有する。
【００２７】
以下、本実施形態に係るサーバ装置１０について説明する。図３は、本実施形態に係るサーバ装置１０のシステム構成の一例を示す。サーバ装置１０は、ＣＰＵ１１、システムコントローラ１２、主メモリ１３、ＢＩＯＳ−ＲＯＭ１４、不揮発性メモリ１５、通信デバイス１６、エンベデッドコントローラ（ＥＣ）１７等を備える。
【００２８】
ＣＰＵ１１は、サーバ装置１０内の様々なコンポーネントの動作を制御するプロセッサである。ＣＰＵ１１は、ストレージデバイスである不揮発性メモリ１５から主メモリ１３にロードされる様々なプログラムを実行する。これらプログラムには、オペレーティングシステム（ＯＳ）及び上記したＷｅｂサーバプログラム等が含まれている。
【００２９】
また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１４に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００３０】
システムコントローラ１２は、ＣＰＵ１１のローカルバスと各種コンポーネントとの間を接続するデバイスである。
【００３１】
通信デバイス１６は、有線または無線による通信を実行するように構成されたデバイスである。ＥＣ１７は、電力管理のためのエンベデッドコントローラを含むワンチップマクロコンピュータである。
【００３２】
なお、図３においては、ＣＰＵ１１、システムコントローラ１２、主メモリ１３、ＢＩＯＳ−ＲＯＭ１４、不揮発性メモリ１５、通信デバイス１６及びＥＣ１７のみが示されているが、サーバ装置１０は、例えばＨＤＤ（Hard Disk Drive）及びＳＳＤ（Solid State Dive）のような他の記憶装置を備えていてもよいし、他の入力装置及び出力装置等を備えていてもよい。
【００３３】
図４は、サーバ装置１０の主として機能構成の一例を示すブロック図である。図４に示すように、サーバ装置１０は、クラスロード部１０１、データ処理リクエスト受信部１０２、セッション管理部１０３及びサーバ処理部１０４を含む。
【００３４】
本実施形態において、クラスロード部１０１、データ処理リクエスト受信部１０２、セッション管理部１０３及びサーバ処理部１０４は、例えば図３に示すＣＰＵ１１（つまり、サーバ装置１０のコンピュータ）が不揮発性メモリ１５に格納されているＷｅｂサーバプログラムを実行すること（つまり、ソフトウェア）により実現されるものとする。なお、このＷｅｂサーバプログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、Ｗｅｂサーバプログラムは、例えばネットワークを介してサーバ装置１０にダウンロードされても構わない。
【００３５】
ここでは、各部１０１〜１０４がソフトウェア（Ｗｅｂサーバプログラム）により実現されるものとして説明したが、これらの各部１０１〜１０４の少なくとも一部は、ハードウェアにより実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成によって実現されてもよい。
【００３６】
ここで、Ｗｅｂサーバプログラムは、上記したステートフルプロトコルでやり取りされるデータを処理するための複数のサーバ処理クラスを含む。なお、この複数のサーバ処理クラスの各々においては、サーバ装置１０で実行される処理（Ｗｅｂサーバプログラムに基づいて実行される処理）の内容が定義されている。
【００３７】
クラスロード部１０１は、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスをロードする。クラスロード部１０１によってロードされたサーバ処理クラスは、クラスリポジトリ１０５内に格納される。
【００３８】
データ処理リクエスト受信部１０２は、クライアント装置２０から送信されるデータ処理リクエストを受信する。データ処理リクエストは、ＵＲＬ（Uniform Resource Locator）を含み、例えばＷｅｂＳｏｃｋｅｔのＨｔｔｐ  Ｕｐｇｒａｄｅ要求やＷｅｂＲＴＣのＳＤＰ  Ｏｆｆｅｒのようなステートフルプロトコルに基づく通信を開始するためのリクエストである。
【００３９】
データ処理リクエスト受信部１０２は、クライアント装置２０からデータ処理リクエストを受信すると、サーバ装置１０とクライアント装置２０との間のセッションを生成（確立）する。
【００４０】
セッション管理部１０３は、データ処理リクエスト受信部１０２によって生成されたセッションを管理する。図４においては、サーバ装置１０と管理ユーザのクライアント装置２０との間のセッション（以下、管理ユーザのセッションと表記）及びサーバ装置１０と一般ユーザのクライアント装置２０との間のセッション（以下、一般ユーザのセッションと表記）が管理されている。
【００４１】
なお、セッション管理部１０３によって管理されるセッションには、ステートフルプロトコル通信インスタンス（以下、単に通信インスタンスと表記）、サーバ処理インスタンス及びユーザロールが含まれる。
【００４２】
サーバ装置１０は、セッション管理部１０３によって管理されるセッションに含まれる通信インスタンスの処理を実行することによって、ステートフルプロトコル（ＷｅｂＳｏｃｋｅｔ）に基づくクライアント装置２０との通信を実行することができる。サーバ処理インスタンスはクラスリポジトリ１０５に格納されたサーバ処理クラスから生成され、サーバ装置１０において実行されるサーバ処理インスタンスの処理は上記したサーバ処理に相当する。ユーザロールは、ユーザに関する情報（ユーザ情報）に相当し、例えばユーザの役割（権限）を含む。具体的には、管理ユーザのセッションに含まれるユーザロールは「管理ユーザ」であり、一般ユーザのセッションに含まれるユーザロールは「一般ユーザ」である。
【００４３】
サーバ処理部１０４は、セッション管理部１０３によって管理されている各セッションに含まれるサーバ処理インスタンスの処理（つまり、サーバ処理）を実行する。また、サーバ処理部１０４は、上記したＷｅｂサーバプログラムの更新に関する処理を実行する機能部として、セッション取得部１０４ａ、更新判定メソッド呼び出し部１０４ｂ、サーバ処理更新部１０４ｃ及びセッション破棄部１０４ｄを含む。
【００４４】
ここで、Ｗｅｂサーバプログラムの更新においては、更新対象となるサーバ処理クラス（以下、更新前のサーバ処理クラスと表記）が、変更されたサーバ処理の内容が定義されたサーバ処理クラス（以下、更新後のサーバ処理クラスと表記）に更新される。この更新後のサーバ処理クラスには、当該更新後のサーバ処理クラスにおいて定義される処理の実行が認可されるユーザが規定されたメソッド（以下、更新判定メソッドと表記）が含まれる。
【００４５】
セッション取得部１０４ａは、セッション管理部１０３によって管理されているセッションの中から、更新前のサーバ処理クラスから生成されたサーバ処理インスタンスを含むセッションを取得する。
【００４６】
更新判定メソッド呼び出し部１０４ｂは、セッション管理部１０３によって取得されたセッションに含まれるユーザロールを引数として更新後のサーバ処理クラスに含まれる更新判定メソッドを呼び出す。更新判定メソッド呼び出し部１０４ｂは、呼び出された更新判定メソッドの返り値に基づいて、セッション取得部１０４ａによって取得されたセッションにおいて実行されるサーバ処理（つまり、サーバ処理インスタンス）を更新するか否かを判定する。
【００４７】
サーバ処理更新部１０４ｃは、更新後のサーバ処理クラスからサーバ処理インスタンスを生成し、セッション管理部１０３によって取得されたセッションに含まれるサーバ処理インスタンスを当該生成されたサーバ処理インスタンスに更新する。
【００４８】
セッション破棄部１０４ｄは、セッション管理部１０３によって管理されているセッションを破棄する処理を実行する。
【００４９】
次に、図５のシーケンスチャートを参照して、本実施形態におけるＷｅｂアプリケーションシステム１（サーバ装置１０及びクライアント装置２０）の一連の動作の概要について説明する。
【００５０】
クライアント装置２０を使用するユーザがＷｅｂアプリケーションプログラムを利用する場合、クライアント装置２０は、ユーザの操作に応じてＨＴＴＰリクエストをサーバ装置１０に送信する（ステップＳ１）。
【００５１】
サーバ装置１０は、クライアント装置２０から送信されたＨＴＴＰリクエストに対するＨＴＴＰレスポンスをクライアント装置２０に返す（ステップＳ２）。これにより、クライアント装置２０には、例えばサーバ装置１０にログインするための画面（以下、ログイン画面）が表示される。
【００５２】
ここで、ユーザは、ログイン画面に対して例えば当該ユーザを識別するためのＩＤ及び当該ユーザに割り当てられたパスワードを入力することができる。クライアント装置２０は、ログイン画面に入力されたＩＤ及びパスワードをサーバ装置１０に送信する（ステップＳ３）。
【００５３】
サーバ装置１０は、クライアント装置２０から送信されたＩＤ及びパスワードに基づいてクライアント装置２０を使用するユーザに対する認証処理を実行する（ステップＳ４）。認証処理においては、クライアント装置２０から送信されたＩＤ及びパスワードが例えば予め登録されたＩＤ及びパスワードであるか否かが確認される。
【００５４】
ステップＳ４における認証処理が完了した場合、サーバ装置１０は、ログイン済み画面（Ｗｅｂページ）をクライアント装置２０に送信する（ステップＳ５）。
【００５５】
ステップＳ５の処理が実行されると、クライアント装置２０には、ログイン済み画面が表示される。
【００５６】
ここで、クライアント装置２０は、例えばログイン済み画面に対するユーザの操作に応じて、上記したデータ処理リクエストを送信する（ステップＳ６）。なお、ステップＳ６において送信されるデータ処理リクエストは、例えばＷｅｂＳｏｃｋｅｔのＨｔｔｐ  Ｕｐｇｒａｄｅ要求を含む。
【００５７】
クライアント装置２０から送信されたデータ処理リクエストは、サーバ装置１０（データ処理リクエスト受信部１０２）によって受信される。データ処理リクエスト受信部１０２は、データ処理リクエストが受信されると、クラスリポジトリ１０５からサーバ処理クラスを読み込む（ステップＳ７）。
【００５８】
次に、データ処理リクエスト受信部１０２は、クラスリポジトリ１０５から読み込まれたサーバ処理クラスからサーバ処理インスタンスを生成する（ステップＳ８）。
【００５９】
ステップＳ８の処理が実行されると、上記したサーバ装置１０とクライアント装置２０との間のセッションが生成され、セッション管理部１０３は、当該セッションを例えばセッション管理部１０３の内部に格納して管理する（ステップＳ９）。なお、セッション管理部１０３によって管理されるセッションには、上記したように通信インスタンス、サーバ処理インスタンス及びユーザロールが含まれる。なお、ユーザロールは、例えば上記したステップＳ４における認証処理等において取得可能であるものとする。
【００６０】
このようなセッションが管理されている場合、サーバ装置１０及びクライアント装置２０間での双方向通信（つまり、データのやり取り）が可能となる（ステップＳ１０）。
【００６１】
サーバ処理部１０４は、サーバ装置１０及びクライアント装置２０間での双方向通信に基づいてステップＳ８において生成されたサーバ処理インスタンスの処理（サーバ処理）を実行する（ステップＳ１１）。図５においては示されていないが、サーバ処理インスタンスの処理が実行された場合、例えば当該処理結果がクライアント装置２０に表示される。
【００６２】
ここで、Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）に含まれるサーバ処理クラスが更新された場合を想定する（ステップＳ１２）。
【００６３】
この場合、サーバ処理部１０４に含まれるセッション取得部１０４ａは、セッション管理部１０３によって管理されているセッションの中から、更新後のサーバ処理クラスに基づいてセッションを探索（取得）する（ステップＳ１３）。
【００６４】
ステップＳ１２においてセッションが探索された場合、当該セッションに含まれるユーザロールに基づいて当該セッションに含まれるサーバ処理インスタンスを更新するか否か（つまり、更新可否）を判定する（ステップＳ１４）。
【００６５】
図５においては省略されているが、ステップＳ１４の処理が実行された場合、当該ステップＳ１４における判定結果に基づいてサーバ処理インスタンスの更新またはセッションの破棄が実行される。
【００６６】
以下、本実施形態に係るサーバ装置１０の動作について詳細に説明する。まず、図６を参照して、サーバ装置１０及びクライアント装置２０間でセッションを開始する際のサーバ装置１０の処理について説明する。なお、図６において説明する処理は、上記した図５に示すステップＳ６〜Ｓ９の処理に相当する。
【００６７】
ここでは、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスは、クラスロード部１０１によってロードされ、クラスリポジトリ１０５内に格納されているものとする（ステップＳ２１）。
【００６８】
サーバ装置１０及びクライアント装置２０間でセッションを開始する場合、クライアント装置２０は、サーバ装置１０にデータ処理リクエストを送信する（ステップＳ２２）。
【００６９】
ステップＳ２２の処理が実行されると、データ処理リクエスト受信部１０２は、当該ステップＳ２２において送信されたデータ処理リクエストを受信する。
【００７０】
次に、データ処理リクエスト受信部１０２は、サーバ装置１０及びクライアント装置２０間で開始されるセッションにおいて実行される処理が定義されているサーバ処理クラスをクラスリポジトリ１０５から読み込む（ステップＳ２３）。
【００７１】
データ処理リクエスト受信部１０２は、ステップＳ２３において読み込まれたサーバ処理クラスからサーバ処理インスタンスを生成し、当該サーバ処理インスタンスを含むセッション（サーバ装置１０及びクライアント装置２０間のセッション）を生成する。
【００７２】
データ処理リクエスト受信部１０２によって生成されたセッションは、セッション管理部１０３内に格納され、当該セッション管理部１０３によって管理される（ステップＳ２４）。なお、セッション管理部１０３によって管理されるセッションには、サーバ所為インスタンス以外に、上記したように通信インスタンス及びユーザロールが含まれる。
【００７３】
上記した図６において説明した処理が実行されることによって、クライアント装置２０は、サーバ装置１０とのセッションを開始し、ステートフルプロトコルに基づく当該サーバ装置１０との双方向通信を行うことが可能となる。
【００７４】
なお、図６においては管理ユーザのクライアント装置２０がサーバ装置１０とのセッションを開始する場合について示しているが、一般ユーザのクライアント装置２０がサーバ装置１０とのセッションを開始する場合についても同様の処理が実行される。
【００７５】
次に、図７を参照して、Ｗｅｂサーバプログラム（サーバ処理クラス）が更新された際のサーバ装置１０の処理について説明する。なお、図７において説明する処理は、上記した図５に示すステップＳ１２〜Ｓ１４の処理に相当する。
【００７６】
例えばサーバ装置１０の管理者等によってＷｅｂサーバプログラムに含まれるサーバ処理クラスが更新された場合、当該サーバ処理クラスは、クラスロード部１０１によってロードされて、クラスリポジトリ１０５に格納される（ステップＳ３１）。
【００７７】
ここで、サーバ処理クラスが更新される場合において、更新前後のサーバ処理クラスのパッケージを含むクラス名（完全修飾名）は同一であるものとする。このため、クラスロード部１０１は、ステップＳ３１の処理を実行する際に、ロードされたサーバ処理クラスとクラス名が同一のサーバ処理クラスがクラスリポジトリ１０５に格納されているか否かによって、サーバ処理クラスが更新されたか否かを判定することができる。
【００７８】
クラスロード部１０１は、ロードされたサーバ処理クラスとクラス名が同一のサーバ処理クラスがクラスリポジトリ１０５に格納されており、サーバ処理クラスが更新されたと判定された場合、サーバ処理クラスが更新されたことをサーバ処理部１０４に通知する（ステップＳ３２）。
【００７９】
ステップＳ３２の処理が実行されると、サーバ処理部１０４は、ステップＳ３１においてクラスリポジトリ１０５に格納されたサーバ処理クラス（更新後のサーバ処理クラス）を読み込む（ステップＳ３３）。
【００８０】
セッション取得部１０４ａは、セッション管理部１０３によって管理されているセッションの中から、ステップＳ３３においてクラスリポジトリ１０５から読み込まれた更新後のサーバ処理クラスに基づいてセッションを取得する（ステップＳ３４）。ステップＳ３４においては、更新対象となるサーバ処理インスタンスを含むセッションが取得される。
【００８１】
ここで、更新後のサーバ処理クラスには上記したように更新後のサーバ処理クラスにおいて定義される処理（サーバ処理）の実行が認可されるユーザが規定された更新判定メソッドが含まれているが、当該更新判定メソッドは、セッションに含まれるサーバ処理インスタンスを更新するか否かを判定するために用いられる。
【００８２】
ステップＳ３４の処理が実行されると、更新判定メソッド呼び出し部１０４ｂは、ステップＳ３３において読み込まれた更新後のサーバ処理クラスに含まれる更新判定メソッドを呼び出し、当該更新判定メソッドの返り値に基づいてステップＳ３４において取得されたセッションに含まれるサーバ処理インスタンスを更新するか否かを判定する。更新判定メソッドは、セッションに含まれるユーザロールを引数として呼び出され、当該ユーザロールに応じた値を返り値とする。すなわち、サーバ処理インスタンスを更新するか否かの判定結果は、サーバ装置１０とのセッションが生成されているクライアント装置２０を使用するユーザ（の役割）によって異なる。
【００８３】
ステップＳ３４において取得されたセッションに含まれるサーバ処理インスタンスを更新すると判定された場合、サーバ処理更新部１０４ｃは、ステップＳ３３において読み込まれた更新後のサーバ処理クラスからサーバ処理インスタンスを生成する。サーバ処理更新部１０４ｃは、ステップＳ３４において取得されたセッションに含まれるサーバ処理インスタンスを、更新後のサーバ処理クラスから生成されたサーバ処理インスタンスに更新する（ステップＳ３５）。
【００８４】
一方、ステップＳ３４において取得されたセッションに含まれるサーバ処理インスタンスを更新しないと判定された場合、セッション破棄部１０４ｄは、当該セッションを破棄する（ステップＳ３６）。
【００８５】
上記した図７において説明した処理によれば、サーバ処理クラスの更新に従って、更新後のサーバ処理クラスにおいて定義される処理の実行が認可されるユーザのセッションについてはサーバ処理インスタンスを更新し、当該処理の実行が認可されてないユーザのセッションについては破棄することができる。
【００８６】
次に、図８のフローチャートを参照して、上記したサーバ処理クラスが更新された際のサーバ処理部１０４の処理手順の一例について説明する。
【００８７】
上記したようにクラスロード部１０１からサーバ処理クラスが更新されたことが通知された場合、サーバ処理部１０４は、セッション取得部１０４ａを呼び出す。セッション取得部１０４ａは、更新後のサーバ処理クラスのクラス名から更新前のサーバ処理クラスを特定し、セッション管理部１０３によって管理されているセッションの中から、当該更新前のサーバ処理クラスから生成されたサーバ処理インスタンス（更新対象となるサーバ処理インスタンス）を含むセッションを取得する（ステップＳ４１）。ステップＳ４１においては複数のセッションが取得されても構わない。
【００８８】
なお、本実施形態においては更新前のサーバ処理クラスと更新後のサーバ処理クラスとが同一のクラス名であるものとして説明しているが、更新前のサーバ処理クラスと更新後のサーバ処理クラスとでクラス名が異なる場合には、当該更新前のサーバ処理クラス及び更新後のサーバ処理クラスの各々のクラス名を対応づけて保持するテーブルを予め用意しておく構成とすることも可能である。このような構成によれば、セッション取得部１０４ａは、テーブルを参照して更新後のサーバ処理クラスから更新前のサーバ処理クラスを特定することができる。
【００８９】
次に、ステップＳ４１において取得されたセッションの各々について以下のステップＳ４２〜Ｓ４５の処理が実行される。ここでは、ステップＳ４２〜Ｓ４５の処理が実行されるセッションを対象セッションと称する。
【００９０】
まず、サーバ処理部１０４は、更新判定メソッド呼び出し部１０４ｂを呼び出す。更新判定メソッド呼び出し部１０４ｂは、対象セッションに含まれるユーザロールに基づいて更新判定処理を実行する（ステップＳ４２）。更新判定処理においては対象セッションに含まれるサーバ処理インスタンスを更新するか否かが判定され、当該更新判定処理の処理結果には更新及び破棄が含まれる。なお、更新判定処理の詳細については後述する。
【００９１】
ステップＳ４２の処理が実行されると、当該ステップＳ４２における更新判定処理の処理結果が更新であるか否かが判定される（ステップＳ４３）。
【００９２】
更新判定処理の処理結果が更新であると判定された場合（ステップＳ４３のＹＥＳ）、サーバ処理部１０４は、サーバ処理更新部１０４ｃを呼び出す。サーバ処理更新部１０４ｃは、更新後のサーバ処理クラスからサーバ処理インスタンスを生成し、対象セッションに含まれるサーバ処理インスタンス（更新前のサーバ処理インスタンス）を当該生成されたサーバ処理インスタンス（更新後のサーバ処理インスタンス）に更新する（ステップＳ４４）。
【００９３】
一方、更新判定処理の処理結果が更新でない（つまり、破棄である）と判定された場合（ステップＳ４３のＮＯ）、サーバ処理部１０４は、セッション破棄部１０４ｄを呼び出す。セッション破棄部１０４ｄは、対象セッションを破棄する処理（以下、セッション破棄処理と表記）を実行する（ステップＳ４５）。なお、セッション破棄処理の詳細については後述する。
【００９４】
ステップＳ４４またはＳ４５の処理が実行されると、ステップＳ４１において取得された全てのセッションについて上記したステップＳ４２〜Ｓ４５の処理が実行されたか否かが判定される（ステップＳ４６）。
【００９５】
全てのセッションについて処理が実行されていないと判定された場合（ステップＳ４６のＮＯ）、上記したステップＳ４２に戻って処理が繰り返される。この場合、ステップＳ４２〜Ｓ４５の処理が実行されていないセッションを対象セッションとして当該処理が実行される。
【００９６】
一方、全てのセッションについて処理が実行されたと判定された場合（ステップＳ４６のＹＥＳ）、処理は終了される。
【００９７】
次に、図９のフローチャートを参照して、上記した更新判定処理（図８に示すステップＳ４２の処理）の処理手順の一例について説明する。この更新判定処理は、サーバ処理部１０４に含まれる更新判定メソッド呼び出し部１０４ｂによって実行される。
【００９８】
ここで、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスには、上記した更新判定メソッド及び当該更新判定メソッド以外のメソッドを含む複数のメソッドが含まれているものとする。
【００９９】
更新判定処理において、更新判定メソッド呼び出し部１０４ｂは、更新後のサーバ処理クラスに含まれるメソッドの一覧を取得する（ステップＳ５１）。
【０１００】
次に、更新判定メソッド呼び出し部１０４ｂは、ステップＳ５１において取得されたメソッドの一覧のうちの１つのメソッド（以下、対象メソッドと表記）が更新判定メソッドであるか否かを判定する（ステップＳ５２）。なお、対象メソッドが更新判定メソッドであるか否かは、例えば対象メソッドに更新判定メソッドを示すアノテーションが付与されているか否かによって判定されればよい。
【０１０１】
対象メソッドが更新判定メソッドでないと判定された場合（ステップＳ５２のＮＯ）、ステップＳ５１において取得されたメソッド一覧のうちの他のメソッドを対象メソッドとしてステップＳ５２の処理が繰り返される。このようにステップＳ５１において取得されたメソッドの一覧に対してステップＳ５２の処理が繰り返されることによって、更新判定メソッド呼び出し部１０４ｂは、メソッドの一覧から更新判定メソッドを探索する。
【０１０２】
対象メソッドが更新判定メソッドであると判定された場合（ステップＳ５２のＹＥＳ）、更新判定メソッド呼び出し部１０４ｂは、図８において説明した更新判定処理の対象となるセッション（対象セッション）に含まれるユーザロールを引数として当該対象メソッド（更新判定メソッド）を呼び出す（ステップＳ５３）。
【０１０３】
ここで、図１０及び図１１を参照して、サーバ処理クラスに含まれる更新判定メソッドの一例について説明する。
【０１０４】
図１０は例えば更新前のサーバ処理クラス２００を示しており、当該更新前のサーバ処理クラス２００には、更新判定メソッド２０１が含まれている。
【０１０５】
図１０に示す更新判定メソッド２０１は、サーバ処理クラス２００（から生成されるサーバ処理インスタンス）が全てのユーザが利用可能（更新可能）であることを表している。すなわち、例えばユーザロール「管理ユーザ」を引数として更新判定メソッド２０１が呼び出された場合、当該更新判定メソッド２０１の処理結果（返り値）としては「更新」が返される。同様に、例えばユーザロール「一般ユーザ」を引数として更新判定メソッド２０１が呼び出された場合、当該更新判定メソッド２０１の処理結果（返り値）としては「更新」が返される。ここでは、ユーザロール「管理ユーザ」及び「一般ユーザ」についてのみ説明したが、他のユーザロールを引数とした場合であっても同様である。
【０１０６】
一方、図１１は例えば更新後のサーバ処理クラス２１０を示しており、当該更新後のサーバ処理クラス２１０には、更新判定メソッド２１１が含まれている。
【０１０７】
図１１に示す更新判定メソッド２１１は、サーバ処理クラス２１０は管理ユーザのみが利用可能（更新可能）であることを表している。すなわち、例えばユーザロール「管理ユーザ」を引数として更新判定メソッド２１１が呼び出された場合、当該更新判定メソッド２１１の処理結果（返り値）としては「更新」が返される。一方、例えばユーザロール「一般ユーザ」を引数として更新判定メソッド２１１が呼び出された場合、当該更新判定メソッド２１１の処理結果（返り値）としては「破棄」が返される。ここでは、ユーザロール「管理ユーザ」及び「一般ユーザ」についてのみ説明したが、「管理ユーザ」以外のユーザロールを引数とした場合には、ユーザロール「一般ユーザ」を引数とした場合と同様に「破棄」が返される。
【０１０８】
なお、図１０に示す更新判定メソッド２０１において記述されている「全ユーザ利用可能」及び図１１に示す更新判定メソッド２１１において記述されている「管理者のみ」はコメント（注釈）である。
【０１０９】
また、図１２は、更新判定メソッド２０１または２１１の引数UserRoleに渡される値の一例を示している。図１２に示す例では、例えばユーザロールが「一般ユーザ」である場合の引数（つまり、更新判定メソッドの引数UserRoleに渡される値）は「user」であり、ユーザロールが「管理ユーザ」である場合の引数は「admin」である。
【０１１０】
図９に示すステップＳ５３の処理が実行されると、更新判定メソッドの処理結果が返却されて更新判定処理は終了される（ステップＳ５４）。図８に示すステップＳ４３の処理においては、このステップＳ５４において返却された更新判定メソッドの処理結果（返り値）が更新判定処理の処理結果として用いられる。
【０１１１】
なお、図９においては示されていないが、ステップＳ５１において取得されたメソッドの一覧の中に更新判定メソッドが存在しない場合には「更新」が返却されるものとする。
【０１１２】
次に、図１３のフローチャートを参照して、上記したセッション破棄処理（図８に示すステップＳ４５の処理）の処理手順の一例について説明する。このセッション破棄処理は、サーバ処理部１０４に含まれるセッション破棄部１０４ｄによって実行される。
【０１１３】
なお、セッション破棄処理は、図８において説明した対象セッションに対して実行されるものとする。また、対象セッションにおいてサーバ装置１０と通信を実行するクライアント装置２０を便宜的に対象クライアント装置２０と称する。
【０１１４】
この場合、セッション破棄部１０４ｄは、対象クライアント装置２０とのステートフルプロトコルに基づく通信（ステートフルプロトコル通信）を切断する（ステップＳ６１）。なお、ステップＳ６１の処理が実行された場合、対象クライアント装置２０はサーバ装置１０との例えばＷｅｂＳｏｃｋｅｔによる通信をすることはできないが、当該サーバ装置１０及び対象クライアント装置２０間のＨＴＴＰセッションは維持される。
【０１１５】
次に、セッション破棄部１０４ｄは、対象セッションに含まれる通信インスタンス（ステートフルプロトコル通信インスタンス）を破棄する（ステップＳ６２）。
【０１１６】
また、セッション破棄部１０４ｄは、対象セッションに含まれるサーバ処理インスタンスを破棄する（ステップＳ６３）。
【０１１７】
ステップＳ６３の処理が実行されると、セッション破棄部１０４ｄは、対象セッションを破棄する（ステップＳ６４）。
【０１１８】
ステップＳ６４の処理が実行された場合、対象セッションはセッション管理部１０３による管理から外れ、対象クライアント装置２０（を使用するユーザ）による対象セッションにおいて実行される処理（サーバ処理）の利用が停止される。
【０１１９】
以下、本実施形態に係るサーバ装置１０の動作について具体的に説明する。ここでは、図１４に示すように、Ｗｅｂサーバプログラムには全ユーザが利用可能なサーバ処理クラスＡが含まれており、セッション管理部１０３において、当該サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び一般ユーザのセッションが管理されているものとする。サーバ処理クラスＡ及び当該サーバ処理クラスＡに含まれる更新判定メソッドは、例えば上記した図１０に示すサーバ処理クラス２００及び更新判定メソッド２０１であるものとする。
【０１２０】
なお、サーバ装置１０と管理ユーザのクライアント装置２０との間でセッションを開始する際の処理及びサーバ装置１０と一般ユーザのクライアント装置２０との間でセッションを開始する際の処理については上記した図６等で説明した通りであるため、ここではその詳しい説明を省略する。
【０１２１】
ここで、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスＡ（更新前のサーバ処理クラス）がサーバ処理クラスＡ´（更新後のサーバ処理クラス）に更新された場合を想定する。また、サーバ処理クラスＡ´及び当該サーバ処理クラスＡ´に含まれる更新判定メソッドは、例えば上記した図１１に示すサーバ処理クラス２１０及び更新判定メソッド２１１であるものとする。
【０１２２】
サーバ処理クラスＡがサーバ処理クラスＡ´に更新された場合、サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び一般ユーザのセッションがセッション取得部１０４ａによって取得される。
【０１２３】
サーバ処理クラスＡ´に含まれる更新判定メソッドによれば、サーバ処理クラスＡ´は管理ユーザのみが利用可能であるため、管理ユーザのセッションを対象セッションとした更新判定処理においては「更新」が返される。この場合、図１５に示すように、管理ユーザのセッションに含まれるサーバ処理Ａインスタンスは、サーバ処理クラスＡ´から生成されるサーバ処理Ａ´インスタンスに更新される。
【０１２４】
一方、サーバ処理クラスＡ´に含まれる更新判定メソッドによれば、一般ユーザのセッションを対象セッションとした更新判定処理においては「破棄」が返される。この場合、図１６に示すように、一般ユーザのセッションは破棄される。
【０１２５】
ここで、上記したようにサーバ処理クラスＡがサーバ処理クラスＡ´に更新される際のクライアント装置２０の表示画面例について具体的に説明する。
【０１２６】
ここでは、上記したようにＷｅｂアプリケーションシステム１（Ｗｅｂアプリケーションプログラム）がコールセンターに導入され、当該コールセンターのオペレータの状況を管理するためにＷｅｂアプリケーションプログラムが利用される場合を想定する。以下の説明では、一般ユーザをオペレータ、管理ユーザを当該オペレータの状況を管理する管理者とする。なお、セッション管理部１０３においては、サーバ処理Ａインスタンスを含むオペレータのセッション及び管理者のセッションが管理されているものとする。
【０１２７】
まず、図１７は、サーバ処理Ａインスタンスの処理が実行されることによってオペレータのクライアント装置２０に表示される画面の一例を示す。
【０１２８】
図１７に示すように、オペレータのクライアント装置２０に表示される画面３００には、当該オペレータの各業務内容に応じたボタン３００ａ〜３００ｃが配置されている。クライアント装置２０を使用するオペレータは、このような画面３００上でボタン３００ａ〜３００ｃを選択（指定）することによって、当該ボタンに応じた業務を遂行することができる。
【０１２９】
次に、図１８は、サーバ処理Ａインスタンスが実行されることによって管理者のクライアント装置２０に表示される画面の一例を示す。
【０１３０】
図１８に示すように、管理者のクライアント装置２０に表示される画面３１０には、当該管理者が管理すべきオペレータの座席表が配置されている。なお、図１８に示す画面３１０において、１つのブロックは１人のオペレータの座席を表し、当該ブロック内に表示されている記号は当該オペレータの現在の状況を示している。
【０１３１】
具体的には、画面３１０中のブロック３１０ａには記号「○」が表示されている。この場合、ブロック３１０ａによって表される座席のオペレータが上記した図１７に示す画面３００中の例えばボタン３００ａに対応する業務中であることが示されている。
【０１３２】
また、画面３１０中のブロック３１０ｂには記号「×」が表示されている。この場合、ブロック３１０ｂによって表される座席のオペレータが上記した図１７に示す画面３００中の例えばボタン３００ｂに対応する業務中であることが示されている。
【０１３３】
更に、画面３１０中のブロック３１０ｂには記号「△」が表示されている。この場合、ブロック３１０ｃによって表される座席のオペレータが上記した図１７に示す画面３００中の例えばボタン３００ｃに対応する業務中であることが示されている。
【０１３４】
管理者は、このような画面３１０を参照することによって、各オペレータの状況を把握することが可能となる。
【０１３５】
ここで、上記したサーバ処理クラスＡがサーバ処理クラスＡ´に更新された場合を想定する。
【０１３６】
この場合、管理者（管理ユーザ）のセッションは維持された状態で、当該セッションに含まれるサーバ処理Ａインスタンスはサーバ処理Ａ´インスタンスに更新される。このため、図１８に示す管理者のクライアント装置２０の画面３１０は継続して表示される。
【０１３７】
一方、サーバ処理クラスＡがサーバ処理クラスＡ´に更新されると、オペレータ（一般ユーザ）のセッションは破棄される。この場合、サーバ装置１０とオペレータのクライアント装置２０とのＷｅｂＳｏｃｋｅｔによる通信は一旦切断され、図１７に示すオペレータのクライアント装置２０の画面３００は、図１９に示す画面３０１に遷移する。図１９に示す例では、オペレータのクライアント装置２０の画面３０１には例えば「Ｗｅｂサーバプログラムが更新されました。」等のテキスト（メッセージ）が表示されている。
【０１３８】
図１９に示す画面３０１が表示されると、オペレータのクライアント装置２０の画面は、例えば図２０に示す画面（ログイン画面）３０２に遷移する。図２０に示すログイン画面は、図５に示すステップＳ２の処理の後に表示されるログイン画面と同様である。このログイン画面が表示された後に図５に示すステップＳ３〜Ｓ１１の処理が実行された場合には、新たに生成されたセッションにおいてサーバ処理（例えば、サーバ処理Ａインスタンスとは異なるサーバ処理Ｂインスタンスの処理）が実行され、オペレータのクライアント装置２０には、例えば図２１に示すような画面３０３が表示され得る。
【０１３９】
これによれば、サーバ処理Ａ´インスタンスの処理は管理者のみが利用可能であり、当該サーバ処理Ａ´インスタンスの処理をオペレータが利用することはできない。また、オペレータのセッションが破棄されることにより、オペレータは、サーバ処理Ａインスタンスの処理の利用も停止される。
【０１４０】
なお、上記したようにサーバ装置１０とオペレータのクライアント装置２０との間のセッションが破棄された場合には、クライアント装置２０の画面は、サーバ装置１０との新たなセッションを生成するための画面（例えば、ログイン画面等）に遷移する。これにより、サーバ装置１０とクライアント装置２０との間のセッションが新たに開始され、当該開始されたセッションにおいて実行されたサーバ処理の結果がクライアント装置２０に表示されることになる。
【０１４１】
上記したように本実施形態においては、ユーザロール（ユーザに関するユーザ情報）を含むクライアント装置２０との間のセッションを管理し、Ｗｅｂサーバプログラム（サーバ処理クラス）が更新された場合に、当該管理されているセッションに含まれるユーザロールに基づいて当該セッションにおいて実行される処理を更新するかを判定し、処理を更新しないと判定された場合には当該セッションを破棄する。
【０１４２】
具体的には、Ｗｅｂサーバプログラムはサーバ装置１０で実行される処理内容が定義されたサーバ処理クラスを含み、セッション管理部１０３において管理されるサーバ装置１０とクライアント装置２０との間のセッションはサーバ処理クラスから生成されたサーバ処理インスタンスを含む。Ｗｅｂサーバプログラムに含まれるサーバ処理クラスが更新された場合、管理されているセッションに含まれるサーバ処理インスタンスを更新するかが判定される。本実施形態においては、サーバ処理インスタンスを更新しないと判定された場合にはセッションを破棄し、サーバ処理インスタンスを更新すると判定された場合にはセッションに含まれるサーバ処理インスタンスを更新後のサーバ処理クラスから生成されたサーバ処理インスタンスに更新する。
【０１４３】
また、本実施形態においては、管理されるセッションはサーバ装置１０とクライアント装置２０との間でステートフルプロトコル通信を実行するための通信インスタンスを含み、当該セッションを破棄する場合には、サーバ装置１０とクライアント装置２０との間の通信を切断し、当該セッションに含まれる通信インスタンス及びサーバ処理インスタンスが破棄される。
【０１４４】
更に、本実施形態においては、ユーザロールが引数として渡される更新判定メソッドの返り値が破棄である場合にサーバ処理インスタンスを更新しないと判定し、当該更新判定メソッドの返り値が更新である場合にサーバ処理インスタンスを更新すると判定する。
【０１４５】
本実施形態においては、このような構成により、Ｗｅｂサーバプログラムが更新された際に、当該更新されたＷｅｂサーバプログラムに基づく処理の実行が認可されていないユーザのサーバ処理（サーバ処理インスタンスで実行中の処理）を停止するようなことが可能となり、Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）の更新に対して柔軟に対応することができる。
【０１４６】
ここで、本実施形態に対する比較例として、例えば予め用意された動的に変更可能な更新条件から更新の可否を判定し、当該更新が可である場合にサーバ処理インスタンスを更新するような構成が考えられる。しかしながら、このような第１比較例では、例えば更新が不可と判定されたユーザのサーバ処理を停止することはできない。
【０１４７】
また、本実施形態に対する別の比較例として、例えば更新対象のプログラムに付与された状態チェック関数を更新時に呼び出すような構成が考えられるが、このような比較例であってもユーザのサーバ処理を停止することはできない。
【０１４８】
これに対して、本実施形態では、更新後のＷｅｂサーバプログラムに基づく処理が認可されていないユーザのセッションを破棄することによって当該ユーザのサーバ処理を停止することが可能となる。
【０１４９】
なお、上記した比較例における更新条件を用いる場合には、当該更新条件の構成要素に解釈不可能な変更が発生した場合に更新の可否を判定する機能部を更新する必要があり、更新可否の判定にプログラマブルな仕組みが必要となる。
【０１５０】
更に、例えば更新対象の中に１つでも更新不可と判定されるもの場合に更新を中断（アボート）するような比較例も考えられるが、このような比較例では、本実施形態において説明したようにユーザのセッション別にサーバ処理インスタンスの更新またはセッションの破棄を行うことはできない。
【０１５１】
また、本実施形態は、例えばＷｅｂＳｏｃｋｅｔのような持続的にコネクションを確立した上で通信を行うようなシステムに適用されることで、更新されたＷｅｂサーバプログラムに基づく処理の実行が認可されているユーザであれば当該更新中であってもサーバ装置１０との接続が維持され、継続してクライアント装置２０を使用することが可能となる。
【０１５２】
なお、本実施形態においては、ユーザに関するユーザ情報としてユーザロール（ユーザの役割）を用いるものとして説明したが、ユーザ情報はユーザロール以外であってもよく、クライアント装置２０を使用するユーザを識別可能な情報（例えば、ユーザＩＤ等）であればよい。この場合には、本実施形態において説明したようにユーザロール（ユーザの役割）毎ではなく、例えばユーザ毎にサーバ処理を更新するか否かを判定することが可能となる。
【０１５３】
また、本実施形態は、サーバ装置１０において実行されるプログラムが更新された際に、クライアント装置２０とのセッションにおいて実行される処理を更新するか否かを判定し、当該処理を更新しないと判定された場合に当該セッションを破棄するものであれば適用可能であり、本実施形態において説明したＷｅｂアプリケーションシステム以外に、例えばブロックチェーン技術またはその他の技術を用いるシステムに適用されても構わない。
【０１５４】
（第２実施形態）
次に、第２実施形態について説明する。図２２は、本実施形態に係るサーバ装置の主として機能構成の一例を示すブロック図である。なお、前述した図４と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図４と異なる部分について主に述べる。なお、本実施形態に係るサーバ装置のシステム構成は、前述した第１実施形態と同様である。
【０１５５】
前述した第１実施形態においてはユーザロール（ユーザ情報）が管理ユーザ及び一般ユーザであるものとして主に説明したが、本実施形態においては、ユーザロールが当該管理ユーザの代行としての役割を有する代行ユーザである場合を想定している点で前述した第１実施形態とは異なる。
【０１５６】
図２２に示すように、本実施形態に係るサーバ装置１０は、サーバ処理部１１１を含む。サーバ処理部１１１は、前述した第１実施形態における更新判定メソッド呼び出し部１０４ｂに代えて更新判定メソッド呼び出し部１１１ａを含む。
【０１５７】
更新判定メソッド呼び出し部１１１ａは、セッション管理部１０３によって取得されたセッションに含まれるユーザロールを引数として更新後のサーバ処理クラスに含まれる更新判定メソッドを呼び出す。更新判定メソッド呼び出し部１１１ａは、呼び出された更新判定メソッドの返り値に基づいて、セッション取得部１０４ａによって取得されたセッションにおいて実行されるサーバ処理を更新するか否かを判定する更新判定処理を実行する。
【０１５８】
ここで、前述した第１実施形態における更新判定メソッド呼び出し部１０４ｂによる更新判定処理の結果には更新及び破棄が含まれるものとして説明したが、本実施形態における更新判定メソッド呼び出し部１１１ａによる更新判定処理の結果には更新、破棄及び維持が含まれるものとする。
【０１５９】
なお、本実施形態においてセッション管理部１０３によって管理されるセッションのうち、代行ユーザのセッション（サーバ装置１０と代行ユーザのクライアント装置２０との間のセッション）に含まれるユーザロールは「代行ユーザ」である。
【０１６０】
以下、本実施形態に係るサーバ装置１０の動作について説明する。ここでは、サーバ装置１０に含まれるサーバ処理部１１１の動作について主に説明する。
【０１６１】
図２３のフローチャートを参照して、サーバ処理クラスが更新された際のサーバ処理部１１１の処理手順の一例について説明する。
【０１６２】
前述した第１実施形態において説明したようにクラスロード部１０１からサーバ処理クラスが更新されたことが通知された場合、前述した図８に示すステップＳ４１の処理に相当するステップＳ７１の処理が実行される。
【０１６３】
次に、ステップＳ７１において取得されたセッションの各々について以下のステップＳ７２〜Ｓ７６の処理が実行される。ここでは、ステップＳ７２〜Ｓ７６の処理が実行されるセッションを対象セッションと称する。
【０１６４】
まず、サーバ処理部１１１は、更新判定メソッド呼び出し部１１１ａを呼び出す。更新判定メソッド呼び出し部１１１ａは、対象セッションに含まれるユーザロールに基づいて、更新判定処理を実行する（ステップＳ７２）。この更新判定処理においては対象セッションに含まれるサーバ処理インスタンスを更新するか否かが判定されるが、当該更新判定処理の処理結果には、上記したように更新、破棄及び維持が含まれる。なお、更新判定処理の詳細については後述する。
【０１６５】
ステップＳ７２の処理が実行されると、当該ステップＳ７２における更新判定処理の処理結果が更新であるか否かが判定される（ステップＳ７３）。
【０１６６】
更新判定処理の処理結果が更新であると判定された場合（ステップＳ７３のＹＥＳ）、前述した図８に示すステップＳ４４の処理に相当するステップＳ７４の処理が実行される。
【０１６７】
一方、更新判定処理の処理結果が更新でないと判定された場合（ステップＳ７３のＮＯ）、当該更新判定処理の処理結果が破棄であるか否かが判定される（ステップＳ７５）。
【０１６８】
更新判定処理の処理結果が破棄であると判定された場合（ステップＳ７５のＹＥＳ）、前述した図８に示すステップＳ４５の処理に相当するステップＳ７６の処理が実行される。
【０１６９】
なお、ステップＳ７４またはＳ７６の処理が実行されると、前述した図８に示すステップＳ４６の処理に相当するステップＳ７７の処理が実行される。
【０１７０】
一方、更新判定処理の処理結果が破棄でない（つまり、維持である）と判定された場合（ステップＳ７５のＮＯ）、ステップＳ７４及びＳ７６等の処理は実行されない。すなわち、対象セッションは維持され、ステップＳ７７の処理が実行される。
【０１７１】
次に、上記した更新判定処理（図２３に示すステップＳ７２の処理）の処理手順の一例について説明する。ここでは、前述した図９を用いて説明する。なお、更新判定処理は、サーバ処理部１１１に含まれる更新判定メソッド呼び出し部１１１ａによって実行される。
【０１７２】
本実施形態における更新判定処理においては、前述した第１実施形態において説明した図９に示すステップＳ５１及びＳ５２の処理が実行される。
【０１７３】
ステップＳ５２において対象メソッドが更新判定メソッドであると判定された場合（ステップＳ５２のＹＥＳ）、更新判定メソッド呼び出し部１１１ａは、図２３において説明した更新判定処理の対象となるセッション（対象セッション）に含まれるユーザロールを引数として当該対象メソッド（更新判定メソッド）を呼び出す（ステップＳ５３）。
【０１７４】
ここで、図２４を参照して、本実施形態におけるサーバ処理クラスに含まれる更新判定メソッドの一例について説明する。
【０１７５】
図２４は例えば更新後のサーバ処理クラス４００を示しており、当該更新後のサーバ処理クラス４００には、更新判定メソッド４０１が含まれている。
【０１７６】
図２４に示す更新判定メソッド４０１は、サーバ処理クラス４００（から生成されるサーバ処理インスタンス）は管理ユーザのみが利用可能（更新可能）であり、代行ユーザについては更新前のサーバ処理クラスが維持され、一般ユーザについてはサーバ処理クラス４００が利用不可であることを表している。なお、図２４に示す更新判定メソッド４０１において記述されている「管理ユーザのみ更新」はコメント（注釈）である。
【０１７７】
すなわち、例えばユーザロール「管理ユーザ」を引数として更新判定メソッド４０１が呼び出された場合、当該更新判定メソッド４０１の処理結果（返り値）としては「更新」が返される。同様に、例えばユーザロール「代行ユーザ」を引数として更新判定メソッド４０１が呼び出された場合、当該更新判定メソッド４０１の処理結果（返り値）としては「維持」が返される。また、例えばユーザロール「一般ユーザ」を引数として更新判定メソッド４０１が呼び出された場合、当該更新判定メソッド４０１の処理結果（返り値）としては「破棄」が返される。
【０１７８】
なお、図２５は、更新判定メソッド４０１の返り値の型の一例を示している。また、図２６は、更新判定メソッド４０１の引数UserRoleに渡される値の一例を示している。
【０１７９】
図９に示すステップＳ５３の処理が実行されると、更新判定メソッドの処理結果が返却されて更新判定処理は終了される（ステップＳ５４）。図２３に示すステップＳ７３以降の処理においては、このステップＳ５４において返却された更新判定メソッドの処理結果が更新判定処理の処理結果として用いられる。
【０１８０】
以下、本実施形態に係るサーバ装置１０の動作について具体的に説明する。ここでは、図２７に示すように、Ｗｅｂサーバプログラムには全ユーザが利用可能なサーバ処理クラスＡが含まれており、セッション管理部１０３において、当該サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び代行ユーザのセッションが管理されているものとする。サーバ処理クラスＡ及び当該サーバ処理クラスＡに含まれる更新判定メソッドは、例えば前述した図１０に示すサーバ処理クラス２００及び更新判定メソッド２０１であるものとする。
【０１８１】
ここで、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスＡ（更新前のサーバ処理クラス）がサーバ処理クラスＡ´（更新後のサーバ処理クラス）に更新された場合を想定する。また、サーバ処理クラスＡ´及び当該サーバ処理クラスＡ´に含まれる更新判定メソッドは、例えば上記した図２４に示すサーバ処理クラス４００及び更新判定メソッド４０１であるものとする。
【０１８２】
サーバ処理クラスＡがサーバ処理クラスＡ´に更新された場合、サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び代行ユーザのセッションがセッション取得部１０４ａによって取得される。
【０１８３】
サーバ処理クラスＡ´に含まれる更新判定メソッドによれば、代行ユーザのセッションを対象セッションとした更新判定処理においては「維持」が返される。この場合、図２８に示すように、代行ユーザのセッションに含まれるサーバ処理Ａインスタンスは更新されず、当該代行ユーザのセッションは維持される。
【０１８４】
なお、サーバ処理クラスＡ´に含まれる更新判定メソッドによれば、管理ユーザのセッションを対象セッションとした更新判定処理においては「更新」が返される。この場合、管理ユーザのセッションに含まれるサーバ処理Ａインスタンスは、サーバ処理クラスＡ´から生成されるサーバ処理Ａ´インスタンスに更新される。
【０１８５】
図２７及び図２８においては省略されているが、例えばセッション管理部１０３によって一般ユーザのセッションが管理されているものとすると、当該一般ユーザのセッションは破棄される。
【０１８６】
上記したように本実施形態においては、更新判定メソッドの処理結果（返り値）が更新、維持及び破棄を含み、更新判定メソッドからの返り値が破棄である場合にはセッションを破棄し、当該更新判定メソッドからの返り値が更新である場合にはセッションに含まれるサーバ処理インスタンスを更新し、当該更新判定メソッドの返り値が維持である場合にはセッションは維持される。
【０１８７】
ここで、例えば管理ユーザの代行としての役割を有する代行ユーザに関しては、例えば更新後のサーバ処理クラスは利用不可であるものの、現在実行中のサーバ処理の利用を停止する（つまり、更新前のサーバ処理インスタンスを含むセッションを破棄する）ことは好ましくないような場合がある。
【０１８８】
これに対して、本実施形態においては、上記した構成により、例えばクライアント装置２０を使用するユーザのユーザロール（ユーザ情報）が代行ユーザである場合には当該ユーザのセッションを維持することが可能となる。
【０１８９】
すなわち、本実施形態においては、更新判定メソッドの返り値を多値とすることで、サーバ処理インスタンスの更新、維持及び破棄を選択することができ、Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）の更新に対してより柔軟に対応することができる。
【０１９０】
（第３実施形態）
次に、第３実施形態について説明する。なお、本実施形態に係るサーバ装置１０の機能構成については、前述した第１実施形態と同様であるため、適宜、図４等を用いて説明する。
【０１９１】
前述した第１実施形態においてはサーバ処理クラス（更新後のサーバ処理クラス）に１つの更新判定メソッドが含まれているものとして説明したが、本実施形態は、サーバ処理クラスに複数の更新判定メソッドが含まれている点で当該第１実施形態とは異なる。
【０１９２】
まず、図２９を参照して、本実施形態におけるサーバ処理クラスに含まれる更新判定メソッドの一例について説明する。
【０１９３】
図２９は例えば更新後のサーバ処理クラス５００を示しており、当該サーバ処理クラス５００には、複数の更新判定メソッド５０１及び５０２が含まれている。
【０１９４】
図２９に示す更新判定メソッド５０１は、サーバ処理クラス５００（から生成されるサーバ処理インスタンス）は管理ユーザのみが利用可能（更新可能）であることを表している。なお、この更新判定メソッド５０１は前述した図１０に示す更新判定メソッド２０１と同様であるため、ここではその詳しい説明を省略する。
【０１９５】
一方、図２９に示す更新判定メソッド５０２は、例えばサーバ処理クラス５００のクラス名及びユーザロールを外部の認証認可装置に渡して、当該認証認可装置から認可情報を取得することを表している。なお、この認証認可装置から取得される認可情報は、前述した更新判定メソッドの処理結果と同様に、例えば更新及び破棄を含むものである。
【０１９６】
なお、図２９に示す更新判定メソッド５０１において記述されている「管理ユーザのみ」及び更新判定メソッド５０２において記述されている「外部の認証認可装置から認可情報を取得」はコメント（注釈）である。また、図２９においては省略されているが、例えばサーバ処理クラス５００には複数の更新判定メソッドの存在を示唆するアノテーションが付与されていてもよい。
【０１９７】
次に、図３０のフローチャートを参照して、本実施形態において更新判定メソッド呼び出し部１０４ｂによって実行される更新判定処理の処理手順の一例について説明する。
【０１９８】
なお、本実施形態において、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスには、複数の更新判定メソッド及び当該更新判定メソッド以外のメソッドを含む複数のメソッドが含まれているものとする。
【０１９９】
まず、前述した図９に示すステップＳ５１の処理に相当するステップＳ８１の処理が実行される。
【０２００】
ここで、本実施形態における更新判定処理においては、ステップＳ５１において取得されたメソッドの一覧に含まれるメソッドの各々についてステップＳ８２以降の処理が実行される。以下、ステップＳ８２以降の処理の対象となるメソッドを対象メソッドと称する。
【０２０１】
この場合、更新判定メソッド呼び出し部１０４ｂは、対象メソッドが更新判定メソッドであるか否かを判定する（ステップＳ８２）。なお、ステップＳ８２の処理は、前述した図９に示すステップＳ５２の処理と同様の処理である。
【０２０２】
ステップＳ８２において対象メソッドが更新判定メソッドであると判定された場合（ステップＳ８２のＹＥＳ）、更新判定メソッド呼び出し部１０４ｂは、更新判定処理の対象となるセッション（対象セッション）に含まれるユーザロールを引数として当該対象メソッド（更新判定メソッド）を呼び出す（ステップＳ８３）。
【０２０３】
ステップＳ８３の処理が実行されると、当該ステップＳ８３において呼び出された対象メソッドの処理結果（返り値）が返される。この対象メソッドの処理結果は、更新及び破棄を含む。
【０２０４】
この場合、更新判定メソッド呼び出し部１０４ｂは、対象メソッドの処理結果が更新であるか否かを判定する（ステップＳ８４）。
【０２０５】
対象メソッドの処理結果が更新であると判定された場合（ステップＳ８４のＹＥＳ）、上記したステップＳ８１において取得されたメソッドの一覧に含まれる全てのメソッドについて上記したステップＳ８２以降の処理が実行されたか否かが判定される（ステップＳ８５）。
【０２０６】
全てのメソッドについて処理が実行されていないと判定された場合（ステップＳ８５のＮＯ）、上記したステップＳ８２に戻って処理が繰り返される。この場合、ステップＳ８２以降の処理が実行されていないメソッドを対象メソッドとして処理が実行される。
【０２０７】
一方、全てのメソッドについて処理が実行されたと判定された場合（ステップＳ８５のＹＥＳ）、更新判定処理の処理結果として「更新」が返却されて更新判定処理は終了される（ステップＳ８６）。
【０２０８】
一方、ステップＳ８４において対象メソッドの処理結果が更新でない（つまり、破棄である）と判定された場合（ステップＳ８４のＮＯ）、更新判定処理の処理結果として「破棄」が返却されて更新判定処理は終了される。
【０２０９】
なお、ステップＳ８２において対象メソッドが更新判定メソッドでないと判定された場合（ステップＳ８２のＮＯ）、ステップＳ８５の処理が実行される。
【０２１０】
上記した図３０に示す更新判定処理によれば、更新後のサーバ処理クラスに含まれる更新判定メソッドの処理結果の全てが更新である場合には更新判定処理の処理結果として「更新」が返却され、当該更新判定メソッドの処理結果のうちの少なくとも１つが破棄である場合には更新判定処理の処理結果として「破棄」が返却される。
【０２１１】
なお、図３０に示す更新判定処理が終了した後は、前述した図８に示すステップＳ４３以降の処理が実行されればよい。
【０２１２】
以下、本実施形態に係るサーバ装置１０の動作について具体的に説明する。ここでは、例えば前述した図１４に示すように、Ｗｅｂサーバプログラムには全ユーザが利用可能なサーバ処理クラスＡが含まれており、セッション管理部１０３において、当該サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び一般ユーザのセッションが管理されているものとする。サーバ処理クラスＡ及び当該サーバ処理クラスＡに含まれる更新判定メソッドは、例えば前述した図１０に示すサーバ処理クラス２００及び更新判定メソッド２０１であるものとする。
【０２１３】
ここで、Ｗｅｂサーバプログラムに含まれるサーバ処理クラスＡ（更新前のサーバ処理クラス）がサーバ処理クラスＡ´（更新後のサーバ処理クラス）に更新された場合を想定する。なお、サーバ処理クラスＡ´は例えば上記した図２９に示すサーバ処理クラス５００であり、当該サーバ処理クラスＡ´に含まれる複数の更新判定メソッドは当該図２９に示す更新判定メソッド５０１及び５０２であるものとする。
【０２１４】
サーバ処理クラスＡがサーバ処理クラスＡ´に更新された場合、サーバ処理クラスＡから生成されたサーバ処理Ａインスタンスを含む管理ユーザのセッション及び代行ユーザのセッションがセッション取得部１０４ａによって取得される。
【０２１５】
上記したようにサーバ処理クラスＡ´には例えば２つの更新判定メソッドが含まれるが、例えば管理ユーザのセッションを対象セッションとして上記した更新判定処理が実行された場合における当該２つの更新判定メソッドの処理結果が両方とも更新である場合を想定する。この場合、管理ユーザのセッションを対象セッションとした更新判定処理においては「更新」が返却される。これによれば、図３１に示すように、管理ユーザのセッションに含まれるサーバ処理Ａインスタンスは、サーバ処理クラスＡ´から生成されるサーバ処理Ａ´インスタンスに更新される。
【０２１６】
一方、例えば一般ユーザのセッションを対象セッションとして上記した更新判定処理が実行された場合における２つの更新判定メソッドの処理結果のうちの一方が破棄である場合を想定する。この場合、一般ユーザのセッションを対象セッションとした更新判定処理においては「破棄」が返却される。これによれば、図３２に示すように、一般ユーザのセッションは破棄される。
【０２１７】
上記したように本実施形態においては、サーバ処理クラスに含まれる複数の更新判定メソッドの返り値（処理結果）のうちの少なくとも１つが破棄である場合にはセッションを破棄し、当該複数の更新判定メソッドの返り値のうちの全てが更新である場合にはセッションに含まれるサーバ処理インスタンスを更新する。
【０２１８】
本実施形態においては、このような構成により、複数の更新判定メソッドを用いることにより複雑な更新判定処理を行うことが可能となり、Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）の更新に対してより柔軟に対応することができる。
【０２１９】
ところで、本実施形態においては、前述した第１実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれている場合について説明したが、前述した第２実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれていても構わない。
【０２２０】
以下、図３３のフローチャートを参照して、第２実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれている場合における更新判定処理の処理手順の一例について説明する。なお、図３３に示す処理は、前述した第２実施形態において説明した更新判定メソッド呼び出し部１１１ａによって実行されるものとして説明する。
【０２２１】
まず、上記した図３０に示されるステップＳ８１〜Ｓ８３の処理に相当するステップＳ９１〜Ｓ９３の処理が実行される。
【０２２２】
ここで、ステップＳ９３の処理が実行されると当該ステップＳ９３において呼び出された対象メソッドの処理結果（返り値）が返されるが、この対象メソッドの処理結果は前述した第２実施形態において説明したように更新、破棄及び維持を含む。
【０２２３】
この場合、更新判定メソッド呼び出し部１１１ａは、対象メソッドの処理結果が破棄であるか否かを判定する（ステップＳ９４）。
【０２２４】
対象メソッドの処理結果が破棄でないと判定された場合（ステップＳ９４のＮＯ）、更新判定メソッド呼び出し部１１１ａは、当該対象メソッドの処理結果を配列に保存（格納）する（ステップＳ９５）。
【０２２５】
ステップＳ９５の処理が実行されると、ステップＳ９１において取得されたメソッドの一覧に含まれる全てのメソッドについて上記したステップＳ９２以降の処理が実行されたか否かが判定される（ステップＳ９６）。
【０２２６】
全てのメソッドについて処理が実行されていないと判定された場合（ステップＳ９６のＮＯ）、上記したステップＳ９２に戻って処理が繰り返される。この場合、ステップＳ９２以降の処理が実行されていないメソッドを対象メソッドとして処理が実行される。
【０２２７】
一方、全てのメソッドについて処理が実行されたと判定された場合（ステップＳ９６のＹＥＳ）、更新判定メソッド呼び出し部１１１ａは、配列に保存された複数の更新判定メソッドの処理結果の全てが更新であるか否かを判定する（ステップＳ９７）。
【０２２８】
複数の更新判定メソッドの処理結果の全てが更新であると判定された場合（ステップＳ９７のＹＥＳ）、更新判定処理の処理結果として「更新」が返却されて更新判定処理は終了される。
【０２２９】
一方、複数の更新判定メソッドの処理結果の全てが更新でないと判定された場合（ステップＳ９７のＮＯ）、更新判定処理の処理結果として「維持」が返却されて更新判定処理は終了される。
【０２３０】
また、上記したステップＳ９４において対象メソッドの処理結果が破棄であると判定された場合（ステップＳ９４のＹＥＳ）、更新判定処理の処理結果として「破棄」が返却されて更新判定処理は終了される。
【０２３１】
なお、図３３に示す更新判定処理が終了した後は、前述した図２３に示すステップＳ７３以降の処理が実行されればよい。
【０２３２】
上記したように前述した第２実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれている場合には、サーバ処理クラスに含まれる複数の更新判定メソッドの返り値のうちの少なくとも１つが破棄である場合にセッションを破棄し、当該複数の更新判定メソッドの返り値のうちの全てが更新である場合にセッションに含まれるサーバ処理インスタンスを更新する。また、複数の更新判定メソッドの返り値の全てが破棄でなく、かつ、当該返り値のうちの少なくとも１つが維持である場合にセッションは維持される。
【０２３３】
すなわち、上記した第２実施形態に係る構成においてサーバ処理クラスに複数の更新判定メソッドが含まれている場合においても、複数の更新判定メソッドを用いることにより複雑な更新判定処理を行うことが可能となり、Ｗｅｂサーバプログラム（Ｗｅｂアプリケーションプログラム）の更新に対してより柔軟に対応することができる。
【０２３４】
（第４実施形態）
次に、第４実施形態について説明する。なお、本実施形態に係るサーバ装置１０の機能構成等については、前述した第１実施形態と同様であるため、適宜、図４等を用いて説明する。
【０２３５】
本実施形態は、外部定義で更新判定メソッドが指定される点で、前述した第１実施形態等とは異なる。
【０２３６】
図３４は、本実施形態におけるサーバ処理クラスに含まれる更新判定メソッドの一例を示す。図３４は例えば更新後のサーバ処理クラス６００を示しており、当該サーバ処理クラス６００には、前述した図２９に示す更新判定メソッド５０１及び５０２に相当する更新判定メソッド６０１及び６０２が含まれている。なお、更新判定メソッド６０１及び６０２は、「@OnReload」の記述がない点で更新判定メソッド５０１及び５０２とは異なる。
【０２３７】
ここで、本実施形態においては、図３５に示すように、サーバ処理クラス（例えば、更新後のサーバ処理クラスＡ´）中の更新判定メソッドを指定するための外部定義（ファイル）がサーバ装置１０内に予め用意されているものとする。なお、図３６は、外部定義の一例を示す。図３６に示す外部定義はデータ記述言語であるＪＳＯＮ（JavaScript（登録商標） Object Notation）で記述されているが、他の言語で記述されていてもよい。
【０２３８】
本実施形態において、更新判定メソッド呼び出し部１０４ｂは、例えば前述した図９に示す更新判定処理を実行する場合、当該図９に示すステップＳ５３の処理の前に外部定義を読み込むことによって、当該ステップＳ５３において外部定義で指定されている更新判断メソッドを呼び出すものとする。
【０２３９】
なお、ここでは外部定義がサーバ装置１０内に予め用意されているものとして説明したが、外部定義は、図３７に示すように、例えばサーバ装置１０とは異なる外部装置内に予め用意されており、当該外部装置から読み込まれるようにしても構わない。
【０２４０】
上記したように本実施形態においては、サーバ処理クラスに含まれる更新判定メソッドを指定するための外部定義ファイルを読み込み、当該外部定義ファイルで指定される更新判定メソッドを用いて更新判定処理を実行する。
【０２４１】
本実施形態においては、このような構成により、更新判定メソッドを外部定義から指定することによってソースコードに対する依存性を低減した更新判断メソッドの指定が可能となる。
【０２４２】
なお、本実施形態においては、前述した第１実施形態に係る構成において外部定義が読み込まれる場合について説明したが、前述した第２または第３実施形態に係る構成において外部定義が読み込まれる構成としても構わない。
【０２４３】
以上述べた少なくとも１つの実施形態によれば、プログラムの更新に対して柔軟に対応することが可能なサーバ装置、方法及びプログラムを提供することができる。
【０２４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。  
【符号の説明】
【０２４５】
１０…サーバ装置、１１…ＣＰＵ、１２…システムコントローラ、１３…主メモリ、１４…ＢＩＯＳ−ＲＯＭ、１５…不揮発性メモリ、１６…通信デバイス、１７…エンベデッドコントローラ、２０…クライアント装置、１０１…クラスロード部、１０２…データ処理リクエスト受信部、１０３…セッション管理部、１０４，１１１…サーバ処理部、１０４ａ…セッション取得部、１０４ｂ，１１１ａ…更新判定メソッド呼び出し部、１０４ｃ…サーバ処理更新部、１０４ｄ…セッション破棄部。
【図１】
2020013305.tif 000003
【図２】
2020013305.tif 000004
【図３】
2020013305.tif 000005
【図４】
2020013305.tif 000006
【図５】
2020013305.tif 000007
【図６】
2020013305.tif 000008
【図７】
2020013305.tif 000009
【図８】
2020013305.tif 000010
【図９】
2020013305.tif 000011
【図１０】
2020013305.tif 000012
【図１１】
2020013305.tif 000013
【図１２】
2020013305.tif 000014
【図１３】
2020013305.tif 000015
【図１４】
2020013305.tif 000016
【図１５】
2020013305.tif 000017
【図１６】
2020013305.tif 000018
【図１７】
2020013305.tif 000019
【図１８】
2020013305.tif 000020
【図１９】
2020013305.tif 000021
【図２０】
2020013305.tif 000022
【図２１】
2020013305.tif 000023
【図２２】
2020013305.tif 000024
【図２３】
2020013305.tif 000025
【図２４】
2020013305.tif 000026
【図２５】
2020013305.tif 000027
【図２６】
2020013305.tif 000028
【図２７】
2020013305.tif 000029
【図２８】
2020013305.tif 000030
【図２９】
2020013305.tif 000031
【図３０】
2020013305.tif 000032
【図３１】
2020013305.tif 000033
【図３２】
2020013305.tif 000034
【図３３】
2020013305.tif 000035
【図３４】
2020013305.tif 000036
【図３５】
2020013305.tif 000037
【図３６】
2020013305.tif 000038
【図３７】
2020013305.tif 000039