JP6540287B2 - 情報処理システム、情報処理方法、及び、プログラム - Google Patents

情報処理システム、情報処理方法、及び、プログラム Download PDF

Info

Publication number
JP6540287B2
JP6540287B2 JP2015134494A JP2015134494A JP6540287B2 JP 6540287 B2 JP6540287 B2 JP 6540287B2 JP 2015134494 A JP2015134494 A JP 2015134494A JP 2015134494 A JP2015134494 A JP 2015134494A JP 6540287 B2 JP6540287 B2 JP 6540287B2
Authority
JP
Japan
Prior art keywords
module
modules
load
session
request
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.)
Active
Application number
JP2015134494A
Other languages
English (en)
Other versions
JP2017016517A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2015134494A priority Critical patent/JP6540287B2/ja
Publication of JP2017016517A publication Critical patent/JP2017016517A/ja
Application granted granted Critical
Publication of JP6540287B2 publication Critical patent/JP6540287B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、情報処理システム、情報処理方法、及び、プログラムに関し、特に、アプリケーションの更新を行う情報処理システム、情報処理方法、及び、プログラムに関する。
アプリケーションサーバで動作するアプリケーションは、24時間365日の連続稼働が求められることがある。一方で、不具合の修正や機能拡張のためのアプリケーションの更新では、一般に、アプリケーションを停止する必要がある。
更新時にアプリケーションの動作を継続させる方法の一例として、変更前のアプリケーションと変更後のアプリケーションを同時に稼働させ、リクエストの振り分け先を変更前から変更後のアプリケーションに切り替える方法がある。ここで、複数のリクエストにより構成されるセッションに対して処理が行われる場合は、セッション内での処理の一貫性を保つため、セッション毎にアプリケーションを切り替える必要がある。すなわち、変更前から処理していたセッションのリクエストは、変更前のアプリケーションに振り分けられ、変更後の新規のセッションのリクエストは、変更後のアプリケーションに振り分けられる。
図29は、一般的な、アプリケーションの動作継続方法の例を示す図である。図29の例では、セッションのID(Identifier)とセッションを処理するアプリケーションのバージョンとの対応表(セッションテーブル)をもとに、リクエストが振り分けられる。
さらに、アプリケーションは、複数のモジュールにより構成される場合がある。例えば、Java(登録商標)EE(Enterprise Edition)アプリケーションサーバに配備されるアプリケーションは、Webモジュール、EJB(Enterprise JavaBeans)モジュール等により構成される。この場合、Webモジュールが、クライアント端末のWebブラウザからのリクエストを受け付け、EJBジュールが、バックエンドの処理を実行する。EJBモジュールは、さらに、他のEJBモジュールを呼び出すこともある。このように複数のモジュールにより構成されるアプリケーションでは、モジュール呼び出し用のインタフェースに変更がなければ、変更されたモジュールを呼び出すモジュールを更新することなく、変更されたモジュールを更新できる。
図30〜図33は、一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の例を示す図である。
ここで、リクエストを直接受け付けるモジュールを更新する場合、図30に示すように、上述の図29の方法と同様の方法で、アプリケーションを停止せず、処理の一貫性を保ったまま更新を行うことができる。しかしながら、他のモジュールから呼び出されるモジュールを更新する場合、図31に示すように、リクエストを直接受け付けるモジュールは更新されないため、更新されたモジュールの変更前のモジュールが呼び出され、モジュールの更新が反映されない。また、図32のように、モジュールの更新を反映するために常に最新のモジュールを呼び出す場合、モジュール更新前に開始されていたセッションに対しても更新後のモジュールが適用されるため、処理の一貫性は保たれない。
この問題を解決する方法として、図33のように、セッションIDとモジュールのバージョンとの対応表をモジュール毎に用意し、モジュール間でセッションIDを引き渡しながら、呼び出されるモジュールの適切なバージョンを選択する方法がある。この場合、セッションを使用しないモジュールであっても、バージョン選択のために対応表を持つ必要がある。また、モジュール間の呼び出しで、毎回、モジュールのバージョン選択が行われるため、アプリケーションの処理負荷が大きくなる。
なお、特許文献1には、上述の図33と同様に、複数のアプリケーションプログラム(上述のモジュールに相当)を含むシステムにおいて、一部のアプリケーションプログラムが更新された場合に、新旧の両方のファイルによる動作を行う技術が開示されている。この技術では、タスクが起動される度に、タスクが保持する情報をもとに、タスクを新ファイル、または、旧ファイルのどちらに従って動作させるかが選択される。
特開平7−99674号公報
上述のように、複数モジュールより構成されるアプリケーションの一部モジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま行うためには、モジュール毎にバージョン選択を行う必要があり、アプリケーションの処理負荷が大きくなる。
本発明の目的は、上述した課題を解決した、情報処理システム、情報処理方法、プログラムを提供することである。すなわち、本発明の目的は、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できる情報処理システム、情報処理方法、プログラムを提供することである。
本発明の情報処理システムは、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付ける、モジュール受付手段と、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、モジュール生成手段と、を備える。
本発明の情報処理方法は、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する。
本発明のプログラムは、コンピュータに、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、処理を実行させる。
本発明の効果は、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できることである。
本発明の実施の形態の特徴的な構成を示すブロック図である。 本発明の実施の形態における、アプリケーションの実行環境の構成を示すブロック図である。 本発明の実施の形態における、コンピュータにより実現されたアプリケーションサーバ100の構成を示すブロック図である。 本発明の実施の形態における、モジュール配備処理を示すフローチャートである。 本発明の実施の形態における、モジュール生成処理の詳細を示すフローチャートである。 本発明の実施の形態における、モジュール生成処理の詳細(図5の続き)を示すフローチャートである。 本発明の実施の形態における、リクエスト処理を示すフローチャートである。 本発明の実施の形態における、モジュール実行処理の詳細を示すフローチャートである。 本発明の実施の形態における、モジュール実行部130にロードされるロードモジュール400の構成を示す図である。 本発明の実施の形態における、モジュール間の呼び出し関係の例を示す図である。 本発明の実施の形態における、実行ファイルテーブル151の例を示す図である。 本発明の実施の形態における、バージョンテーブル161の例を示す図である。 本発明の実施の形態における、ロードバージョンテーブル162の例を示す図である。 本発明の実施の形態における、呼び出し関係テーブル171の例を示す図である。 本発明の実施の形態における、セッションテーブル181の例を示す図である。 本発明の実施の形態における、ロードモジュール400間の呼び出し関係の例を示す図である。 本発明の実施の形態における、実行ファイルテーブル151の他の例を示す図である。 本発明の実施の形態における、バージョンテーブル161の他の例を示す図である。 本発明の実施の形態における、ロードバージョンテーブル162の他の例を示す図である。 本発明の実施の形態における、呼び出し関係テーブル171の他の例を示す図である。 本発明の実施の形態における、セッションテーブル181の他の例を示す図である。 本発明の実施の形態における、ロードモジュール400間の呼び出し関係の他の例を示す図である。 本発明の実施の形態における、実行ファイルテーブル151のさらに他の例を示す図である。 本発明の実施の形態における、バージョンテーブル161のさらに他の例を示す図である。 本発明の実施の形態における、ロードバージョンテーブル162のさらに他の例を示す図である。 本発明の実施の形態における、呼び出し関係テーブル171のさらに他の例を示す図である。 本発明の実施の形態における、セッションテーブル181のさらに他の例を示す図である。 本発明の実施の形態における、ロードモジュール400間の呼び出し関係のさらに他の例を示す図である。 一般的な、アプリケーションの動作継続方法の例を示す図である。 一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の例を示す図である。 一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の他の例を示す図である。 一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の他の例を示す図である。 一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の他の例を示す図である。
はじめに、本発明の実施の形態の構成を説明する。図2は、本発明の実施の形態における、アプリケーションの実行環境の構成を示すブロック図である。図2を参照すると、実行環境は、アプリケーションサーバ100、管理端末200、及び、クライアント端末300を含む。管理端末200、及び、クライアント端末300は、ネットワーク等により、アプリケーションサーバ100と接続される。
管理端末200は、アプリケーションサーバ100に対して、アプリケーションを構成する複数のプログラムモジュール(以下、単に、モジュールと記載する)の実行ファイルを送信し、アプリケーションの配備を指示する。
クライアント端末300は、アプリケーションサーバ100に、アプリケーションの処理に係るリクエストを送信する。
アプリケーションサーバ100は、クライアント端末300からリクエストを受信し、アプリケーションの処理を実行する。アプリケーションサーバ100は、本発明の情報処理システムの一実施形態である。
アプリケーションサーバ100は、モジュール受付部110、モジュール生成部120、モジュール実行部130、及び、リクエスト振り分け部140を含む。アプリケーションサーバ100は、さらに、モジュール格納部150、バージョン情報格納部160、呼び出し関係格納部170、及び、セッション情報格納部180を含む。
モジュール受付部110は、管理端末200から、アプリケーションを構成する複数のモジュールの各々について、更新された実行ファイルを受信する。
モジュール格納部150は、実行ファイルテーブル151、及び、実行ファイルの実体を格納する。実行ファイルテーブル151は、アプリケーションを構成する複数のモジュールの各々の実行ファイルを示す。
図11、図17、及び、図23は、本発明の実施の形態における、実行ファイルテーブル151の例を示す図である。実行ファイルテーブル151では、複数のモジュールの各々のモジュール名に、当該モジュールの実行ファイルのバージョン(ファイルバージョン)、及び、ファイル名が関連づけられている。
モジュール生成部120は、複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュール400を生成し、モジュール実行部130にロードする。さらに、モジュール生成部120は、当該第1のモジュールに依存する第2のモジュールについて、当該第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成し、モジュール実行部130にロードする。
図9は、本発明の実施の形態における、モジュール実行部130にロードされるロードモジュール400の構成を示す図である。ロードモジュール400は、処理実行部401、及び、呼び出し部402を含む。
処理実行部401は、モジュールの実行ファイルに従って、モジュールに係る処理を実行する。呼び出し部402は、モジュールが依存する他のモジュールのロードモジュール400の処理を呼び出す。モジュールが、複数の他のモジュールに依存する場合、それぞれの他のモジュールに対して、呼び出し部402が存在する。
モジュール実行部130は、モジュール生成部120によりロードされたロードモジュール400を実行する。
バージョン情報格納部160は、バージョンテーブル161、及び、ロードバージョンテーブル162を格納する。バージョンテーブル161は、各モジュールの最新のロードモジュール400を示す。ロードバージョンテーブル162は、モジュール実行部130にロードされた各ロードモジュール400を示す。
図12、図18、及び、図24は、本発明の実施の形態における、バージョンテーブル161の例を示す図である。バージョンテーブル161では、複数のモジュールの各々のモジュール名に、当該モジュールの最新のロードモジュール400のバージョン(モジュールバージョン)が関連づけられている。
図13、図19、及び、図25は、本発明の実施の形態における、ロードバージョンテーブル162の例を示す図である。ロードバージョンテーブル162では、複数のモジュールの各々のモジュール名に、当該モジュールのロードモジュール400のモジュールバージョン、及び、実行ファイルのファイルバージョンが関連づけられている。
呼び出し関係格納部170は、呼び出し関係テーブル171を格納する。呼び出し関係テーブル171は、モジュール間の呼び出し関係を示す。
図14、図20、及び、図26は、本発明の実施の形態における、呼び出し関係テーブル171の例を示す図である。呼び出し関係テーブル171では、呼び出し先モジュールのモジュール名とモジュールバージョンの組に、呼び出し元モジュールのモジュール名とモジュールバージョンの組が関連づけられている。
セッション情報格納部180は、セッションテーブル181を格納する。セッションテーブル181は、各セッションの振り分け先のロードモジュール400を示す。
図15、図21、及び、図27は、本発明の実施の形態における、セッションテーブル181の例を示す図である。セッションテーブル181では、モジュールのモジュール名に、当該モジュールに対するセッションのセッションID(Identifier)と振り分け先のロードモジュール400のモジュールバージョンとが関連づけられている。
リクエスト振り分け部140は、セッションテーブル181をもとに、クライアント端末300から受信したリクエストを、適切なロードモジュール400に振り分ける。
なお、アプリケーションサーバ100は、CPU(Central Processing Unit)とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。
図3は、本発明の実施の形態における、コンピュータにより実現されたアプリケーションサーバ100の構成を示すブロック図である。
この場合、アプリケーションサーバ100は、CPU101、ハードディスクやメモリ等の記憶デバイス102(記憶媒体)、他の装置等と通信を行う通信デバイス103、キーボード、ディスプレイ等の入出力デバイス104を含む。CPU101は、モジュール受付部110、モジュール生成部120、モジュール実行部130、及び、リクエスト振り分け部140を実現するためのコンピュータプログラムを実行する。記憶デバイス102は、モジュール格納部150、バージョン情報格納部160、呼び出し関係格納部170、及び、セッション情報格納部180のデータを記憶する。通信デバイス103は、管理端末200からモジュールを受信する。また、通信デバイス103は、アプリケーションの処理に係るリクエストのクライアント端末300からの受信、レスポンスのクライアント端末300への送信を行う。入出力デバイス104は、アプリケーションサーバ100に係る各種設定等の、ユーザ等からの入力、及び、ユーザ等への出力を行う。
また、アプリケーションサーバ100の各構成要素は、有線、または、無線により接続された、異なるコンピュータに分散して配置されていてもよい。
また、アプリケーションサーバ100の各構成要素は、独立した論理回路でもよい。
次に、本発明の実施の形態の動作を説明する。
<モジュール配備処理>
はじめに、モジュール配備処理について説明する。モジュール配備処理は、管理端末200が、アプリケーションサーバ100に対して、アプリケーションを構成するモジュールの実行ファイルを送信したときに実行される。
図4は、本発明の実施の形態における、モジュール配備処理を示すフローチャートである。
管理端末200は、アプリケーションを構成するモジュールのモジュール名、当該モジュールの新たな実行ファイルのファイル名、及び、当該実行ファイルの実体をアプリケーションサーバ100に送信する(ステップS101)。
アプリケーションサーバ100のモジュール受付部110は、モジュール名M、ファイル名F、及び、実行ファイルを管理端末200から受信する(ステップS102)。
モジュール受付部110は、モジュールMのロードモジュール400の新たなモジュールバージョンVを採番する(ステップS103)。
ここで、モジュール受付部110は、ロードバージョンテーブル162に存在するモジュールMに対するモジュールバージョンの最大値に1を加算した値を、新たなモジュールバージョンVに設定する。なお、モジュールMが新たなモジュールの場合、モジュールMはロードバージョンテーブル162に存在しないため、モジュール受付部110は、モジュールMに対する新たなモジュールバージョンVに「1」を設定する。
採番したモジュールバージョンVは、モジュールMの新たな実行ファイルFのファイルバージョンとしても用いられる。
モジュール受付部110は、実行ファイルテーブル151に、受信したモジュール名M、ファイル名F、ファイルバージョンVを登録する。また、モジュール受付部110は、モジュール格納部150に、受信した実行ファイルFの実体を保存する(ステップS104)。
モジュール受付部110は、モジュール生成部120に、モジュール名M、モジュールバージョンV、ファイルバージョンVを指定して、モジュール生成処理を実行させる(ステップS105)。
これにより、モジュールMについて、更新されたファイルバージョンVの実行ファイルを用いた、新たなロードモジュール400が生成、ロードされる。
図5、図6は、本発明の実施の形態における、モジュール生成処理(ステップS105)の詳細を示すフローチャートである。
モジュール生成部120は、実行ファイルテーブル151を参照して、モジュール格納部150から、モジュール名M、ファイルバージョンFVに対応する、実行ファイルFの実体を取得する(ステップS201)。
モジュール生成部120は、実行ファイルFを解析し、実行ファイルFの呼び出し先モジュールSを特定する(ステップS202)。ここで、例えばモジュールMがJava EEのアプリケーションモジュールの場合、当該モジュールに係るXML(Extensible Markup Language)ファイルやアノテーションの定義情報を解析して、呼び出し先モジュールSを特定する。また、モジュール生成部120は、予め、ユーザ等により定義された、モジュール間の呼び出し関係を参照して、呼び出し先モジュールSを特定してもよい。
ステップS202で、呼び出し先モジュールSが無い場合(ステップS203/N)、モジュール生成部120は、実行ファイルFを用いて処理実行部401を生成し、ロードモジュール400に設定する。モジュール生成部120は、生成したロードモジュール400を、モジュールバージョンVのロードモジュール400として、モジュール実行部130にロードする(ステップS210)。
一方、ステップS202で、呼び出し先モジュールSがある場合(ステップS203/Y)、モジュール生成部120は、特定した呼び出し先モジュールSの1つを選択する(ステップS204)。
モジュール生成部120は、バージョンテーブル161から、選択した呼び出し先モジュールSに対する最新モジュールバージョンSVを取得する(ステップS205)。
モジュール生成部120は、モジュールSのバージョンSVのロードモジュール400を呼び出すように、呼び出し部402を生成する(ステップS206)。モジュール生成部120は、呼び出し関係テーブル171に、呼び出し先モジュールSとモジュールバージョンSVの組、及び、呼び出し元モジュールMとモジュールバージョンVの組を対応づけて登録する(ステップS207)。
モジュール生成部120は、特定した呼び出し先モジュールSの全てについて、ステップS204からの処理を繰り返す(ステップS208)。
モジュール生成部120は、実行ファイルFを用いて処理実行部401を生成し、生成した呼び出し部402とともに、ロードモジュール400に設定する。モジュール生成部120は、生成したロードモジュール400を、モジュールバージョンVのロードモジュール400として、モジュール実行部130にロードする(ステップS209)。
モジュール生成部120は、ロードバージョンテーブル162に、モジュール名M、モジュールバージョンV、及び、ファイルバージョンFVを登録する(ステップS211)。
次に、モジュール生成部120は、バージョンテーブル161から、モジュールMに対するこれまでの最新モジュールバージョンPVを取得する(ステップS212)。
最新モジュールバージョンPVが無い場合(新たなモジュールの場合)(ステップS213/N)、モジュール生成部120は、バージョンテーブル161に、モジュール名M、及び、最新モジュールバージョンVを登録する(ステップS214)。そして、モジュール生成部120は、モジュール生成処理を終了する。
一方、最新モジュールバージョンPVがある場合(ファイル更新の場合)(ステップS213/Y)、モジュール生成部120は、バージョンテーブル161のモジュールMに対する最新モジュールバージョンをVで更新する(ステップS215)。
モジュール生成部120は、呼び出し関係テーブル171を参照し、モジュールMのモジュールバージョンPVのロードモジュール400を呼び出す他ロードモジュール400のモジュール名TとモジュールバージョンTVの組を特定する(ステップS216)。
ステップS216で、他のロードモジュール400が存在しない場合(ステップS217/N)、モジュール生成部120は、モジュール生成処理を終了する。
ステップS216で、他のロードモジュール400が存在する場合(ステップS217/Y)、モジュール生成部120は、特定したモジュール名TとモジュールバージョンTVの組の1つを選択する(ステップS218)。
モジュール生成部120は、モジュールTのロードモジュール400の新たなモジュールバージョンNVを採番する(ステップS219)。
ここで、モジュール生成部120は、ロードバージョンテーブル162に存在するモジュールTのモジュールバージョンの最大値に1を加算した値を、モジュールバージョンNVに設定する。
モジュール生成部120は、ロードバージョンテーブル162から、モジュールTのモジュールバージョンTVに対するファイルバージョンTFVを取得する(ステップS220)。
モジュール生成部120は、モジュール名T、新たなモジュールバージョンNV、ファイルバージョンTFVに対して、モジュール生成処理(ステップS201〜S222)を、再帰的に実行する(ステップS221)。
モジュール生成部120は、ステップS216で特定した他のモジュール名TとモジュールバージョンTVの全ての組について、ステップS218からの処理を繰り返す(ステップS222)。
これにより、モジュールMを呼び出すモジュールTについて、最新のファイルバージョンTFVの実行ファイルを用い、モジュールMの最新のロードモジュール400を呼び出すような、新たなロードモジュール400が生成、ロードされる。
同様に、モジュールTを呼び出すモジュールについても、最新のファイルバージョンの実行ファイルを用い、モジュールTの最新のロードモジュール400を呼び出すような、新たなロードモジュール400が生成、ロードされる。
<リクエスト処理>
次に、リクエスト処理について説明する。リクエスト処理は、クライアント端末300が、アプリケーションサーバ100に対して、アプリケーションの処理に係るリクエストを送信したときに実行される。
図7は、本発明の実施の形態における、リクエスト処理を示すフローチャートである。
クライアント端末300は、アプリケーションサーバ100に、モジュールMに対するリクエストを送信する(ステップS301)。
アプリケーションサーバ100のリクエスト振り分け部140は、クライアント端末300から、モジュールMに対するリクエストを受信する(ステップS302)。
リクエスト振り分け部140は、リクエストからセッションID SIDを取得する(ステップS303)。
リクエストにセッションIDが含まれていない場合(ステップS304/N)、リクエスト振り分け部140は、新たなセッションID SIDを採番し、リクエストに設定する(ステップS305)。リクエスト振り分け部140は、バージョンテーブル161から、モジュールMの最新のモジュールバージョンVを取得する(ステップS306)。リクエスト振り分け部140は、セッションテーブル181に、セッションID SID、モジュール名M、モジュールバージョンVを登録する(ステップS307)。
リクエストにセッションIDが含まれていた場合(ステップS304/Y)、リクエスト振り分け部140は、セッションテーブル181から、セッションID SID、モジュール名Mに対応する、モジュールバージョンVを取得する(ステップS308)。
リクエスト振り分け部140は、モジュールMのモジュールバージョンVのロードモジュール400にリクエストを転送する(ステップS309)。モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400の処理を実行する(ステップS310)。
モジュール実行部130は、モジュールMのロードモジュール400の処理の結果をリプライとして、クライアント端末300に送信する(ステップS311)。ここで、リプライには、リクエストに設定されていた、セッションIDが含まれる。
クライアント端末300は、アプリケーションサーバ100からリプライを受信する(ステップS312)。
図8は、本発明の実施の形態における、モジュール実行処理(ステップS310)の詳細を示すフローチャートである。
モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400に対するリクエストを受信する(ステップS401)。
モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400により、モジュールMの処理を実行する(ステップS402)。
ここで、ロードモジュール400の処理実行部401が、モジュールMの処理を実行する。また、モジュールMが他のモジュールTを呼び出す場合、ロードモジュール400の呼び出し部402は、呼び出し先のモジュールTのモジュールバージョンTVのロードモジュール400を呼び出す。これにより、モジュール実行処理(ステップS401、S402)は、再帰的に実行される。
なお、上述のリクエスト処理では、リクエストにセッションIDが含まれていない場合に、リクエスト振り分け部140が新たなセッションIDを採番し、リクエストに付与した。しかしながら、これに限らず、クライアント端末300がセッションIDの採番を行ってもよい。この場合、リクエスト振り分け部140は、セッションテーブル181に登録されていないセッションIDを含む、新たなセッションのリクエストを受信した場合、上述のステップS306、S307の処理を行う。また、リクエスト振り分け部140は、セッションテーブル181に登録されているセッションIDを含むリクエストを受信した場合、上述のステップS308の処理を行う。
<具体例>
次に、本発明の実施の形態の動作の具体例を説明する。
図10は、本発明の実施の形態における、モジュール間の呼び出し関係の例を示す図である。ここでは、図10に示すように、アプリケーションが4つのモジュールA、B、C、及び、Dにより構成されていると仮定する。また、図10に示すように、クライアント端末300がモジュールAを呼び出し、モジュールAがモジュールBを呼び出し、モジュールBがモジュールCを呼び出し、モジュールCがモジュールDを呼び出すと仮定する。
また、各モジュールの実行ファイルとして、モジュールA:「A.war」、モジュールB:「B.jar」、モジュールC:「C.jar」、モジュールD:「D.jar」が存在すると仮定する。さらに、各モジュールの更新(変更)された実行ファイルとして、モジュールA’:「A−modified.war」、モジュールC’:「C−modified.jar」、モジュールC’’:「C−modified−2.jar」存在すると仮定する。ここで、モジュール名に付与されている「’」は、実行ファイルが変更されたモジュールを示す。
はじめに、ロードモジュール400が1つもロードされていない状態で、管理端末200からモジュールD、C、B、Aの実行ファイル「D.jar」、「C.jar」、「B.jar」、「A.war」を順番に受信し、アプリケーションが配備されたと仮定する。
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図11、図12、図13、及び、図14のように設定される。
図16、図22、及び、図28は、本発明の実施の形態における、ロードモジュール400間の呼び出し関係の例を示す図である。ロードモジュール400に付与された「a(b,c)」は、モジュールa、モジュールバージョンbのロードモジュール400を示し、当該ロードモジュール400が、ファイルバージョンcの実行ファイルを用いていることを示す。
この場合、ロードモジュール400間の呼び出し関係は、図16のようになる。
ここで、モジュールAに対する、新たなセッション(セッションID「101」)のリクエストを受信したと仮定する。
この場合、上述のリクエスト処理により、セッションテーブル181は、図15のように設定される。そして、セッションID「101」のリクエストに対して、図16における、ロードモジュール400「A(1,1)」、「B(1,1)」、「C(1,1)」、及び、「D(1,1)」が実行される。
次に、管理端末200からモジュールC’の実行ファイル「C−modified.jar」を受信したと仮定する。
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図17、図18、図19、及び、図20のように更新される。また、ロードモジュール400間の呼び出し関係は、図22のようになる。
ここで、モジュールCの更新後に、モジュールAに対する、新たなセッション(セッションID「102」)のリクエストを受信したと仮定する。
この場合、上述のリクエスト処理により、セッションテーブル181は、図21のように設定される。そして、セッションID「102」のリクエストに対して、図22における、ロードモジュール400「A(2,1)」、「B(2,1)」、「C’(2,2)」、及び、「D(1,1)」が実行される。また、セッションID「101」のリクエストに対しては、図22における、ロードモジュール400「A(1,1)」、「B(1,1)」、「C(1,1)」、及び、「D(1,1)」が実行される。
さらに、管理端末200からモジュールA’の実行ファイル「A−modified.war」を受信し、モジュールC’’の実行ファイル「C−modified−2.jar」を受信したと仮定する。
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図23、図24、図25、及び、図26のように更新される。また、ロードモジュール400間の呼び出し関係は、図28のようになる。
ここで、モジュールAの更新後でモジュールC’更新前に、モジュールAに対する、新たなセッションのリクエスト(セッションID「103」)を受信したと仮定する。さらに、モジュールC’更新後に、モジュールAに対する、新たなセッションのリクエスト(セッションID「104」)を受信したと仮定する。
この場合、上述のリクエスト処理により、セッションテーブル181は、図27のように設定される。そして、セッションID「104」のリクエストに対して、図28における、ロードモジュール400「A’(4,3)」、「B(3,1)」、「C’’(3,3)」、及び、「D(1,1)」が実行される。また、セッションID「103」のリクエストに対して、図28における、ロードモジュール400「A’(3,3)」、「B(2,1)」、「C’(2,2)」、及び、「D(1,1)」が実行される。
以上により、本発明の実施の形態の動作が完了する。
次に、本発明の実施の形態の特徴的な構成を説明する。図1は、本発明の実施の形態の特徴的な構成を示すブロック図である。
図1を参照すると、アプリケーションサーバ100(情報処理システム)は、モジュール受付部110、及び、モジュール生成部120を含む。
モジュール受付部110は、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付ける。
モジュール生成部120は、複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュール400を生成する。さらに、モジュール生成部120は、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成する。
次に、本発明の実施の形態の効果を説明する。
本発明の実施の形態によれば、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できる。その理由は、第1のモジュールの実行ファイルが更新時に、モジュール生成部120が、第1のモジュールを呼び出す第2のモジュールについて、第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成するためである。
これにより、更新前の実行ファイルを使った、ロードモジュール400間の呼び出し関係を維持したまま、更新後の実行ファイルを使った、ロードモジュール400間の呼び出し関係が追加される。したがって、クライアント端末300からのリクエストを直接受け付けるモジュールのロードモジュール400をセッションIDに応じて選択することで、実行ファイルの更新前、及び、更新後のそれぞれで、アプリケーションの処理の一貫性が保たれる。
また、これにより、クライアント端末300からのリクエストを直接受け付けるモジュールのロードモジュール400を決定すれば、他のモジュールのロードモジュール400が決定される。したがって、モジュール間では、ロードモジュール400のモジュールバージョンの選択を行う必要がない。例えば、セッションのIDとロードモジュール400のモジュールバージョンの対応表をモジュール毎に用意し、モジュール間でセッションIDを引き渡しながら、呼び出すロードモジュール400のモジュールバージョンを選択する必要はない。このため、モジュール間でのロードモジュール400の選択に伴う、処理の負荷の増大を抑えられる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
例えば、モジュール生成部120は、上述のモジュール生成処理における、実行ファイルの呼び出し先モジュールの解析(ステップS202)の結果を、解析結果格納部(図示せず)等に保存してもよい。この場合、モジュール生成部120は、解析結果が既に解析結果格納部に格納されている場合は、当該解析結果を利用する。呼び出し先モジュールのロードモジュール400が更新された場合の呼び出し元モジュールのモジュール生成処理では、実行ファイルは更新されない。したがって、解析結果格納部に格納されている解析結果を用いることで、実行ファイルの解析を省略できる。
100 アプリケーションサーバ
101 CPU
102 記憶デバイス
103 通信デバイス
104 入出力デバイス
110 モジュール受付部
120 モジュール生成部
130 モジュール実行部
140 リクエスト振り分け部
150 モジュール格納部
160 バージョン情報格納部
170 呼び出し関係格納部
180 セッション情報格納部
151 実行ファイルテーブル
161 バージョンテーブル
162 ロードバージョンテーブル
171 呼び出し関係テーブル
181 セッションテーブル
200 管理端末
300 クライアント端末
400 ロードモジュール
401 処理実行部
402 呼び出し部

Claims (8)

  1. アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付ける、モジュール受付手段と、
    前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、モジュール生成手段と、
    を備え
    前記モジュール生成手段は、前記第2のモジュールを呼び出す第3のモジュールについて、当該第2のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成することを再帰的に繰り返す、
    情報処理システム。
  2. さらに、前記複数のモジュールの内のいずれかのモジュールに対する新たなセッションのリクエストを受信した場合に、当該セッションと当該モジュールの最新のロードモジュールを関連づけ、当該セッションの当該受信したリクエスト以降のリクエストを、当該関連づけられたロードモジュールに振り分ける、リクエスト振り分け手段を備える、
    請求項1記載の情報処理システム。
  3. 前記モジュール生成手段は、前記複数のモジュールの内のいずれかのモジュールの実行ファイルが更新、または、呼び出し先のモジュールの新たなロードモジュールが生成された場合に、当該モジュールの最新の実行ファイルを用い、呼び出し先のモジュールの最新のロードモジュールを呼び出す、当該モジュールの新たなロードモジュールを生成する、
    請求項1または2に記載の情報処理システム。
  4. 前記モジュール生成手段は、前記モジュールの最新の実行ファイルにもとづき当該モジュールに係る処理を行う処理実行部と、当該モジュールの呼び出し先のモジュールの最新のロードモジュールを呼び出す呼び出し部と、を含む、ロードモジュールを生成する、
    請求項3に記載の情報処理システム。
  5. アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、
    前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、情報処理方法であって、
    前記第2のモジュールを呼び出す第3のモジュールについて、当該第2のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成することを再帰的に繰り返す、
    情報処理方法。
  6. さらに、前記複数のモジュールの内のいずれかのモジュールに対する新たなセッションのリクエストを受信した場合に、当該セッションと当該モジュールの最新のロードモジュールを関連づけ、当該セッションの当該受信したリクエスト以降のリクエストを、当該関連づけられたロードモジュールに振り分ける、
    請求項に記載の情報処理方法。
  7. コンピュータに、
    アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、
    前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、
    処理を実行させるプログラムであって、
    前記第2のモジュールを呼び出す第3のモジュールについて、当該第2のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成することを再帰的に繰り返す、
    処理を実行させるプログラム。
  8. さらに、前記複数のモジュールの内のいずれかのモジュールに対する新たなセッションのリクエストを受信した場合に、当該セッションと当該モジュールの最新のロードモジュールを関連づけ、当該セッションの当該受信したリクエスト以降のリクエストを、当該関連づけられたロードモジュールに振り分ける、
    処理を実行させる、請求項7に記載のプログラム。
JP2015134494A 2015-07-03 2015-07-03 情報処理システム、情報処理方法、及び、プログラム Active JP6540287B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015134494A JP6540287B2 (ja) 2015-07-03 2015-07-03 情報処理システム、情報処理方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015134494A JP6540287B2 (ja) 2015-07-03 2015-07-03 情報処理システム、情報処理方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2017016517A JP2017016517A (ja) 2017-01-19
JP6540287B2 true JP6540287B2 (ja) 2019-07-10

Family

ID=57830764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015134494A Active JP6540287B2 (ja) 2015-07-03 2015-07-03 情報処理システム、情報処理方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP6540287B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6943089B2 (ja) * 2017-09-04 2021-09-29 日本電気株式会社 情報処理システム、情報処理方法、及びプログラム
JP7338264B2 (ja) * 2019-06-24 2023-09-05 株式会社リコー 情報処理装置、及び情報処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05282134A (ja) * 1992-04-02 1993-10-29 Nec Corp 分割ロードモジュール作成方式
JPH05307478A (ja) * 1992-04-30 1993-11-19 Nippon Telegr & Teleph Corp <Ntt> データベース管理システムの構成法

Also Published As

Publication number Publication date
JP2017016517A (ja) 2017-01-19

Similar Documents

Publication Publication Date Title
CN102202078B (zh) 一种用于配置服务器场的多个异类角色的方法和系统
JP6164440B2 (ja) アプリケーションアップグレード方法および装置
US8914804B2 (en) Handling queues associated with web services of business processes
CN111666585A (zh) 子应用访问的方法、装置、电子设备以及可读存储介质
CN101853152B (zh) 一种生成用户图形界面的方法和系统
TW201712564A (zh) 用於支援線上升級的設備和方法
US11474842B2 (en) Integration application creator design
WO2016058488A1 (zh) 一种用于提供sdk文件的方法与设备
US11722523B2 (en) Solution management systems and methods for addressing cybersecurity vulnerabilities
CN108255708B (zh) 测试环境中访问生产文件的方法、装置、存储介质及设备
US20140208295A1 (en) Method and system for creating and managing a dynamic route topography for service oriented software environments
KR101907837B1 (ko) 애플리케이션 활성화 프레임워크
CN111796851B (zh) 客户端基础库更新方法、装置、电子设备和存储介质
CN114911518A (zh) 云函数应用发布管理方法、系统、设备及存储介质
JP6540287B2 (ja) 情報処理システム、情報処理方法、及び、プログラム
US20080216050A1 (en) Method and System for Accessing a Resource Implemented in a Computer Network
CN101277301B (zh) 分布式系统的接口调用方法、装置和系统
CN113419818B (zh) 基础组件部署方法、装置、服务器及存储介质
CN112131230B (zh) 应用SaaS化实现方法、装置、设备及存储介质
JP6300750B2 (ja) 検証プログラム、検証装置及び検証方法
CN113032004A (zh) 在开发环境中管理开发作业的方法、设备和程序产品
US10291743B2 (en) Configuring service endpoints in native client applications
CN112860447A (zh) 一种不同应用间的交互方法和系统
JP2016218541A (ja) 情報処理装置およびプログラム
JP2005149332A (ja) ワークフロー管理システム及びそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180615

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190423

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: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540287

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150