JP2004126863A - オブジェクト管理装置とその方法、およびプログラム - Google Patents

オブジェクト管理装置とその方法、およびプログラム Download PDF

Info

Publication number
JP2004126863A
JP2004126863A JP2002288754A JP2002288754A JP2004126863A JP 2004126863 A JP2004126863 A JP 2004126863A JP 2002288754 A JP2002288754 A JP 2002288754A JP 2002288754 A JP2002288754 A JP 2002288754A JP 2004126863 A JP2004126863 A JP 2004126863A
Authority
JP
Japan
Prior art keywords
program
new program
replacement
new
management table
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.)
Pending
Application number
JP2002288754A
Other languages
English (en)
Inventor
Hideki Shina
四七 秀貴
Shinji Tanaka
田中 慎司
Takashi Ikebe
池辺 隆
Tetsuyasu Yamada
山田 哲靖
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2002288754A priority Critical patent/JP2004126863A/ja
Publication of JP2004126863A publication Critical patent/JP2004126863A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】運用中のシステムにプログラムの追加・変更を行うことができるようにする。
【解決手段】Java(登録商標)仮想マシン110内で管理されているメソッド管理テーブル1120を、追加プログラムが配置されたアドレスに変更するクラスローダ部1130によって、装置の運用中のアプリケーションプログラムの追加・変更を可能とする。上記テーブル1120を、追加プログラムが配置される前のアドレスに変更する手段によって、追加プログラムにて障害が発生した場合に、元の状態に復帰することを可能とする。追加プログラムと既存プログラムのファイル構造を比較し、既存プログラムの構造から引かれている部分がないことをチェックするファイル比較部1230によって、両プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことをチェックすることを可能とする。
【選択図】   図1

Description

【0001】
【発明の属する技術分野】
本発明は、Java(登録商標)仮想マシンを搭載した装置におけるオブジェクト管理装置に関する。
【0002】
【従来の技術】
既存のJava(登録商標)技術(Java(登録商標)仮想マシン(例えば、非特許文献1参照)および、JPDA(Java(登録商標) Platform Debugger Architecture)におけるHot Swap機能(例えば、非特許文献2参照))では、プログラムの誤りを修正する場合や、プログラムの機能を追加する場合には、当該システムを停止させ、プログラムを入れ替え、再起動する必要があった。
【0003】
これに対して、近年、Java(登録商標)技術の進歩により、システムを停止させずに入れ替えることができるようになったが、この場合でもやはり、開発時に開発対象装置の制御を行ったり、内部情報の閲覧や変更が出来るデバッガと呼ばれる装置による制御を必要としたため、システムの運用中には使用できなかった。
【0004】
また、追加プログラムにて障害が発生した場合に、元の状態に復帰することはできなかった。
【0005】
また、追加プログラムの投入時に、追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分をチェックすることができなかった。
【0006】
【非特許文献1】
T.リンドホルム(Tim Lindholm)、F.イェリン(FrankYellin)著、村上 雅章翻訳、“Java(登録商標)仮想マシン仕様(第2版)(The Java(登録商標) Virtual Machine Specification 2/E)”、ピアソン・エデュケーション、2001年5月、p.55―132
【非特許文献2】
Mikhail Dmitriev、“Safe Class and Data Evolution in Large and Long−LivedJava(登録商標)「tm」 Applications(Sun Microsystems Technical Report Number : TR−2001−98)”、「online」、平成13年8月掲載、Sun Microsystems、「平成14年9月2日検索」、インターネット<http://reserch.sun.com/reserch/techrep/2001/smli−tr−2001−98.pdf>、p.123−159
【0007】
【発明が解決しようとする課題】
このように従来の技術では運用中のシステムに対して、プログラムの追加・変更を行う時に、プログラムを停止させることなく、入れ替えることができなかった。
【0008】
本発明の目的は、運用中のシステムにプログラムの追加・変更を行うことができるオブジェクト管理装置と、その方法、およびプログラムを提供することにある。
【0009】
【課題を解決するための手段】
本発明は、運用中のシステムにプログラムの追加・変更を行うことができ、追加プログラムにて障害が発生した場合に、元の状態に復帰することができるオブジェクト管理装置、あるいは追加プログラムの投入時に追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分を確認することができるオブジェクト管理装置、あるいは追加プログラムと既存プログラムの置換履歴や個々のプログラム情報を参照可能とするオブジェクト管理装置を提供する。
【0010】
すなわち、本発明の第一の特徴点は、装置の運用中のアプリケーションプログラムの追加・変更を可能とするオブジェクト置換装置である。
ここで、本発明の特徴とするところは、前記Java(登録商標)仮想マシンの上に搭載されているアプリケーションプログラムの追加プログラムを新たにメモリ内に配置し、管理テーブルに新たなレコードを追加・初期化し、置換制御部に置換処理開始を通知し、置換制御部にて、Java(登録商標)仮想マシン内で管理されているメソッド管理テーブルを、追加プログラムが配置されたアドレスに変更する点にある。
【0011】
本発明の第二の特徴点は、追加プログラムにて障害が発生した場合に、元の状態に復帰することを可能とするオブジェクト管理装置である。
ここで、本発明の特徴とするところは、障害発生の通知を前記Java(登録商標)仮想マシンよりうけたことを契機に、Java(登録商標)仮想マシン内で管理されているメソッド管理テーブルを、追加プログラムが配置される前のアドレスに変更する点にある。
【0012】
本発明の第三の特徴点は、追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことをチェックできるオブジェクト比較装置である。ここで、本発明の特徴とするところは、追加プログラムと既存プログラムのファイル構造を比較し、既存プログラムの構造から引かれている部分がないことをチェックできる点にある。
【0013】
【発明の実施の形態】
図1は、本発明の実施例を示すシステム構成図である。
【0014】
保守者は、外部と本オブジェクト管理装置を結ぶ保守端末20を用いて、オブジェクト管理装置の核部分にあたる制御装置10に対して、操作に必要な情報のための外部記憶装置30に蓄積されている、新しく追加・変更する新プログラム320をロードするように指示する。これによって、当該ファイルが情報を内外部で結ぶクロスローダー部1130を経由して読み込まれ、本管理装置を運用するJava(登録商標)仮想マシン110上の各クラスが格納されているメソッドエリア1110に当該新プログラム320を構成する呼び出し先クラス(新)1112が配置される。
【0015】
本システムは、システムが稼動中であっても、保守者が新プログラム320をロードするように指示することで、(1)Java(登録商標)仮想マシン上のメソッドエリア1110にすでに配置されている呼び出し元クラス1111から呼び出されたメソッドが、新規に配置した呼び出し先クラス(新)1112に含まれるとき、呼び出し先クラス(旧)1112におけるメソッドではなく、呼び出し先クラス(新)1112のメソッドを用いること、(2)新プログラムに障害が起きた時には、呼び出し先クラス(旧)1112におけるメソッドを呼び出すようにロールバックすることを可能とする。
【0016】
また、新プログラム320をローディングする際に、ベースプログラム310と新プログラム320において、ベースプログラム310に含まれていたオブジェクト属性が新プログラムの同等のオブジェクトの属性と一致することを確認することを可能とする。
【0017】
さらに、前述の動作を行うために保持しているシステム内のデータを用いて、ベースプログラム310、および新プログラム320の名称やその状態を確認することも可能とする。
【0018】
図1で、1120はメソッド管理テーブル、120はオブジェクト管理機能である。1210は管理データベース、1211は既存プログラム管理テーブル、1212は新プログラム管理テーブル、1213は置換履歴管理テーブルであり、1230はファイル比較部、1220は置換管理部、1240は保守機能部である。
【0019】
ここでは、本システムを実現するための詳細例を記述する。
【0020】
最初に、オブジェクト管理機能120における管理データベース1210の各テーブルに関して記述する。
【0021】
(1)管理データベース1210内のテーブルのデータ構造例
(1−1)既存プログラム管理テーブル1211
図2は、管理データベース1210に搭載される既存プログラム管理テーブル1211のデータ構造例である。
【0022】
以下に各テーブルおよびレコードの詳細を説明する前に、プログラムとパッケージとクラスの関係を簡単に示す。
【0023】
プログラム(既存プログラムや新プログラム)はパッケージにより構成される。システム管理者により、パッケージが含まれる既存プログラムや新プログラムの名称は、任意に付与される。(図2の説明においてはプログラムとは既存プログラムを指し、図3の説明においてはプログラムとは新プログラムを指す。
【0024】
パッケージはクラスにより構成される。また、クラスは既存プログラムや新プログラムの最小構成単位でもある。システム管理者により、パッケージの名称には、置換対象の既存プログラムが含むパッケージと同じ名前が用いられる。システム管理者が明示的にパッケージの名称を指定しない場合はデフォルトパッケージとなる。
【0025】
クラスは、フィールドおよびメソッドにより構成される。システム管理者により、クラスの名称には、置換対象の既存プログラムが含むクラスと同じ名前が用いられる。
【0026】
以下に、図2における各テーブルについて説明する。
【0027】
・ パッケージテーブル202:本テーブルでは、プログラムを構成するパッケージの情報を保持する。
⇒ パッケージ名:プログラムに含まれるパッケージ名、もっていなければデフォルトパッケージとなる。
⇒ クラステーブルP:クラステーブルへのポインタ
【0028】
・ クラステーブル203:本テーブルではパッケージに含まれるクラスの情報を保持する。すなわち、Java(登録商標)仮想マシンに、どのようなクラスが読み込まれているかという情報を管理する。本テーブルはパッケージごとに作成される。
⇒ クラス名:該当クラスの名前
⇒ アクセスフラグ:他クラスからの該当クラスへのアクセス権
☆ PUBLIC:他クラスから自由にアクセスできる。
☆ FINAL:このクラスを継承したサブクラスを定義することはできない。
⇒ フィールドテーブルP:フィールドテーブルへのポインタ
⇒ メソッドテーブルP:メソッドテーブルへのポインタ
⇒ スーパークラス:該当クラスが継承するスーパークラス名
⇒ インタフェーステーブルP:インタフェーステーブルへのポインタ
⇒ バージョン:該当クラスのバージョン
【0029】
・ フィールドテーブル204:本テーブルではクラスに含まれるフィールドの情報を保持する。本テーブルはクラスごとに作成される。
⇒ フィールド名:該当クラスが持つフィールドの名前
⇒ アクセスフラグ:他クラスからの該当フィールドへのアクセス権
☆ PUBLIC:他クラスからアクセス可能
☆ PRIVATE:自クラスからのみのアクセスが可能
⇒フィールドディスクリプタテーブルP:フィールドディスクリプタテーブルへのポインタ
【0030】
・ フィールドディスクリプタテーブル205:本テーブルでは、クラスに含まれるフィールドの形式を保持する。本テーブルはクラスごとに作成される。
⇒ フィールドディスクリプタ:フィールドの形式
【0031】
・ メソッドテーブル206:本テーブルはクラスに含まれるメソッドの情報を保持する。本テーブルはクラスごとに作成される。
⇒ メソッド名:該当クラスが持つメソッドの名前
⇒ アクセスフラグ:他クラスからの該当メソッドへのアクセス権
☆ PUBLIC:他クラスからアクセス可能
☆ PRIVATE:自クラスからのみのアクセスが可能
⇒ メソッドディスクリプタテーブルP:メソッドディスクリプタテーブルへのポインタ
【0032】
・ メソッドディスクリプタテーブル207:本テーブルはクラスに含まれるメソッドの形式を保持する。本テーブルはクラスごとに作成される。
⇒ メソッドディスクリプタ:メソッドの引数、戻り値の形式
【0033】
・ インタフェーステーブル208:本テーブルはクラスが実装しているインタフェースの情報を保持する。本テーブルはクラスごとに作成される。
⇒ インタフェース名
☆ 該当クラスが実装(Java(登録商標)におけるimplement)するインタフェースの名前
【0034】
なお、図2中の208はインタフェーステーブルである。
【0035】
(1−2)新プログラム管理テーブル1212
図3は、管理データベース1210に搭載される新プログラム管理テーブル1212のデータ構造例である。
【0036】
以下に各テーブルおよびレコードの詳細を説明する(図3における図2との差分となる箇所のみ説明する。)。
【0037】
・ クラステーブル303
⇒ 投入状態:図3で示す、新プログラムの状態遷移図で示される、該当クラスの状態
【0038】
(1−3)置換履歴管理テーブル1213
図4は、管理データベース1210に搭載される置換履歴管理テーブル1213のデータ構造例である。
【0039】
以下にテーブルおよびレコードの詳細を説明する。
【0040】
・ 置換履歴管理テーブル1213:本テーブルは投入された新プログラムの置換処理の履歴を保持する。
⇒ 番号:置き換えされた処理順につけられる番号
⇒ パッケージ名およびクラス名:投入した新プログラムのパッケージ名とクラス名
⇒ 投入日時:置換処理が完了したときの日時
⇒ クラスバージョン:新プログラムのクラス毎のバージョン
⇒ 最終状態:置換処理が完了したときの最終状態(後述図6で示す。Success/Abort/Unsuccessful/failedのうちのどれか)
【0041】
(2)メソッド管理テーブル1120のデータ構造例
次に、メソッド管理テーブル1120のデータ構造例を示す。
【0042】
従来のメソッド管理テーブルは、Java(登録商標)仮想マシン110上のメソッドエリア1110に配置されている呼び出し元クラス1111のメソッドを実行中、呼び出し先クラスのメソッドを呼び出す必要が生じた場合、呼び出し先メソッドのアドレスを取得するため に使われていたテーブルであり、このテーブル自身はJava(登録商標)仮想マシン110が管理していた。
【0043】
本発明では、呼び出し先メソッドのアドレスを応答する機能は変わらないが、そのデータ構造を変えることで本システムの動作が可能となる。
【0044】
図5は、メソッド管理テーブルのデータ構造例である。
以下に各テーブルおよびレコードの詳細を説明する。
【0045】
・ パッケージテーブル502
⇒ パッケージ名:該当クラスを持つパッケージ名、もっていなければデフォルトとなる。
⇒ クラステーブルP:クラステーブルへのポインタ
【0046】
・ クラステーブル503: 本テーブルはパッケージごとに作成される。
⇒ クラス名:該当クラスの名前
⇒ メソッドテーブルP:メソッドテーブルへのポインタ
⇒ スーパークラス:該当クラスが継承するスーパークラス名
【0047】
・ メソッドテーブル504: 本テーブルはクラスごとに作成される。
⇒ メソッド名:該当クラスが持つメソッドの名前
⇒ 現アドレス:現在動作している既存プログラムのメソッドのメモリ上のアドレス
⇒ 新アドレス:新プログラムが読み込まれたときのメモリ上の新アドレス。新プログラムがない場合はNULLである。
【0048】
なお、図5中の501は、クラスローダテーブルである。
【0049】
(3)新プログラムにおけるクラスの状態遷移図
新プログラムの初期不良などを考慮し、新プログラムへの変更後、不具合が生じたときに既存プログラムへのロールバックを自動的に行うために一定の監視期間をもつことが考えられる。この実現のために、新プログラムのJava(登録商標)仮想マシンでの状態を複数考える。
【0050】
以下に、新プログラムがとりうる状態遷移の例を示す。
【0051】
図6は、新プログラムにおけるクラスの状態遷移例を図に示したものである。
【0052】
以下に各状態の時にとりうる状況と遷移が発生する要因を説明する。
【0053】
・ Initial601:初期状態として、保守者が新プログラムをJava(登録商標)仮想マシン内に一時的にロードした状態を示す。この時点ではまだ新プログラムは動作しておらず、既存プログラムの運用中であることを示す。
・ Progress602:保守者からの置換処理開始指示を契機に本状態に遷移する。既存プログラムのクラスと新プログラムのクラスの構造を比較中もしくは、置き換え処理中であることを示す。
・ Supervise603:前記Progress状態における処理が完了したことを契機に本状態に遷移する、新プログラムの動作を開始しているが、既存プログラムへ復帰可能な状態であることを示す。
・ Commit604:保守者からの監視終了指示を契機に本状態に遷移する。管理テーブルおよびJava(登録商標)仮想マシン内から、既存プログラムの情報を消去する処理中を示す。この状態以降からは既存プログラムへの復帰はできない。
・ Success605:監視終了処理が完了し、新プログラムでの動作を継続している状態である。
【0054】
・ Rollback606:Progress状態もしくはSupervise状態のときに、なんらかの異常(新プログラムの動作バグ)によりJava(登録商標)仮想マシンから異常が通知された場合、もしくは保守者から置換処理中止が指示されたことを契機に本状態に遷移する。新プログラムから、既存プログラムへの復帰処理中であることを示す。
・ Abort607:保守者による置換処理中止指示によって開始された、前記RollBack状態から復帰処理が完了した場合に本状態に遷移する。
・ Unsuccessful608:置換処理中の障害発生によって開始された前記RollBack状態から復帰処理が完了した場合、もしくは、既存プログラムと新プログラムの比較チェックを通過しなかった場合に本状態に遷移する。
・ Failed609:前記Rollback状態で行われた復帰処理が、なんらかの異常により失敗した場合、本状態に遷移する。
【0055】
前記の前提をおいた上で、新プログラムへの置換を行う場合のフローを例示する。
【0056】
(4)新プログラムへの置換例
(4−1)正常ルート例
図7は、本発明を用いた場合の実施例として、新プログラムを置換する処理の流れの例を示したものである。
以下に流れを説明する。まず、図中の701は保守者を示す。702は制御装置であり、714は処理の終了を示す。
【0057】
(ST1)保守者から、新プログラム名を指示して、「新プログラムロード指示」を制御装置に伝える。これが703にあたる。
(ST2)制御装置にてST1で指定した新プログラムを読み込むとともに、新プログラムに基づいて、新プログラム管理テーブル1212の初期化が行われる(後述する図12参照)。これが704にあたる。
(ST3)新プログラム管理テーブル1212の初期化が完了したことが保守者に通知される。これが705にあたる。
(ST4)保守者からST1で指定した新プログラム名を指定して、「置換開始処理指示」を制御装置に伝える。これが706にあたる。
(ST5)制御装置にて新プログラムと既存プログラムの比較チェックが行われる(後述する図13参照)。これが707にあたる。
(ST6)制御装置にて新プログラムの置き換え処理が行われる(後述する図14参照)。これが708にあたる。
【0058】
(ST7)置換処理開始が完了したことが保守者に通知される。これが709にあたる。
(ST8)保守者側では一定期間、制御装置を監視する。これが710にあたる。
(ST9)保守者からST1で指定した新プログラム名を指定して、「監視終了指示」を制御装置に伝える。これが711にあたる。
(ST10)制御装置にて監視終了処理が行われる(後述する図15参照)。これが712にあたる。
(ST11)監視終了処理が完了したことが保守者に通知される。これが713にあたる。
【0059】
(4−2)既存プログラムと新プログラムの比較NG
図8は、本発明を用いた場合の実施例として、新プログラムの置換処理において、既存プログラムと新プログラムの比較チェックNGの場合の流れの例を示したものである。ここで801、802、809は図7中と同様である。
以下に流れを説明する。
【0060】
(ST1)〜(ST5)は(4−1)と同じ。図中の803から807の説明も同様なのでここでは省く。
(ST6)(ST5)の処理の結果がNGであったため、比較結果NGが保守者に通知される。これが808にあたる。
【0061】
(4−3)新プログラムの置換処理中の異常発生による中断又は保守者から中止を指示した場合
図9は、本発明を用いた場合の実施例として、新プログラムの置換処理中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示したものである。図中の901、902、914は、図7と同様である。
以下に流れを説明する。
【0062】
(ST1)〜(ST6)は(4−1)と同じ。903から908は図7中と同様の説明となる。
(ST7)置換処理中になんらかの異常が発生したことが保守者に伝えられる。これが909にあたる。もしくは(910)、保守者からの「置換処理中断指示」が制御装置に伝えられる。これが911にあたる。
(ST8)制御装置にて中断処理が行われる(後述する図16参照)。これが912にあたる。
(ST9)中断処理が正常に完了した場合は中断処理完了通知 もしくは 中断処理がなんらかの異常により失敗した場合は中断処理失敗通知が保守者に通知される。これが913にあたる。
【0063】
(4−4)新プログラムの監視中の異常発生による中断又は保守者から中止を指示した場合
図10は、本発明を用いた場合の実施例として、新プログラムの監視中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示したものである。図中の1001、1002、1016は図7中同様である。
以下に流れを説明する。
【0064】
(ST1)〜(ST8)は(4−1)と同じ。つまり図中の1003から1010の説明も同様である。
(ST9)監視中になんらかの異常が発生したことが保守者に伝えられる。これが1011にあたる。もしくは(1012)、保守者からの「置換処理中断指示」が制御装置に伝えられる。これが1013にあたる。
(ST10)制御装置にて中断処理が行われる(後述する図16参照)。これが1014にあたる。
(ST11)中断処理が正常に完了した場合は中断処理完了通知 もしくは 中断処理がなんらかの異常により失敗した場合は中断処理失敗通知が保守者に通知される。これが1015にあたる。
【0065】
図11は、本発明を用いた場合の実施例として、各種情報参照(置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示)の流れの例を示したものである。図中の11001、11002は、図7中と同様である。以下に流れを説明する。
【0066】
A)置換履歴参照指示
(ST1)保守者から「置換履歴参照指示」を制御装置に伝える。これが11003にあたる。
(ST2)置換情報管理テーブルからデータ取得する(後述する図17参照)。これが11004にあたる。
(ST3)置換履歴情報を保守者に返却する。これが11005にあたる。
【0067】
B)新プログラム情報参照指示
(ST1)保守者から「新プログラム情報参照指示」を制御装置に伝える。これが11006にあたる。
(ST2)新プログラム管理テーブル1212からデータ取得する(後述する図17参照)。これが11007にあたる。
(ST3)新プログラム情報を保守者に返却する。これが11008にあたる。
【0068】
C)既存プログラム情報参照指示
(ST1)保守者から「既存プログラム情報参照指示」を制御装置に伝える。これが11009にあたる。
(ST2)既存プログラム管理テーブル1211からデータ取得する(後述する図17参照)。これが11010にあたる。
(ST3)既存プログラム情報を保守者に返却する。これが11011にあたる。
【0069】
次に、(4)で示した動作のさらに詳細を示す。
【0070】
(6)動作の詳細
(6−1)新プログラム管理テーブル初期化の実施例
図12は、本発明を用いた場合の実施例として、新プログラム管理テーブル初期化の実施例を示したものである。図中の番号による語句は図1の説明と同様である。以下に流れを説明する。
【0071】
(ST1)保守者から新プログラム名を指定して「新プログラムロード指示」を制御装置10に通知する。
(ST2)上記指示に基づき、保守機能部1240から新プログラムロード指示を置換管理部1220に通知する。
(ST3)置換管理部1220はクラスローダ部1130にST1で指令された新プログラムのロードを指示する。
(ST4)クラスローダ部1130は外部記憶装置30より新プログラムをロードし、メソッド管理テーブル1120の該当パッケージの該当クラスの該当メソッドの新アドレスのフィールドに新プログラムのアドレスを書き込む。
【0072】
(ST5)クラスローダ部1130はロードが完了したことを置換管理部1120に通知する。
(ST6)置換管理部1220は、新プログラムから、新プログラム管理テーブル1212を新規に作成する。クラステーブルの投入状態は「initial」に設定する。他のデータはすべて新プログラムから導出する。
(ST7)置換管理部1220は新プログラムのロードが完了したことを保守機能部1240に通知する。
(ST8)保守機能部1240は新プログラム管理テーブル1212の初期化が完了したことを保守端末20を通して保守者に通知する。
【0073】
(6−2)新プログラムと既存プログラムの比較チェックの実施例
図13は、本発明を用いた場合の実施例として、新プログラムと既存プログラムの比較チェックの実施例を示したものである。図中の番号による語句の説明は図1と同様である。以下に流れを説明する。
【0074】
(ST1)保守者から置換先の新プログラム名を指定して「置換開始処理指示」を制御装置10に伝え、保守機能部1240から置換開始処理の指示を置換管理部1220に通知する。
(ST2)置換管理部1220はファイル比較部1230にファイル比較開始処理を通知する。
【0075】
(ST3)ファイル比較部1230にて、新プログラム管理テーブル1212のクラステーブルの投入状態を「progress」とする。その後、既存プログラム管理テーブル1211と新プログラム管理テーブル1212を以下のSTEPで比較する。
【0076】
(ア)既存プログラム管理テーブル1211と新プログラム管理テーブルに格納されている全ての同名のパッケージおよび同名のクラスにおいて、以下の項目をチェックする。
▲1▼クラステーブルのアクセスフラグが既存プログラム管理テーブル1211と新プログラム管理テーブル1212で同じ値か
▲2▼クラステーブルのバージョンの値が、既存プログラムより新プログラムの値が大きいか
▲3▼既存プログラム管理テーブル1211のインタフェーステーブルのインタフェースの値およびその並びが、新プログラム管理テーブルの値と並びに含まれているか
▲4▼既存プログラム管理テーブル1211のフィールドテーブルのフィールド名およびアクセスフラグが新プログラム管理テーブルに含まれているか
▲5▼既存プログラム管理テーブル1211のフィールドディスクリプタテーブルの値が新プログラム管理テーブル1212に含まれているか
▲6▼既存プログラム管理テーブル1211のメソッドテーブルのメソッド名およびアクセスフラグが新プログラム管理テーブルに含まれているか
▲7▼既存プログラム管理テーブル1211のメソッドディスクリプタテーブルの値が新プログラム管理テーブル1212に含まれているか
【0077】
(イ)上記チェックに全てOKであれば比較結果をOKとし、ひとつでもNGが存在する場合は比較結果をNGとする。
【0078】
(ST4)比較結果を置換管理部1220に返却する。
(ST5)ST4の結果、OKであれば置き換え処理(後述図14参照)に移る。NGの場合は、新プログラム管理テーブル1212の全クラスの投入状態を「Unsuccessful」にし、置換履歴管理テーブル1213に新プログラム管理テーブル1212の情報を以下のようにコピーし、新プログラム管理テーブル1212を消去する。
【0079】
(ア)パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル1213の「パッケージおよびクラス名」にコピーする。
(イ)新プログラム管理テーブル1212のクラスバージョンをクラス毎に置換履歴管理テーブル1213の「クラスバージョン」にコピーする。
(ウ)クラス毎に置換履歴管理テーブル1213の最終状態を「Unsuccessful」とする。
(エ)この時点の日時情報を置換履歴管理テーブル1213の投入日時に入力する。
(オ)クラス毎にレコード通番を入力する。
【0080】
(ST6)置換管理部1220は保守機能部1240にファイル比較結果がNGであることを返却する。
(ST7)保守機能部1240は保守端末20にファイル比較結果がNGであることを通知する。
【0081】
(6−3)新プログラムへの置換処理の実施例
図14は、本発明を用いた場合の実施例として、新プログラムへの置換処理の実施例を示したものである。図中の番号による語句は図1の説明と同様である。
以下に流れを説明する。
【0082】
(ST1)制御装置10にて置換先の新プログラム名を指定して置き換え処理が通知され、ファイル比較部1230からファイル比較処理が正常に完了したことが返却されたことを契機に、メソッド管理テーブル1120の現アドレスの値と新アドレスの値を交換する。
(ST2)置換管理部1220は、新プログラム管理テーブル1212のクラステーブルの投入状態を「supervise」とする。
(ST3)置換管理部1220は、保守機能部1240に置換処理が正常に終了したことを通知する。
(ST4)保守機能部1240は保守端末20に置換処理が正常に終了したことを通知する。
【0083】
(6−4)新プログラムへ監視終了処理の実施例
図15は、本発明を用いた場合の実施例として、新プログラムの監視終了処理の実施例を示したものである。図中の番号による語句は、図1と同様である。
以下に流れを説明する。
【0084】
(ST1)保守者から新プログラム名を指定して「監視終了指示」を制御装置10に伝える。
(ST2)保守機能部1240から置換管理部1220に「監視終了指示」が通知される。
(ST3)置換管理部1220は新プログラム管理データベース1210のクラステーブルの投入状態を「Success」とする。その後、新プログラム管理テーブル1212のデータを既存プログラム管理テーブル1211にマージする。その後、置換履歴管理テーブル1213に新プログラム管理テーブル1212の情報を以下のようにコピーし、新プログラム管理テーブル1212を消去する。
【0085】
(ア)パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル1213の「パッケージおよびクラス名」にコピーする。
(イ)新プログラム管理テーブル1212のクラスバージョンをクラス毎に置換履歴管理テーブル1213の「クラスバージョン」にコピーする。
(ウ)クラス毎に置換履歴管理テーブル1213の最終状態を「Success」とする。
(エ)この時点の日時情報を置換履歴管理テーブル1213の投入日時に入力する。
(オ)クラス毎にレコード通番を入力する。
【0086】
(ST4)置換管理部1220から保守機能部1240に監視終了処理が完了したことを通知する。
(ST5)保守機能部1240から保守端末20に監視終了処理の完了通知が通知される。
【0087】
(6−5)新プログラムの置換処理中断処理の実施例
図16は、本発明を用いた場合の実施例として、新プログラムへ置換処理中
断処理の実施例を示したものである。図中の番号による語句の説明は、図1と同様である。
以下に流れを説明する。
【0088】
(ST1−1)保守者からの「置換処理中断指示」が保守機能部1240を経由して置換管理部1220に通知される。
(ST1−2)もしくは、置換処理中にメソッドエリア1110に格納されているクラスにて、なんらかの異常が発生したことが置換処理部に通知される。
(ST1−3)ST1−1もしくはST1−2を契機として、置換管理部1220は新プログラム管理データベース1210のクラステーブルの投入状態を「RollBack」とする。
【0089】
(ST2)メソッド管理テーブル1120の現アドレスの値と新アドレスの値を交換する(前STEPの段階では現アドレスのエリアに新アドレスの値が、新アドレスのエリアに現(旧)アドレスの値が格納されているため、本STEPによりそれが元に戻る。)。
【0090】
(ST3)置換管理部1220は新プログラム管理データベースのクラステーブルの投入状態を「unsuccessful」とする。その後、置換履歴管理テーブル1213に新プログラム管理テーブル1212の情報を以下のようにコピーする。
【0091】
(ア)パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル1213の「パッケージおよびクラス名」にコピーする。
(イ)新プログラム管理テーブル1212のクラスバージョンをクラス毎に置換履歴管理テーブル1213の「クラスバージョン」にコピーする。
(ウ)クラス毎に置換履歴管理テーブル1213の最終状態を「Unsuccessful」とする。
(エ)この時点の日時情報を置換履歴管理テーブル1213の投入日時に入力する。
(オ)クラス毎にレコード通番を入力する。
【0092】
(ST4)置換管理部1220は保守機能部1240に中断処理完了通知を通知する。
(ST5)保守機能部1240は中断処理完了通知を保守端末20に通知する。
【0093】
(ST6)ST1−1からST5までのSTEPの中で何らかの障害が発生した場合は、以下のSTEPとする。
【0094】
(カ)置換管理部1220は新プログラム管理データベースのクラステーブルの投入状態を「failed」とする。その後、置換履歴管理テーブル1213に新プログラム管理テーブル1212の情報を以下のようにコピーし、新プログラム管理テーブル1212を消去する。
【0095】
▲1▼パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル1213の「パッケージおよびクラス名」にコピーする。
▲2▼新プログラム管理テーブル1212のクラスバージョンをクラス毎に置換履歴管理テーブル1213の「クラスバージョン」にコピーする。
▲3▼クラス毎に置換履歴管理テーブル1213の最終状態を「failed」とする。
▲4▼この時点の日時情報を置換履歴管理テーブル1213の投入日時に入力する。
▲5▼クラス毎にレコード通番を入力する。
【0096】
(キ)置換管理部1220は保守機能部1240に中断処理失敗通知を通知する。
(ク)保守機能部1240は中断処理失敗通知を保守端末20に通知する。
【0097】
(7)情報参照の詳細
図17は、各種情報参照(置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示)の実施例を示したものである。図中の番号による語句の説明は、図1と同様である。
【0098】
(ST1)保守者から「置換履歴参照指示」もしくは「新プログラム情報参照指示」、もしくは「既存プログラム情報参照指示」を制御装置10に伝える。
【0099】
(ST2)保守機能部1240は、指示毎にそれぞれ以下の処理を行う。
(ア)置換履歴参照指示の場合、置換履歴管理テーブル1213の情報を取得する。
(イ)新プログラム情報参照指示の場合、新プログラム管理テーブル1212の情報を取得する。
(ウ)既存プログラム情報参照指示の場合、既存プログラム管理テーブル1211の情報を取得する。
【0100】
(ST3)前STEPにてのべた処理にて保守機能部1240は管理データベース1210から情報を取得する。
(ST4)保守機能部1240は管理データベース1210から取得した情報を保守者に返却する。
【0101】
上述の実施形態において、その処理を行うプログラムをアプリケーションソフトとして、CD−ROM等の記憶媒体に格納しておいてもよい。このようにすれば、CD−ROM等の可搬型記録媒体にプログラム等を格納して売買したり、携帯することができるようになる。
【0102】
【効果の発明】
以上説明したように、本発明によれば、運用中のシステムにプログラムの追加・変更を行うことができるという効果がある。
【0103】
また、追加プログラムにて障害が発生した場合に、元の状態に復帰することができるオブジェクト管理装置、および追加プログラムの投入時に追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことを確認することができるオブジェクト管理装置を提供することが可能となる効果がある。
【図面の簡単な説明】
【図1】本発明の実施例を示すシステム構成例図である。
【図2】管理データベースに搭載される、既存プログラム管理テーブルのデータ構造例図である。
【図3】管理データベースに搭載される、新プログラム管理テーブルのデータ構造例図である。
【図4】管理データベースに搭載される、置換履歴管理テーブルのデータ構造例図である。
【図5】メソッド管理テーブルのデータ構造例図である。
【図6】新プログラムにおけるクラスの状態遷移図である。
【図7】本発明を用いた場合の実施例として、新プログラムを置換する処理の流れの例を示した図である。
【図8】本発明を用いた場合の実施例として、新プログラムの置換処理において、既存プログラムと新プログラムの比較チェックNGの場合の流れの例を示した図である。
【図9】本発明を用いた場合の実施例として、新プログラムの置換処理中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示した図である。
【図10】本発明を用いた場合の実施例として、新プログラムの監視中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示した図である。
【図11】本発明を用いた場合の実施例として、各種情報参照(置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示)の流れの例を示した図である。
【図12】本発明を用いた場合の実施例として、新プログラム管理テーブル初期化の実施例を示した図である。
【図13】本発明を用いた場合の実施例として、新プログラムと既存プログラムの比較チェックを示す図である。
【図14】本発明を用いた場合の実施例として、新プログラムへの置換処理の実施例を示した図である。
【図15】本発明を用いた場合の実施例として、新プログラムへ監視終了処理の実施例を示した図である。
【図16】本発明を用いた場合の実施例として、新プログラムへ置換処理中断処理の実施例を示した図である。
【図17】各種情報参照(置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示)の実施例を示した図である。
【符号の説明】
10 制御装置
110 Java(登録商標)仮想マシン
1110 メソッドエリア
1111 呼び出し元クラス
1112 呼び出し先クラス(旧)、呼び出し先クラス(新)
1120 メソッド管理テーブル
1130 クラスローダ部
120 オブジェクト管理機能
1210 管理データベース
1211 既存プログラム管理テーブル
1212 新プログラム管理テーブル
1213 置換履歴管理テーブル
1220 置換管理部
1230 ファイル比較部
1240保守機能部
20 保守端末
30 外部記憶装置
310 ベースプログラム
320 新プログラム
201、301、501 クラスローダテーブル
202、302、502 パッケージテーブル
203、303、503 クラステーブル
204、304 フィールドテーブル
205、305 フィールドディスクリプタテーブル
206、306、504 メソッドテーブル
207、307 メソッドディスクリプタテーブル
208、308 インタフェーステーブル

Claims (12)

  1. Java(登録商標)仮想マシンを搭載した装置において、運用中の既存プログラムおよび運用中に新しく追加する新プログラムに関する管理データベースと、保守者からの指示による当該新プログラムの追加や追加時に発生する障害に応じて、当該管理データベースの更新を行う手段と、当該Java(登録商標)仮想マシン内で管理されているメソッド管理テーブルの変更を行う手段とを有することを特徴とするオブジェクト管理装置。
  2. 請求項1記載のオブジェクト管理装置において、保守者からの指示による新プログラムの追加の際に、保守者からの指示を契機に、前記Java(登録商標)仮想マシン内で管理されているメソッド管理テーブル内で管理されている呼び出し先アドレスを、新プログラムが格納されているアドレスに変更する手段と、その手段によって既存プログラムから新プログラムに処理を変更する手段とを有することを特徴とするオブジェクト管理装置。
  3. 請求項1記載のオブジェクト管理装置において、保守者からの指示による新プログラムの追加時に発生する障害の際に、障害発生の通知を前記Java(登録商標)仮想マシンより受信する手段、もしくは、保守者からの指示を契機に、前記Java(登録商標)仮想マシン内で管理されているメソッド管理テーブル内で管理されている呼び出し先アドレスを、新プログラムが配置される前の既存プログラムのアドレスに変更する手段によって、元の運用中の状態に復帰することを特徴とするオブジェクト管理装置。
  4. 請求項1記載の管理データベースを使い、追加プログラムと既存プログラムのファイル構造を比較する手段と、両プログラムのオブジェクトの型定義の差分をチェックする手段とを有することを特徴とするオブジェクト管理装置。
  5. 請求項1記載の管理データベースを使い、追加プログラムと既存プログラムの置換履歴や、個々のプログラム情報を参照可能とする手段を有することを特徴とするオブジェクト管理装置。
  6. オブジェクト管理装置によって、新プログラムを置換する方法において、制御装置にて指定された新プログラムを読み込み、新プログラムと既存プログラムの比較チェックを行い、新プログラムの置き換え処理を行い、監視終了処理を行うことを特徴とする新プログラム置換方法。
  7. 請求項6記載の新プログラム置換方法において、新プログラムの置換処理で、既存プログラムと新プログラムの比較チェックの結果、異常が発生した場合、制御装置は中断処理を行うことを特徴とする新プログラム置換方法。
  8. オブジェクト管理装置による新プログラム置換後の各種情報参照方法において、制御装置は、置換履歴参照指示により、置換履歴管理テーブルからデータを取得し、取得した置換履歴管理情報を出力し、新プログラム参照指示により、新プログラム管理テーブルからデータを取得し、取得した新プログラム情報を出力し、既存プログラム情報参照指示により、既存プログラム管理テーブルからデータを取得し、取得した既存プログラム情報を出力することを特徴とする各種情報参照方法。
  9. Java(登録商標)仮想マシンに、制御装置にて指定された新プログラムを読み込む手順と、新プログラムと既存プログラムの比較チェックを行う手順と、新プログラムの置き換え処理を行う手順と、監視終了処理を行う手順を、実行させるための新プログラム置換用プログラム。
  10. Java(登録商標)仮想マシンに、新プログラムの置換処理で、既存プログラムと新プログラムの比較チェックを行う手順と、チェックの結果、異常が発生した場合、制御装置は中断処理を行う手順を実行させるための比較チェック用プログラム。
  11. Java(登録商標)仮想マシンに、置換履歴参照指示により、置換履歴管理テーブルからデータを取得し、取得した置換履歴管理情報を出力する手順と、新プログラム参照指示により、新プログラム管理テーブルからデータを取得し、取得した新プログラム情報を出力する手順と、既存プログラム情報参照指示により、既存プログラム管理テーブルからデータを取得し、取得した既存プログラム情報を出力する手順を実行させるための各種情報参照用プログラム。
  12. 請求項9、10、11のいずれかに記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
JP2002288754A 2002-10-01 2002-10-01 オブジェクト管理装置とその方法、およびプログラム Pending JP2004126863A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002288754A JP2004126863A (ja) 2002-10-01 2002-10-01 オブジェクト管理装置とその方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002288754A JP2004126863A (ja) 2002-10-01 2002-10-01 オブジェクト管理装置とその方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2004126863A true JP2004126863A (ja) 2004-04-22

Family

ID=32281156

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002288754A Pending JP2004126863A (ja) 2002-10-01 2002-10-01 オブジェクト管理装置とその方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP2004126863A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163686A (ja) * 2004-12-06 2006-06-22 Matsushita Electric Ind Co Ltd コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体
JP2008217533A (ja) * 2007-03-06 2008-09-18 Nec Corp ソフトウェア管理装置およびソフトウェア管理プログラム
JP2009054146A (ja) * 2007-07-27 2009-03-12 Canon Inc 情報処理方法、情報処理装置及びプログラム
JP2010218334A (ja) * 2009-03-18 2010-09-30 Hitachi Software Eng Co Ltd プログラム動的更新システム、管理サーバ、組込み機器及びプログラム
JP2011186824A (ja) * 2010-03-09 2011-09-22 Hitachi Ltd バリデーション処理プログラムおよびバリデーション処理サーバ
JP2015179465A (ja) * 2014-03-19 2015-10-08 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びその検証方法
JP2016515748A (ja) * 2013-04-24 2016-05-30 シマンテック コーポレーションSymantec Corporation 実行時のアプリケーションメソッドを置き換えるためのシステム及び方法
US11507357B2 (en) 2019-09-27 2022-11-22 Brother Kogyo Kabushiki Kaisha Information processing device, method of installing software, and non-transitory computer-readable recording medium therefor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163686A (ja) * 2004-12-06 2006-06-22 Matsushita Electric Ind Co Ltd コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体
JP2008217533A (ja) * 2007-03-06 2008-09-18 Nec Corp ソフトウェア管理装置およびソフトウェア管理プログラム
JP2009054146A (ja) * 2007-07-27 2009-03-12 Canon Inc 情報処理方法、情報処理装置及びプログラム
JP2010218334A (ja) * 2009-03-18 2010-09-30 Hitachi Software Eng Co Ltd プログラム動的更新システム、管理サーバ、組込み機器及びプログラム
JP2011186824A (ja) * 2010-03-09 2011-09-22 Hitachi Ltd バリデーション処理プログラムおよびバリデーション処理サーバ
JP2016515748A (ja) * 2013-04-24 2016-05-30 シマンテック コーポレーションSymantec Corporation 実行時のアプリケーションメソッドを置き換えるためのシステム及び方法
JP2015179465A (ja) * 2014-03-19 2015-10-08 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びその検証方法
US11507357B2 (en) 2019-09-27 2022-11-22 Brother Kogyo Kabushiki Kaisha Information processing device, method of installing software, and non-transitory computer-readable recording medium therefor

Similar Documents

Publication Publication Date Title
US8788569B2 (en) Server computer system running versions of an application simultaneously
US8095823B2 (en) Server computer component
US8984534B2 (en) Interfacing between a receiving component of a server application and a remote application
CN104679534B (zh) 系统应用安装包加载处理方法、装置及终端
US9634965B2 (en) System and method for providing a job manager for use with a cloud platform environment
US20080282255A1 (en) Highly-available application operation method and system, and method and system of changing application version on line
JP4684578B2 (ja) 自動タスク生成方法およびシステム
US20090172636A1 (en) Interactive development tool and debugger for web services
CN100485676C (zh) 文件系统串行化重新初始化装置、方法和系统
JP4876438B2 (ja) コンポーネントソフトウェアの運用方法および運用基盤
US8589727B1 (en) Methods and apparatus for providing continuous availability of applications
CN109614167B (zh) 一种管理插件的方法和系统
JP5543333B2 (ja) クラスタ化されたソフトウェアエンティティのための動的cliマッピング
JP2004512610A (ja) ネットワーク化されたシステムの高アベイラビリティを維持する技法
US7603256B2 (en) Enabling high availability and load balancing for management modules in a computing environment
JP2006202279A (ja) 仮想マシンの監視
JP2003256225A (ja) コンピュータシステム、障害対応方法及びコンピュータシステムを機能させるためのプログラム
US20080010649A1 (en) Method Of Loading Software With An Intermediate Object Oriented Language In A Portable Device
US20070083792A1 (en) System and method for error detection and reporting
CN114756357B (zh) 一种基于jvm的非阻塞分布式计划任务调度方法
JP2004126863A (ja) オブジェクト管理装置とその方法、およびプログラム
US20030065970A1 (en) System and method for creating fault tolerant applications
JP2010086110A (ja) プログラムの設定情報切替システム及び切替方法
JP2009271858A (ja) 計算機システム及びプログラム
US8595349B1 (en) Method and apparatus for passive process monitoring

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071030

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080304