JP2017016517A - Information processing system, information processing method, and program - Google Patents
Information processing system, information processing method, and program Download PDFInfo
- Publication number
- JP2017016517A JP2017016517A JP2015134494A JP2015134494A JP2017016517A JP 2017016517 A JP2017016517 A JP 2017016517A JP 2015134494 A JP2015134494 A JP 2015134494A JP 2015134494 A JP2015134494 A JP 2015134494A JP 2017016517 A JP2017016517 A JP 2017016517A
- Authority
- JP
- Japan
- Prior art keywords
- module
- modules
- load
- session
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、情報処理システム、情報処理方法、及び、プログラムに関し、特に、アプリケーションの更新を行う情報処理システム、情報処理方法、及び、プログラムに関する。 The present invention relates to an information processing system, an information processing method, and a program, and more particularly, to an information processing system, an information processing method, and a program for updating an application.
アプリケーションサーバで動作するアプリケーションは、24時間365日の連続稼働が求められることがある。一方で、不具合の修正や機能拡張のためのアプリケーションの更新では、一般に、アプリケーションを停止する必要がある。 An application running on an application server may be required to operate continuously for 24 hours 365 days. On the other hand, when updating an application for correcting a defect or expanding a function, it is generally necessary to stop the application.
更新時にアプリケーションの動作を継続させる方法の一例として、変更前のアプリケーションと変更後のアプリケーションを同時に稼働させ、リクエストの振り分け先を変更前から変更後のアプリケーションに切り替える方法がある。ここで、複数のリクエストにより構成されるセッションに対して処理が行われる場合は、セッション内での処理の一貫性を保つため、セッション毎にアプリケーションを切り替える必要がある。すなわち、変更前から処理していたセッションのリクエストは、変更前のアプリケーションに振り分けられ、変更後の新規のセッションのリクエストは、変更後のアプリケーションに振り分けられる。 As an example of a method of continuing the operation of the application at the time of update, there is a method of operating the application before the change and the application after the change at the same time and switching the request distribution destination from the pre-change to the application after the change. Here, when processing is performed on a session configured by a plurality of requests, it is necessary to switch applications for each session in order to maintain consistency of processing within the session. That is, a request for a session that has been processed before the change is distributed to the application before the change, and a request for a new session after the change is distributed to the application after the change.
図29は、一般的な、アプリケーションの動作継続方法の例を示す図である。図29の例では、セッションのID(Identifier)とセッションを処理するアプリケーションのバージョンとの対応表(セッションテーブル)をもとに、リクエストが振り分けられる。 FIG. 29 is a diagram illustrating an example of a general application operation continuation method. In the example of FIG. 29, requests are distributed based on a correspondence table (session table) between the session ID (Identifier) and the version of the application that processes the session.
さらに、アプリケーションは、複数のモジュールにより構成される場合がある。例えば、Java(登録商標)EE(Enterprise Edition)アプリケーションサーバに配備されるアプリケーションは、Webモジュール、EJB(Enterprise JavaBeans)モジュール等により構成される。この場合、Webモジュールが、クライアント端末のWebブラウザからのリクエストを受け付け、EJBジュールが、バックエンドの処理を実行する。EJBモジュールは、さらに、他のEJBモジュールを呼び出すこともある。このように複数のモジュールにより構成されるアプリケーションでは、モジュール呼び出し用のインタフェースに変更がなければ、変更されたモジュールを呼び出すモジュールを更新することなく、変更されたモジュールを更新できる。 Furthermore, the application may be configured by a plurality of modules. For example, an application deployed in a Java (registered trademark) EE (Enterprise Edition) application server includes a Web module, an EJB (Enterprise JavaBeans) module, and the like. In this case, the Web module accepts a request from the Web browser of the client terminal, and the EJB module executes back-end processing. An EJB module may also call other EJB modules. In this way, in an application composed of a plurality of modules, if there is no change in the module call interface, the changed module can be updated without updating the module that calls the changed module.
図30〜図33は、一般的な、複数のモジュールにより構成されるアプリケーションの動作継続方法の例を示す図である。 30 to 33 are diagrams illustrating an example of a general operation continuation method of an application configured by a plurality of modules.
ここで、リクエストを直接受け付けるモジュールを更新する場合、図30に示すように、上述の図29の方法と同様の方法で、アプリケーションを停止せず、処理の一貫性を保ったまま更新を行うことができる。しかしながら、他のモジュールから呼び出されるモジュールを更新する場合、図31に示すように、リクエストを直接受け付けるモジュールは更新されないため、更新されたモジュールの変更前のモジュールが呼び出され、モジュールの更新が反映されない。また、図32のように、モジュールの更新を反映するために常に最新のモジュールを呼び出す場合、モジュール更新前に開始されていたセッションに対しても更新後のモジュールが適用されるため、処理の一貫性は保たれない。 Here, when updating a module that directly accepts a request, as shown in FIG. 30, update is performed while maintaining the consistency of processing without stopping the application in the same manner as the method of FIG. 29 described above. Can do. However, when a module called from another module is updated, as shown in FIG. 31, the module that directly accepts the request is not updated, so the module before the update of the updated module is called and the module update is not reflected. . Also, as shown in FIG. 32, when the latest module is always called to reflect the module update, the updated module is applied to the session that was started before the module update. Sex is not kept.
この問題を解決する方法として、図33のように、セッションIDとモジュールのバージョンとの対応表をモジュール毎に用意し、モジュール間でセッションIDを引き渡しながら、呼び出されるモジュールの適切なバージョンを選択する方法がある。この場合、セッションを使用しないモジュールであっても、バージョン選択のために対応表を持つ必要がある。また、モジュール間の呼び出しで、毎回、モジュールのバージョン選択が行われるため、アプリケーションの処理負荷が大きくなる。 As a method for solving this problem, as shown in FIG. 33, a correspondence table between session IDs and module versions is prepared for each module, and an appropriate version of a called module is selected while passing the session ID between modules. There is a way. In this case, even a module that does not use a session needs to have a correspondence table for version selection. Further, since the module version is selected every time the module is called, the processing load on the application increases.
なお、特許文献1には、上述の図33と同様に、複数のアプリケーションプログラム(上述のモジュールに相当)を含むシステムにおいて、一部のアプリケーションプログラムが更新された場合に、新旧の両方のファイルによる動作を行う技術が開示されている。この技術では、タスクが起動される度に、タスクが保持する情報をもとに、タスクを新ファイル、または、旧ファイルのどちらに従って動作させるかが選択される。
Note that in
上述のように、複数モジュールより構成されるアプリケーションの一部モジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま行うためには、モジュール毎にバージョン選択を行う必要があり、アプリケーションの処理負荷が大きくなる。 As described above, in order to update a part of an application composed of multiple modules without stopping the application and maintaining processing consistency, it is necessary to select a version for each module. Application processing load increases.
本発明の目的は、上述した課題を解決した、情報処理システム、情報処理方法、プログラムを提供することである。すなわち、本発明の目的は、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できる情報処理システム、情報処理方法、プログラムを提供することである。 The objective of this invention is providing the information processing system, the information processing method, and program which solved the subject mentioned above. That is, an object of the present invention is to provide an information processing system and an information processing system that can update a part of an application composed of a plurality of modules at a low load without stopping the application and maintaining processing consistency. It is to provide a method and a program.
本発明の情報処理システムは、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付ける、モジュール受付手段と、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、モジュール生成手段と、を備える。 The information processing system of the present invention receives a module receiving unit that receives an update of an execution file of each of a plurality of modules constituting an application, and an execution file of a first module among the plurality of modules is updated. A new load module using the updated execution file is generated for the first module, and a new load module of the first module is called for the second module that calls the first module. Module generating means for generating a new load module.
本発明の情報処理方法は、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する。 The information processing method of the present invention receives an update of each executable file of a plurality of modules constituting an application, and when the executable file of the first module among the plurality of modules is updated, the first information For a module, a new load module that uses the updated execution file is generated, and a new load module that calls a new load module of the first module is created for a second module that calls the first module. Generate.
本発明のプログラムは、コンピュータに、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、処理を実行させる。 The program of the present invention receives an update of an execution file of each of a plurality of modules constituting an application in a computer, and when the execution file of the first module among the plurality of modules is updated, the first For the second module, a new load module using the updated execution file is generated, and for the second module that calls the first module, a new load module that calls the new load module of the first module To generate the process.
本発明の効果は、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できることである。 An effect of the present invention is that an update of a part of an application constituted by a plurality of modules can be realized with a low load while maintaining the consistency of processing without stopping the application.
はじめに、本発明の実施の形態の構成を説明する。図2は、本発明の実施の形態における、アプリケーションの実行環境の構成を示すブロック図である。図2を参照すると、実行環境は、アプリケーションサーバ100、管理端末200、及び、クライアント端末300を含む。管理端末200、及び、クライアント端末300は、ネットワーク等により、アプリケーションサーバ100と接続される。
First, the configuration of the embodiment of the present invention will be described. FIG. 2 is a block diagram showing the configuration of the application execution environment in the embodiment of the present invention. Referring to FIG. 2, the execution environment includes an application server 100, a
管理端末200は、アプリケーションサーバ100に対して、アプリケーションを構成する複数のプログラムモジュール(以下、単に、モジュールと記載する)の実行ファイルを送信し、アプリケーションの配備を指示する。
The
クライアント端末300は、アプリケーションサーバ100に、アプリケーションの処理に係るリクエストを送信する。
The
アプリケーションサーバ100は、クライアント端末300からリクエストを受信し、アプリケーションの処理を実行する。アプリケーションサーバ100は、本発明の情報処理システムの一実施形態である。
The application server 100 receives a request from the
アプリケーションサーバ100は、モジュール受付部110、モジュール生成部120、モジュール実行部130、及び、リクエスト振り分け部140を含む。アプリケーションサーバ100は、さらに、モジュール格納部150、バージョン情報格納部160、呼び出し関係格納部170、及び、セッション情報格納部180を含む。
The application server 100 includes a
モジュール受付部110は、管理端末200から、アプリケーションを構成する複数のモジュールの各々について、更新された実行ファイルを受信する。
The
モジュール格納部150は、実行ファイルテーブル151、及び、実行ファイルの実体を格納する。実行ファイルテーブル151は、アプリケーションを構成する複数のモジュールの各々の実行ファイルを示す。
The
図11、図17、及び、図23は、本発明の実施の形態における、実行ファイルテーブル151の例を示す図である。実行ファイルテーブル151では、複数のモジュールの各々のモジュール名に、当該モジュールの実行ファイルのバージョン(ファイルバージョン)、及び、ファイル名が関連づけられている。 11, FIG. 17, and FIG. 23 are diagrams showing examples of the execution file table 151 in the embodiment of the present invention. In the execution file table 151, each module name of a plurality of modules is associated with a version (file version) of the execution file of the module and a file name.
モジュール生成部120は、複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュール400を生成し、モジュール実行部130にロードする。さらに、モジュール生成部120は、当該第1のモジュールに依存する第2のモジュールについて、当該第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成し、モジュール実行部130にロードする。
When the execution file of the first module among a plurality of modules is updated, the
図9は、本発明の実施の形態における、モジュール実行部130にロードされるロードモジュール400の構成を示す図である。ロードモジュール400は、処理実行部401、及び、呼び出し部402を含む。
FIG. 9 is a diagram showing a configuration of the
処理実行部401は、モジュールの実行ファイルに従って、モジュールに係る処理を実行する。呼び出し部402は、モジュールが依存する他のモジュールのロードモジュール400の処理を呼び出す。モジュールが、複数の他のモジュールに依存する場合、それぞれの他のモジュールに対して、呼び出し部402が存在する。
The
モジュール実行部130は、モジュール生成部120によりロードされたロードモジュール400を実行する。
The
バージョン情報格納部160は、バージョンテーブル161、及び、ロードバージョンテーブル162を格納する。バージョンテーブル161は、各モジュールの最新のロードモジュール400を示す。ロードバージョンテーブル162は、モジュール実行部130にロードされた各ロードモジュール400を示す。
The version
図12、図18、及び、図24は、本発明の実施の形態における、バージョンテーブル161の例を示す図である。バージョンテーブル161では、複数のモジュールの各々のモジュール名に、当該モジュールの最新のロードモジュール400のバージョン(モジュールバージョン)が関連づけられている。 FIGS. 12, 18 and 24 are diagrams showing examples of the version table 161 in the embodiment of the present invention. In the version table 161, the latest version of the load module 400 (module version) of the module is associated with each module name of the plurality of modules.
図13、図19、及び、図25は、本発明の実施の形態における、ロードバージョンテーブル162の例を示す図である。ロードバージョンテーブル162では、複数のモジュールの各々のモジュール名に、当該モジュールのロードモジュール400のモジュールバージョン、及び、実行ファイルのファイルバージョンが関連づけられている。
13, 19, and 25 are diagrams showing examples of the load version table 162 in the embodiment of the present invention. In the load version table 162, each module name of the plurality of modules is associated with the module version of the
呼び出し関係格納部170は、呼び出し関係テーブル171を格納する。呼び出し関係テーブル171は、モジュール間の呼び出し関係を示す。
The call
図14、図20、及び、図26は、本発明の実施の形態における、呼び出し関係テーブル171の例を示す図である。呼び出し関係テーブル171では、呼び出し先モジュールのモジュール名とモジュールバージョンの組に、呼び出し元モジュールのモジュール名とモジュールバージョンの組が関連づけられている。 14, FIG. 20, and FIG. 26 are diagrams showing examples of the call relation table 171 in the embodiment of the present invention. In the call relationship table 171, the module name and module version pair of the call source module is associated with the module name and module version pair of the callee module.
セッション情報格納部180は、セッションテーブル181を格納する。セッションテーブル181は、各セッションの振り分け先のロードモジュール400を示す。
The session
図15、図21、及び、図27は、本発明の実施の形態における、セッションテーブル181の例を示す図である。セッションテーブル181では、モジュールのモジュール名に、当該モジュールに対するセッションのセッションID(Identifier)と振り分け先のロードモジュール400のモジュールバージョンとが関連づけられている。
15, FIG. 21, and FIG. 27 are diagrams showing examples of the session table 181 in the embodiment of the present invention. In the session table 181, the session ID (Identifier) of the session for the module and the module version of the
リクエスト振り分け部140は、セッションテーブル181をもとに、クライアント端末300から受信したリクエストを、適切なロードモジュール400に振り分ける。
The
なお、アプリケーションサーバ100は、CPU(Central Processing Unit)とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。 Note that the application server 100 may be a computer that includes a CPU (Central Processing Unit) and a storage medium that stores a program, and that operates by control based on the program.
図3は、本発明の実施の形態における、コンピュータにより実現されたアプリケーションサーバ100の構成を示すブロック図である。 FIG. 3 is a block diagram showing a configuration of the application server 100 realized by a computer in the embodiment of the present invention.
この場合、アプリケーションサーバ100は、CPU101、ハードディスクやメモリ等の記憶デバイス102(記憶媒体)、他の装置等と通信を行う通信デバイス103、キーボード、ディスプレイ等の入出力デバイス104を含む。CPU101は、モジュール受付部110、モジュール生成部120、モジュール実行部130、及び、リクエスト振り分け部140を実現するためのコンピュータプログラムを実行する。記憶デバイス102は、モジュール格納部150、バージョン情報格納部160、呼び出し関係格納部170、及び、セッション情報格納部180のデータを記憶する。通信デバイス103は、管理端末200からモジュールを受信する。また、通信デバイス103は、アプリケーションの処理に係るリクエストのクライアント端末300からの受信、レスポンスのクライアント端末300への送信を行う。入出力デバイス104は、アプリケーションサーバ100に係る各種設定等の、ユーザ等からの入力、及び、ユーザ等への出力を行う。
In this case, the application server 100 includes a
また、アプリケーションサーバ100の各構成要素は、有線、または、無線により接続された、異なるコンピュータに分散して配置されていてもよい。 In addition, each component of the application server 100 may be distributed and arranged in different computers connected by wire or wirelessly.
また、アプリケーションサーバ100の各構成要素は、独立した論理回路でもよい。 Each component of the application server 100 may be an independent logic circuit.
次に、本発明の実施の形態の動作を説明する。 Next, the operation of the embodiment of the present invention will be described.
<モジュール配備処理>
はじめに、モジュール配備処理について説明する。モジュール配備処理は、管理端末200が、アプリケーションサーバ100に対して、アプリケーションを構成するモジュールの実行ファイルを送信したときに実行される。
<Module deployment processing>
First, module deployment processing will be described. The module deployment process is executed when the
図4は、本発明の実施の形態における、モジュール配備処理を示すフローチャートである。 FIG. 4 is a flowchart showing module deployment processing in the embodiment of the present invention.
管理端末200は、アプリケーションを構成するモジュールのモジュール名、当該モジュールの新たな実行ファイルのファイル名、及び、当該実行ファイルの実体をアプリケーションサーバ100に送信する(ステップS101)。
The
アプリケーションサーバ100のモジュール受付部110は、モジュール名M、ファイル名F、及び、実行ファイルを管理端末200から受信する(ステップS102)。
The
モジュール受付部110は、モジュールMのロードモジュール400の新たなモジュールバージョンVを採番する(ステップS103)。
The
ここで、モジュール受付部110は、ロードバージョンテーブル162に存在するモジュールMに対するモジュールバージョンの最大値に1を加算した値を、新たなモジュールバージョンVに設定する。なお、モジュールMが新たなモジュールの場合、モジュールMはロードバージョンテーブル162に存在しないため、モジュール受付部110は、モジュールMに対する新たなモジュールバージョンVに「1」を設定する。
Here, the
採番したモジュールバージョンVは、モジュールMの新たな実行ファイルFのファイルバージョンとしても用いられる。 The numbered module version V is also used as the file version of the new execution file F of the module M.
モジュール受付部110は、実行ファイルテーブル151に、受信したモジュール名M、ファイル名F、ファイルバージョンVを登録する。また、モジュール受付部110は、モジュール格納部150に、受信した実行ファイルFの実体を保存する(ステップS104)。
The
モジュール受付部110は、モジュール生成部120に、モジュール名M、モジュールバージョンV、ファイルバージョンVを指定して、モジュール生成処理を実行させる(ステップS105)。
The
これにより、モジュールMについて、更新されたファイルバージョンVの実行ファイルを用いた、新たなロードモジュール400が生成、ロードされる。
As a result, a
図5、図6は、本発明の実施の形態における、モジュール生成処理(ステップS105)の詳細を示すフローチャートである。 5 and 6 are flowcharts showing details of the module generation processing (step S105) in the embodiment of the present invention.
モジュール生成部120は、実行ファイルテーブル151を参照して、モジュール格納部150から、モジュール名M、ファイルバージョンFVに対応する、実行ファイルFの実体を取得する(ステップS201)。
The
モジュール生成部120は、実行ファイルFを解析し、実行ファイルFの呼び出し先モジュールSを特定する(ステップS202)。ここで、例えばモジュールMがJava EEのアプリケーションモジュールの場合、当該モジュールに係るXML(Extensible Markup Language)ファイルやアノテーションの定義情報を解析して、呼び出し先モジュールSを特定する。また、モジュール生成部120は、予め、ユーザ等により定義された、モジュール間の呼び出し関係を参照して、呼び出し先モジュールSを特定してもよい。
The
ステップS202で、呼び出し先モジュールSが無い場合(ステップS203/N)、モジュール生成部120は、実行ファイルFを用いて処理実行部401を生成し、ロードモジュール400に設定する。モジュール生成部120は、生成したロードモジュール400を、モジュールバージョンVのロードモジュール400として、モジュール実行部130にロードする(ステップS210)。
If the callee module S does not exist in step S202 (step S203 / N), the
一方、ステップS202で、呼び出し先モジュールSがある場合(ステップS203/Y)、モジュール生成部120は、特定した呼び出し先モジュールSの1つを選択する(ステップS204)。
On the other hand, when there is a call destination module S in step S202 (step S203 / Y), the
モジュール生成部120は、バージョンテーブル161から、選択した呼び出し先モジュールSに対する最新モジュールバージョンSVを取得する(ステップS205)。
The
モジュール生成部120は、モジュールSのバージョンSVのロードモジュール400を呼び出すように、呼び出し部402を生成する(ステップS206)。モジュール生成部120は、呼び出し関係テーブル171に、呼び出し先モジュールSとモジュールバージョンSVの組、及び、呼び出し元モジュールMとモジュールバージョンVの組を対応づけて登録する(ステップS207)。
The
モジュール生成部120は、特定した呼び出し先モジュールSの全てについて、ステップS204からの処理を繰り返す(ステップS208)。
The
モジュール生成部120は、実行ファイルFを用いて処理実行部401を生成し、生成した呼び出し部402とともに、ロードモジュール400に設定する。モジュール生成部120は、生成したロードモジュール400を、モジュールバージョンVのロードモジュール400として、モジュール実行部130にロードする(ステップS209)。
The
モジュール生成部120は、ロードバージョンテーブル162に、モジュール名M、モジュールバージョンV、及び、ファイルバージョンFVを登録する(ステップS211)。
The
次に、モジュール生成部120は、バージョンテーブル161から、モジュールMに対するこれまでの最新モジュールバージョンPVを取得する(ステップS212)。
Next, the
最新モジュールバージョンPVが無い場合(新たなモジュールの場合)(ステップS213/N)、モジュール生成部120は、バージョンテーブル161に、モジュール名M、及び、最新モジュールバージョンVを登録する(ステップS214)。そして、モジュール生成部120は、モジュール生成処理を終了する。
When there is no latest module version PV (in the case of a new module) (step S213 / N), the
一方、最新モジュールバージョンPVがある場合(ファイル更新の場合)(ステップS213/Y)、モジュール生成部120は、バージョンテーブル161のモジュールMに対する最新モジュールバージョンをVで更新する(ステップS215)。
On the other hand, when there is the latest module version PV (file update) (step S213 / Y), the
モジュール生成部120は、呼び出し関係テーブル171を参照し、モジュールMのモジュールバージョンPVのロードモジュール400を呼び出す他ロードモジュール400のモジュール名TとモジュールバージョンTVの組を特定する(ステップS216)。
The
ステップS216で、他のロードモジュール400が存在しない場合(ステップS217/N)、モジュール生成部120は、モジュール生成処理を終了する。
If there is no
ステップS216で、他のロードモジュール400が存在する場合(ステップS217/Y)、モジュール生成部120は、特定したモジュール名TとモジュールバージョンTVの組の1つを選択する(ステップS218)。
In step S216, when another
モジュール生成部120は、モジュールTのロードモジュール400の新たなモジュールバージョンNVを採番する(ステップS219)。
The
ここで、モジュール生成部120は、ロードバージョンテーブル162に存在するモジュールTのモジュールバージョンの最大値に1を加算した値を、モジュールバージョンNVに設定する。
Here, the
モジュール生成部120は、ロードバージョンテーブル162から、モジュールTのモジュールバージョンTVに対するファイルバージョンTFVを取得する(ステップS220)。
The
モジュール生成部120は、モジュール名T、新たなモジュールバージョンNV、ファイルバージョンTFVに対して、モジュール生成処理(ステップS201〜S222)を、再帰的に実行する(ステップS221)。
The
モジュール生成部120は、ステップS216で特定した他のモジュール名TとモジュールバージョンTVの全ての組について、ステップS218からの処理を繰り返す(ステップS222)。
The
これにより、モジュールMを呼び出すモジュールTについて、最新のファイルバージョンTFVの実行ファイルを用い、モジュールMの最新のロードモジュール400を呼び出すような、新たなロードモジュール400が生成、ロードされる。
As a result, a
同様に、モジュールTを呼び出すモジュールについても、最新のファイルバージョンの実行ファイルを用い、モジュールTの最新のロードモジュール400を呼び出すような、新たなロードモジュール400が生成、ロードされる。
Similarly, for the module that calls the module T, a
<リクエスト処理>
次に、リクエスト処理について説明する。リクエスト処理は、クライアント端末300が、アプリケーションサーバ100に対して、アプリケーションの処理に係るリクエストを送信したときに実行される。
<Request processing>
Next, request processing will be described. The request processing is executed when the
図7は、本発明の実施の形態における、リクエスト処理を示すフローチャートである。 FIG. 7 is a flowchart showing request processing in the embodiment of the present invention.
クライアント端末300は、アプリケーションサーバ100に、モジュールMに対するリクエストを送信する(ステップS301)。
The
アプリケーションサーバ100のリクエスト振り分け部140は、クライアント端末300から、モジュールMに対するリクエストを受信する(ステップS302)。
The
リクエスト振り分け部140は、リクエストからセッションID SIDを取得する(ステップS303)。
The
リクエストにセッションIDが含まれていない場合(ステップS304/N)、リクエスト振り分け部140は、新たなセッションID SIDを採番し、リクエストに設定する(ステップS305)。リクエスト振り分け部140は、バージョンテーブル161から、モジュールMの最新のモジュールバージョンVを取得する(ステップS306)。リクエスト振り分け部140は、セッションテーブル181に、セッションID SID、モジュール名M、モジュールバージョンVを登録する(ステップS307)。
If the session ID is not included in the request (step S304 / N), the
リクエストにセッションIDが含まれていた場合(ステップS304/Y)、リクエスト振り分け部140は、セッションテーブル181から、セッションID SID、モジュール名Mに対応する、モジュールバージョンVを取得する(ステップS308)。
When the session ID is included in the request (step S304 / Y), the
リクエスト振り分け部140は、モジュールMのモジュールバージョンVのロードモジュール400にリクエストを転送する(ステップS309)。モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400の処理を実行する(ステップS310)。
The
モジュール実行部130は、モジュールMのロードモジュール400の処理の結果をリプライとして、クライアント端末300に送信する(ステップS311)。ここで、リプライには、リクエストに設定されていた、セッションIDが含まれる。
The
クライアント端末300は、アプリケーションサーバ100からリプライを受信する(ステップS312)。
The
図8は、本発明の実施の形態における、モジュール実行処理(ステップS310)の詳細を示すフローチャートである。 FIG. 8 is a flowchart showing details of the module execution process (step S310) in the embodiment of the present invention.
モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400に対するリクエストを受信する(ステップS401)。
The
モジュール実行部130は、モジュールMのモジュールバージョンVのロードモジュール400により、モジュールMの処理を実行する(ステップS402)。
The
ここで、ロードモジュール400の処理実行部401が、モジュールMの処理を実行する。また、モジュールMが他のモジュールTを呼び出す場合、ロードモジュール400の呼び出し部402は、呼び出し先のモジュールTのモジュールバージョンTVのロードモジュール400を呼び出す。これにより、モジュール実行処理(ステップS401、S402)は、再帰的に実行される。
Here, the
なお、上述のリクエスト処理では、リクエストにセッションIDが含まれていない場合に、リクエスト振り分け部140が新たなセッションIDを採番し、リクエストに付与した。しかしながら、これに限らず、クライアント端末300がセッションIDの採番を行ってもよい。この場合、リクエスト振り分け部140は、セッションテーブル181に登録されていないセッションIDを含む、新たなセッションのリクエストを受信した場合、上述のステップS306、S307の処理を行う。また、リクエスト振り分け部140は、セッションテーブル181に登録されているセッションIDを含むリクエストを受信した場合、上述のステップS308の処理を行う。
In the request processing described above, when the session ID is not included in the request, the
<具体例>
次に、本発明の実施の形態の動作の具体例を説明する。
<Specific example>
Next, a specific example of the operation of the embodiment of the present invention will be described.
図10は、本発明の実施の形態における、モジュール間の呼び出し関係の例を示す図である。ここでは、図10に示すように、アプリケーションが4つのモジュールA、B、C、及び、Dにより構成されていると仮定する。また、図10に示すように、クライアント端末300がモジュールAを呼び出し、モジュールAがモジュールBを呼び出し、モジュールBがモジュールCを呼び出し、モジュールCがモジュールDを呼び出すと仮定する。
FIG. 10 is a diagram illustrating an example of a calling relationship between modules in the embodiment of the present invention. Here, it is assumed that the application includes four modules A, B, C, and D as shown in FIG. Further, as shown in FIG. 10, it is assumed that the
また、各モジュールの実行ファイルとして、モジュール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」存在すると仮定する。ここで、モジュール名に付与されている「’」は、実行ファイルが変更されたモジュールを示す。 Further, it is assumed that module A: “A. war”, module B: “B. jar”, module C: “C. jar”, and module D: “D. jar” exist as execution files of each module. Furthermore, as an execution file updated (changed) for each module, module A ′: “A-modified.war”, module C ′: “C-modified.jar”, module C ″: “C-modified-2” .Jar "exists. Here, “′” given to the module name indicates a module whose execution file has been changed.
はじめに、ロードモジュール400が1つもロードされていない状態で、管理端末200からモジュールD、C、B、Aの実行ファイル「D.jar」、「C.jar」、「B.jar」、「A.war」を順番に受信し、アプリケーションが配備されたと仮定する。
First, in the state where no
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図11、図12、図13、及び、図14のように設定される。 In this case, the execution file table 151, the version table 161, the load version table 162, and the call relationship table 171 are respectively as shown in FIGS. 11, 12, 13, and 14 by the module deployment process described above. Is set.
図16、図22、及び、図28は、本発明の実施の形態における、ロードモジュール400間の呼び出し関係の例を示す図である。ロードモジュール400に付与された「a(b,c)」は、モジュールa、モジュールバージョンbのロードモジュール400を示し、当該ロードモジュール400が、ファイルバージョンcの実行ファイルを用いていることを示す。
16, FIG. 22, and FIG. 28 are diagrams showing an example of a calling relationship between the
この場合、ロードモジュール400間の呼び出し関係は、図16のようになる。
In this case, the calling relationship between the
ここで、モジュールAに対する、新たなセッション(セッションID「101」)のリクエストを受信したと仮定する。 Here, it is assumed that a request for a new session (session ID “101”) for module A is received.
この場合、上述のリクエスト処理により、セッションテーブル181は、図15のように設定される。そして、セッションID「101」のリクエストに対して、図16における、ロードモジュール400「A(1,1)」、「B(1,1)」、「C(1,1)」、及び、「D(1,1)」が実行される。
In this case, the session table 181 is set as shown in FIG. 15 by the request processing described above. For the request with the session ID “101”, the
次に、管理端末200からモジュールC’の実行ファイル「C−modified.jar」を受信したと仮定する。
Next, it is assumed that the execution file “C-modified.jar” of the module C ′ is received from the
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図17、図18、図19、及び、図20のように更新される。また、ロードモジュール400間の呼び出し関係は、図22のようになる。
In this case, the execution file table 151, the version table 161, the load version table 162, and the call relation table 171 are respectively as shown in FIGS. 17, 18, 19, and 20 by the module deployment process described above. Updated. The calling relationship between the
ここで、モジュールCの更新後に、モジュールAに対する、新たなセッション(セッションID「102」)のリクエストを受信したと仮定する。 Here, it is assumed that a request for a new session (session ID “102”) for module A is received after module C is updated.
この場合、上述のリクエスト処理により、セッションテーブル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)」が実行される。
In this case, the session table 181 is set as shown in FIG. 21 by the request processing described above. In response to the request with the session ID “102”, the
さらに、管理端末200からモジュールA’の実行ファイル「A−modified.war」を受信し、モジュールC’’の実行ファイル「C−modified−2.jar」を受信したと仮定する。
Further, it is assumed that the execution file “A-modified.war” of the module A ′ is received from the
この場合、上述のモジュール配備処理により、実行ファイルテーブル151、バージョンテーブル161、ロードバージョンテーブル162、及び、呼び出し関係テーブル171は、それぞれ、図23、図24、図25、及び、図26のように更新される。また、ロードモジュール400間の呼び出し関係は、図28のようになる。
In this case, the execution file table 151, the version table 161, the load version table 162, and the call relation table 171 are respectively as shown in FIGS. 23, 24, 25, and 26 by the module deployment process described above. Updated. The calling relationship between the
ここで、モジュールAの更新後でモジュールC’更新前に、モジュールAに対する、新たなセッションのリクエスト(セッションID「103」)を受信したと仮定する。さらに、モジュールC’更新後に、モジュールAに対する、新たなセッションのリクエスト(セッションID「104」)を受信したと仮定する。 Here, it is assumed that a new session request (session ID “103”) for module A is received after module A is updated but before module C ′ is updated. Further, it is assumed that a new session request (session ID “104”) is received for module A after the module C ′ is updated.
この場合、上述のリクエスト処理により、セッションテーブル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)」が実行される。
In this case, the session table 181 is set as shown in FIG. 27 by the request processing described above. In response to the request with the session ID “104”, the
以上により、本発明の実施の形態の動作が完了する。 Thus, the operation of the embodiment of the present invention is completed.
次に、本発明の実施の形態の特徴的な構成を説明する。図1は、本発明の実施の形態の特徴的な構成を示すブロック図である。 Next, a characteristic configuration of the embodiment of the present invention will be described. FIG. 1 is a block diagram showing a characteristic configuration of an embodiment of the present invention.
図1を参照すると、アプリケーションサーバ100(情報処理システム)は、モジュール受付部110、及び、モジュール生成部120を含む。
Referring to FIG. 1, the application server 100 (information processing system) includes a
モジュール受付部110は、アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付ける。
The
モジュール生成部120は、複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュール400を生成する。さらに、モジュール生成部120は、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成する。
When the execution file of the first module among a plurality of modules is updated, the
次に、本発明の実施の形態の効果を説明する。 Next, the effect of the embodiment of the present invention will be described.
本発明の実施の形態によれば、複数モジュールにより構成されるアプリケーションの一部のモジュールの更新を、アプリケーションを停止せず、処理の一貫性を保ったまま、低負荷で実現できる。その理由は、第1のモジュールの実行ファイルが更新時に、モジュール生成部120が、第1のモジュールを呼び出す第2のモジュールについて、第1のモジュールの新たなロードモジュール400を呼び出す新たなロードモジュール400を生成するためである。
According to the embodiment of the present invention, an update of a part of an application composed of a plurality of modules can be realized with a low load while maintaining the consistency of processing without stopping the application. The reason is that when the execution file of the first module is updated, the
これにより、更新前の実行ファイルを使った、ロードモジュール400間の呼び出し関係を維持したまま、更新後の実行ファイルを使った、ロードモジュール400間の呼び出し関係が追加される。したがって、クライアント端末300からのリクエストを直接受け付けるモジュールのロードモジュール400をセッションIDに応じて選択することで、実行ファイルの更新前、及び、更新後のそれぞれで、アプリケーションの処理の一貫性が保たれる。
As a result, the calling relationship between the
また、これにより、クライアント端末300からのリクエストを直接受け付けるモジュールのロードモジュール400を決定すれば、他のモジュールのロードモジュール400が決定される。したがって、モジュール間では、ロードモジュール400のモジュールバージョンの選択を行う必要がない。例えば、セッションのIDとロードモジュール400のモジュールバージョンの対応表をモジュール毎に用意し、モジュール間でセッションIDを引き渡しながら、呼び出すロードモジュール400のモジュールバージョンを選択する必要はない。このため、モジュール間でのロードモジュール400の選択に伴う、処理の負荷の増大を抑えられる。
As a result, if the
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 While the present invention has been described with reference to the embodiments, the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
例えば、モジュール生成部120は、上述のモジュール生成処理における、実行ファイルの呼び出し先モジュールの解析(ステップS202)の結果を、解析結果格納部(図示せず)等に保存してもよい。この場合、モジュール生成部120は、解析結果が既に解析結果格納部に格納されている場合は、当該解析結果を利用する。呼び出し先モジュールのロードモジュール400が更新された場合の呼び出し元モジュールのモジュール生成処理では、実行ファイルは更新されない。したがって、解析結果格納部に格納されている解析結果を用いることで、実行ファイルの解析を省略できる。
For example, the
100 アプリケーションサーバ
101 CPU
102 記憶デバイス
103 通信デバイス
104 入出力デバイス
110 モジュール受付部
120 モジュール生成部
130 モジュール実行部
140 リクエスト振り分け部
150 モジュール格納部
160 バージョン情報格納部
170 呼び出し関係格納部
180 セッション情報格納部
151 実行ファイルテーブル
161 バージョンテーブル
162 ロードバージョンテーブル
171 呼び出し関係テーブル
181 セッションテーブル
200 管理端末
300 クライアント端末
400 ロードモジュール
401 処理実行部
402 呼び出し部
100
DESCRIPTION OF
Claims (9)
前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、モジュール生成手段と、
を備えた、情報処理システム。 Module accepting means for accepting update of each executable file of a plurality of modules constituting the application;
When the execution file of the first module among the plurality of modules is updated, a new load module using the updated execution file is generated for the first module, and the first module is generated. Module generating means for generating a new load module for calling a new load module of the first module for the second module for calling
An information processing system with
請求項1に記載の情報処理システム。 The module generation means recursively repeats generating a new load module that calls a new load module of the second module for the third module that calls the second module.
The information processing system according to claim 1.
請求項1または2に記載の情報処理システム。 Furthermore, when a request for a new session for any one of the modules is received, the session is associated with the latest load module of the module, and requests subsequent to the received request for the session are A request distribution unit that distributes to the associated load module;
The information processing system according to claim 1 or 2.
請求項1乃至3のいずれかに記載の情報処理システム。 The module generation means uses the latest execution file of the module when the execution file of any of the plurality of modules is updated or a new load module of the called module is generated. Call the latest load module of the called module, create a new load module for the module,
The information processing system according to claim 1.
請求項4に記載の情報処理システム。 The module generation means includes a processing execution unit that performs processing related to the module based on the latest execution file of the module, and a calling unit that calls the latest load module of the module that is the calling destination of the module Generate
The information processing system according to claim 4.
前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、
情報処理方法。 Accept update of each executable file of multiple modules that make up the application,
When the execution file of the first module among the plurality of modules is updated, a new load module using the updated execution file is generated for the first module, and the first module is generated. For the second module that calls, generate a new load module that calls the new load module of the first module,
Information processing method.
請求項6に記載の情報処理方法。 Further, recursively repeating generation of a new load module for calling a new load module of the second module for the third module for calling the second module,
The information processing method according to claim 6.
請求項6または7に記載の情報処理方法。 Furthermore, when a request for a new session for any one of the modules is received, the session is associated with the latest load module of the module, and requests subsequent to the received request for the session are Distribute to the associated load module,
The information processing method according to claim 6 or 7.
アプリケーションを構成する複数のモジュールの各々の実行ファイルの更新を受け付け、
前記複数のモジュールの内の第1のモジュールの実行ファイルが更新された場合に、当該第1のモジュールについて、当該更新された実行ファイルを用いた新たなロードモジュールを生成し、当該第1のモジュールを呼び出す第2のモジュールについて、当該第1のモジュールの新たなロードモジュールを呼び出す新たなロードモジュールを生成する、
処理を実行させるプログラム。 On the computer,
Accept update of each executable file of multiple modules that make up the application,
When the execution file of the first module among the plurality of modules is updated, a new load module using the updated execution file is generated for the first module, and the first module is generated. For the second module that calls, generate a new load module that calls the new load module of the first module,
A program that executes processing.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015134494A JP6540287B2 (en) | 2015-07-03 | 2015-07-03 | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING METHOD, AND PROGRAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015134494A JP6540287B2 (en) | 2015-07-03 | 2015-07-03 | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING METHOD, AND PROGRAM |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017016517A true JP2017016517A (en) | 2017-01-19 |
JP6540287B2 JP6540287B2 (en) | 2019-07-10 |
Family
ID=57830764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015134494A Active JP6540287B2 (en) | 2015-07-03 | 2015-07-03 | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING METHOD, AND PROGRAM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6540287B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019046255A (en) * | 2017-09-04 | 2019-03-22 | 日本電気株式会社 | Information processing system, information processing method, and program |
JP2021002249A (en) * | 2019-06-24 | 2021-01-07 | 株式会社リコー | Information processor and information processing method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05282134A (en) * | 1992-04-02 | 1993-10-29 | Nec Corp | Divided load module formation system |
JPH05307478A (en) * | 1992-04-30 | 1993-11-19 | Nippon Telegr & Teleph Corp <Ntt> | Constituting method for data base management system |
-
2015
- 2015-07-03 JP JP2015134494A patent/JP6540287B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05282134A (en) * | 1992-04-02 | 1993-10-29 | Nec Corp | Divided load module formation system |
JPH05307478A (en) * | 1992-04-30 | 1993-11-19 | Nippon Telegr & Teleph Corp <Ntt> | Constituting method for data base management system |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019046255A (en) * | 2017-09-04 | 2019-03-22 | 日本電気株式会社 | Information processing system, information processing method, and program |
JP2021002249A (en) * | 2019-06-24 | 2021-01-07 | 株式会社リコー | Information processor and information processing method |
JP7338264B2 (en) | 2019-06-24 | 2023-09-05 | 株式会社リコー | Information processing device and information processing method |
Also Published As
Publication number | Publication date |
---|---|
JP6540287B2 (en) | 2019-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102202078B (en) | The method and system of a kind of multiple foreign peoples roles for configuration server field | |
JP6164440B2 (en) | Application upgrade method and apparatus | |
CN108255708B (en) | Method, device, storage medium and equipment for accessing production file in test environment | |
CN104484353A (en) | Data imaging method, data imaging device and database server | |
CN109245908B (en) | Method and device for switching master cluster and slave cluster | |
CN112433788A (en) | Applet running method and device, electronic equipment and storage medium | |
WO2016058488A1 (en) | Method and device for providing sdk files | |
US11722523B2 (en) | Solution management systems and methods for addressing cybersecurity vulnerabilities | |
CN111782235B (en) | Data upgrading and inquiring method and device | |
CN113419818B (en) | Basic component deployment method, device, server and storage medium | |
JP6540287B2 (en) | INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING METHOD, AND PROGRAM | |
CN112131230B (en) | Application software as a service (SaaS) realization method, device, equipment and storage medium | |
CN110807535A (en) | Construction method and construction device of unified reservation platform and unified reservation platform system | |
CN110795328A (en) | Interface testing method and device | |
JP2009217395A (en) | Virtual server software update system, virtual server software update method, server and program for server | |
US20230134573A1 (en) | Automated generation of dependency hierarchy based on input and output requirements of information | |
CN112631804B (en) | Service call request processing method based on isolation environment and computer equipment | |
CN112558985B (en) | Sub-application deployment method and device | |
JP2016177659A (en) | Verification program, verification device and verification method | |
CN113779122B (en) | Method and device for exporting data | |
CN112559001B (en) | Method and device for updating application | |
JP2016218541A (en) | Information processing device and program | |
KR20210040333A (en) | Request processing method, apparatus, device and computer storage medium | |
CN109981320B (en) | Method and device for managing configuration information | |
CN105930431A (en) | Method, device and system for accessing database |
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 | Request for written amendment filed |
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 |