(57)【要約】【課題】運用中のシステムにプログラムの追加・変更を行うことができるようにする。【解決手段】Ｊａｖａ（登録商標）仮想マシン１１０内で管理されているメソッド管理テーブル１１２０を、追加プログラムが配置されたアドレスに変更するクラスローダ部１１３０によって、装置の運用中のアプリケーションプログラムの追加・変更を可能とする。上記テーブル１１２０を、追加プログラムが配置される前のアドレスに変更する手段によって、追加プログラムにて障害が発生した場合に、元の状態に復帰することを可能とする。追加プログラムと既存プログラムのファイル構造を比較し、既存プログラムの構造から引かれている部分がないことをチェックするファイル比較部１２３０によって、両プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことをチェックすることを可能とする。【選択図】　　　図１
2004126863.tif 000002
【特許請求の範囲】
【請求項１】
Ｊａｖａ（登録商標）仮想マシンを搭載した装置において、運用中の既存プログラムおよび運用中に新しく追加する新プログラムに関する管理データベースと、保守者からの指示による当該新プログラムの追加や追加時に発生する障害に応じて、当該管理データベースの更新を行う手段と、当該Ｊａｖａ（登録商標）仮想マシン内で管理されているメソッド管理テーブルの変更を行う手段とを有することを特徴とするオブジェクト管理装置。
【請求項２】
請求項１記載のオブジェクト管理装置において、保守者からの指示による新プログラムの追加の際に、保守者からの指示を契機に、前記Ｊａｖａ（登録商標）仮想マシン内で管理されているメソッド管理テーブル内で管理されている呼び出し先アドレスを、新プログラムが格納されているアドレスに変更する手段と、その手段によって既存プログラムから新プログラムに処理を変更する手段とを有することを特徴とするオブジェクト管理装置。
【請求項３】
請求項１記載のオブジェクト管理装置において、保守者からの指示による新プログラムの追加時に発生する障害の際に、障害発生の通知を前記Ｊａｖａ（登録商標）仮想マシンより受信する手段、もしくは、保守者からの指示を契機に、前記Ｊａｖａ（登録商標）仮想マシン内で管理されているメソッド管理テーブル内で管理されている呼び出し先アドレスを、新プログラムが配置される前の既存プログラムのアドレスに変更する手段によって、元の運用中の状態に復帰することを特徴とするオブジェクト管理装置。
【請求項４】
請求項１記載の管理データベースを使い、追加プログラムと既存プログラムのファイル構造を比較する手段と、両プログラムのオブジェクトの型定義の差分をチェックする手段とを有することを特徴とするオブジェクト管理装置。
【請求項５】
請求項１記載の管理データベースを使い、追加プログラムと既存プログラムの置換履歴や、個々のプログラム情報を参照可能とする手段を有することを特徴とするオブジェクト管理装置。
【請求項６】
オブジェクト管理装置によって、新プログラムを置換する方法において、制御装置にて指定された新プログラムを読み込み、新プログラムと既存プログラムの比較チェックを行い、新プログラムの置き換え処理を行い、監視終了処理を行うことを特徴とする新プログラム置換方法。
【請求項７】
請求項６記載の新プログラム置換方法において、新プログラムの置換処理で、既存プログラムと新プログラムの比較チェックの結果、異常が発生した場合、制御装置は中断処理を行うことを特徴とする新プログラム置換方法。
【請求項８】
オブジェクト管理装置による新プログラム置換後の各種情報参照方法において、制御装置は、置換履歴参照指示により、置換履歴管理テーブルからデータを取得し、取得した置換履歴管理情報を出力し、新プログラム参照指示により、新プログラム管理テーブルからデータを取得し、取得した新プログラム情報を出力し、既存プログラム情報参照指示により、既存プログラム管理テーブルからデータを取得し、取得した既存プログラム情報を出力することを特徴とする各種情報参照方法。
【請求項９】
Ｊａｖａ（登録商標）仮想マシンに、制御装置にて指定された新プログラムを読み込む手順と、新プログラムと既存プログラムの比較チェックを行う手順と、新プログラムの置き換え処理を行う手順と、監視終了処理を行う手順を、実行させるための新プログラム置換用プログラム。
【請求項１０】
Ｊａｖａ（登録商標）仮想マシンに、新プログラムの置換処理で、既存プログラムと新プログラムの比較チェックを行う手順と、チェックの結果、異常が発生した場合、制御装置は中断処理を行う手順を実行させるための比較チェック用プログラム。
【請求項１１】
Ｊａｖａ（登録商標）仮想マシンに、置換履歴参照指示により、置換履歴管理テーブルからデータを取得し、取得した置換履歴管理情報を出力する手順と、新プログラム参照指示により、新プログラム管理テーブルからデータを取得し、取得した新プログラム情報を出力する手順と、既存プログラム情報参照指示により、既存プログラム管理テーブルからデータを取得し、取得した既存プログラム情報を出力する手順を実行させるための各種情報参照用プログラム。
【請求項１２】
請求項９、１０、１１のいずれかに記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｊａｖａ（登録商標）仮想マシンを搭載した装置におけるオブジェクト管理装置に関する。
【０００２】
【従来の技術】
既存のＪａｖａ（登録商標）技術（Ｊａｖａ（登録商標）仮想マシン（例えば、非特許文献１参照）および、ＪＰＤＡ（Ｊａｖａ（登録商標）　Ｐｌａｔｆｏｒｍ　Ｄｅｂｕｇｇｅｒ　Ａｒｃｈｉｔｅｃｔｕｒｅ）におけるＨｏｔ　Ｓｗａｐ機能（例えば、非特許文献２参照））では、プログラムの誤りを修正する場合や、プログラムの機能を追加する場合には、当該システムを停止させ、プログラムを入れ替え、再起動する必要があった。
【０００３】
これに対して、近年、Ｊａｖａ（登録商標）技術の進歩により、システムを停止させずに入れ替えることができるようになったが、この場合でもやはり、開発時に開発対象装置の制御を行ったり、内部情報の閲覧や変更が出来るデバッガと呼ばれる装置による制御を必要としたため、システムの運用中には使用できなかった。
【０００４】
また、追加プログラムにて障害が発生した場合に、元の状態に復帰することはできなかった。
【０００５】
また、追加プログラムの投入時に、追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分をチェックすることができなかった。
【０００６】
【非特許文献１】
Ｔ．リンドホルム（Ｔｉｍ　Ｌｉｎｄｈｏｌｍ）、Ｆ．イェリン（ＦｒａｎｋＹｅｌｌｉｎ）著、村上　雅章翻訳、“Ｊａｖａ（登録商標）仮想マシン仕様（第２版）（Ｔｈｅ　Ｊａｖａ（登録商標）　Ｖｉｒｔｕａｌ　Ｍａｃｈｉｎｅ　Ｓｐｅｃｉｆｉｃａｔｉｏｎ　２／Ｅ）”、ピアソン・エデュケーション、２００１年５月、ｐ．５５―１３２
【非特許文献２】
Ｍｉｋｈａｉｌ　Ｄｍｉｔｒｉｅｖ、“Ｓａｆｅ　Ｃｌａｓｓ　ａｎｄ　Ｄａｔａ　Ｅｖｏｌｕｔｉｏｎ　ｉｎ　Ｌａｒｇｅ　ａｎｄ　Ｌｏｎｇ−ＬｉｖｅｄＪａｖａ（登録商標）「ｔｍ」　Ａｐｐｌｉｃａｔｉｏｎｓ（Ｓｕｎ　Ｍｉｃｒｏｓｙｓｔｅｍｓ　Ｔｅｃｈｎｉｃａｌ　Ｒｅｐｏｒｔ　Ｎｕｍｂｅｒ　：　ＴＲ−２００１−９８）”、「ｏｎｌｉｎｅ」、平成１３年８月掲載、Ｓｕｎ　Ｍｉｃｒｏｓｙｓｔｅｍｓ、「平成１４年９月２日検索」、インターネット＜ｈｔｔｐ：／／ｒｅｓｅｒｃｈ．ｓｕｎ．ｃｏｍ／ｒｅｓｅｒｃｈ／ｔｅｃｈｒｅｐ／２００１／ｓｍｌｉ−ｔｒ−２００１−９８．ｐｄｆ＞、ｐ．１２３−１５９
【０００７】
【発明が解決しようとする課題】
このように従来の技術では運用中のシステムに対して、プログラムの追加・変更を行う時に、プログラムを停止させることなく、入れ替えることができなかった。
【０００８】
本発明の目的は、運用中のシステムにプログラムの追加・変更を行うことができるオブジェクト管理装置と、その方法、およびプログラムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、運用中のシステムにプログラムの追加・変更を行うことができ、追加プログラムにて障害が発生した場合に、元の状態に復帰することができるオブジェクト管理装置、あるいは追加プログラムの投入時に追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分を確認することができるオブジェクト管理装置、あるいは追加プログラムと既存プログラムの置換履歴や個々のプログラム情報を参照可能とするオブジェクト管理装置を提供する。
【００１０】
すなわち、本発明の第一の特徴点は、装置の運用中のアプリケーションプログラムの追加・変更を可能とするオブジェクト置換装置である。
ここで、本発明の特徴とするところは、前記Ｊａｖａ（登録商標）仮想マシンの上に搭載されているアプリケーションプログラムの追加プログラムを新たにメモリ内に配置し、管理テーブルに新たなレコードを追加・初期化し、置換制御部に置換処理開始を通知し、置換制御部にて、Ｊａｖａ（登録商標）仮想マシン内で管理されているメソッド管理テーブルを、追加プログラムが配置されたアドレスに変更する点にある。
【００１１】
本発明の第二の特徴点は、追加プログラムにて障害が発生した場合に、元の状態に復帰することを可能とするオブジェクト管理装置である。
ここで、本発明の特徴とするところは、障害発生の通知を前記Ｊａｖａ（登録商標）仮想マシンよりうけたことを契機に、Ｊａｖａ（登録商標）仮想マシン内で管理されているメソッド管理テーブルを、追加プログラムが配置される前のアドレスに変更する点にある。
【００１２】
本発明の第三の特徴点は、追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことをチェックできるオブジェクト比較装置である。ここで、本発明の特徴とするところは、追加プログラムと既存プログラムのファイル構造を比較し、既存プログラムの構造から引かれている部分がないことをチェックできる点にある。
【００１３】
【発明の実施の形態】
図１は、本発明の実施例を示すシステム構成図である。
【００１４】
保守者は、外部と本オブジェクト管理装置を結ぶ保守端末２０を用いて、オブジェクト管理装置の核部分にあたる制御装置１０に対して、操作に必要な情報のための外部記憶装置３０に蓄積されている、新しく追加・変更する新プログラム３２０をロードするように指示する。これによって、当該ファイルが情報を内外部で結ぶクロスローダー部１１３０を経由して読み込まれ、本管理装置を運用するＪａｖａ（登録商標）仮想マシン１１０上の各クラスが格納されているメソッドエリア１１１０に当該新プログラム３２０を構成する呼び出し先クラス（新）１１１２が配置される。
【００１５】
本システムは、システムが稼動中であっても、保守者が新プログラム３２０をロードするように指示することで、（１）Ｊａｖａ（登録商標）仮想マシン上のメソッドエリア１１１０にすでに配置されている呼び出し元クラス１１１１から呼び出されたメソッドが、新規に配置した呼び出し先クラス（新）１１１２に含まれるとき、呼び出し先クラス（旧）１１１２におけるメソッドではなく、呼び出し先クラス（新）１１１２のメソッドを用いること、（２）新プログラムに障害が起きた時には、呼び出し先クラス（旧）１１１２におけるメソッドを呼び出すようにロールバックすることを可能とする。
【００１６】
また、新プログラム３２０をローディングする際に、ベースプログラム３１０と新プログラム３２０において、ベースプログラム３１０に含まれていたオブジェクト属性が新プログラムの同等のオブジェクトの属性と一致することを確認することを可能とする。
【００１７】
さらに、前述の動作を行うために保持しているシステム内のデータを用いて、ベースプログラム３１０、および新プログラム３２０の名称やその状態を確認することも可能とする。
【００１８】
図１で、１１２０はメソッド管理テーブル、１２０はオブジェクト管理機能である。１２１０は管理データベース、１２１１は既存プログラム管理テーブル、１２１２は新プログラム管理テーブル、１２１３は置換履歴管理テーブルであり、１２３０はファイル比較部、１２２０は置換管理部、１２４０は保守機能部である。
【００１９】
ここでは、本システムを実現するための詳細例を記述する。
【００２０】
最初に、オブジェクト管理機能１２０における管理データベース１２１０の各テーブルに関して記述する。
【００２１】
（１）管理データベース１２１０内のテーブルのデータ構造例
（１−１）既存プログラム管理テーブル１２１１
図２は、管理データベース１２１０に搭載される既存プログラム管理テーブル１２１１のデータ構造例である。
【００２２】
以下に各テーブルおよびレコードの詳細を説明する前に、プログラムとパッケージとクラスの関係を簡単に示す。
【００２３】
プログラム（既存プログラムや新プログラム）はパッケージにより構成される。システム管理者により、パッケージが含まれる既存プログラムや新プログラムの名称は、任意に付与される。（図２の説明においてはプログラムとは既存プログラムを指し、図３の説明においてはプログラムとは新プログラムを指す。
【００２４】
パッケージはクラスにより構成される。また、クラスは既存プログラムや新プログラムの最小構成単位でもある。システム管理者により、パッケージの名称には、置換対象の既存プログラムが含むパッケージと同じ名前が用いられる。システム管理者が明示的にパッケージの名称を指定しない場合はデフォルトパッケージとなる。
【００２５】
クラスは、フィールドおよびメソッドにより構成される。システム管理者により、クラスの名称には、置換対象の既存プログラムが含むクラスと同じ名前が用いられる。
【００２６】
以下に、図２における各テーブルについて説明する。
【００２７】
・　パッケージテーブル２０２：本テーブルでは、プログラムを構成するパッケージの情報を保持する。
⇒　パッケージ名：プログラムに含まれるパッケージ名、もっていなければデフォルトパッケージとなる。
⇒　クラステーブルＰ：クラステーブルへのポインタ
【００２８】
・　クラステーブル２０３：本テーブルではパッケージに含まれるクラスの情報を保持する。すなわち、Ｊａｖａ（登録商標）仮想マシンに、どのようなクラスが読み込まれているかという情報を管理する。本テーブルはパッケージごとに作成される。
⇒　クラス名：該当クラスの名前
⇒　アクセスフラグ：他クラスからの該当クラスへのアクセス権
☆　ＰＵＢＬＩＣ：他クラスから自由にアクセスできる。
☆　ＦＩＮＡＬ：このクラスを継承したサブクラスを定義することはできない。
⇒　フィールドテーブルＰ：フィールドテーブルへのポインタ
⇒　メソッドテーブルＰ：メソッドテーブルへのポインタ
⇒　スーパークラス：該当クラスが継承するスーパークラス名
⇒　インタフェーステーブルＰ：インタフェーステーブルへのポインタ
⇒　バージョン：該当クラスのバージョン
【００２９】
・　フィールドテーブル２０４：本テーブルではクラスに含まれるフィールドの情報を保持する。本テーブルはクラスごとに作成される。
⇒　フィールド名：該当クラスが持つフィールドの名前
⇒　アクセスフラグ：他クラスからの該当フィールドへのアクセス権
☆　ＰＵＢＬＩＣ：他クラスからアクセス可能
☆　ＰＲＩＶＡＴＥ：自クラスからのみのアクセスが可能
⇒フィールドディスクリプタテーブルＰ：フィールドディスクリプタテーブルへのポインタ
【００３０】
・　フィールドディスクリプタテーブル２０５：本テーブルでは、クラスに含まれるフィールドの形式を保持する。本テーブルはクラスごとに作成される。
⇒　フィールドディスクリプタ：フィールドの形式
【００３１】
・　メソッドテーブル２０６：本テーブルはクラスに含まれるメソッドの情報を保持する。本テーブルはクラスごとに作成される。
⇒　メソッド名：該当クラスが持つメソッドの名前
⇒　アクセスフラグ：他クラスからの該当メソッドへのアクセス権
☆　ＰＵＢＬＩＣ：他クラスからアクセス可能
☆　ＰＲＩＶＡＴＥ：自クラスからのみのアクセスが可能
⇒　メソッドディスクリプタテーブルＰ：メソッドディスクリプタテーブルへのポインタ
【００３２】
・　メソッドディスクリプタテーブル２０７：本テーブルはクラスに含まれるメソッドの形式を保持する。本テーブルはクラスごとに作成される。
⇒　メソッドディスクリプタ：メソッドの引数、戻り値の形式
【００３３】
・　インタフェーステーブル２０８：本テーブルはクラスが実装しているインタフェースの情報を保持する。本テーブルはクラスごとに作成される。
⇒　インタフェース名
☆　該当クラスが実装（Ｊａｖａ（登録商標）におけるｉｍｐｌｅｍｅｎｔ）するインタフェースの名前
【００３４】
なお、図２中の２０８はインタフェーステーブルである。
【００３５】
（１−２）新プログラム管理テーブル１２１２
図３は、管理データベース１２１０に搭載される新プログラム管理テーブル１２１２のデータ構造例である。
【００３６】
以下に各テーブルおよびレコードの詳細を説明する（図３における図２との差分となる箇所のみ説明する。）。
【００３７】
・　クラステーブル３０３
⇒　投入状態：図３で示す、新プログラムの状態遷移図で示される、該当クラスの状態
【００３８】
（１−３）置換履歴管理テーブル１２１３
図４は、管理データベース１２１０に搭載される置換履歴管理テーブル１２１３のデータ構造例である。
【００３９】
以下にテーブルおよびレコードの詳細を説明する。
【００４０】
・　置換履歴管理テーブル１２１３：本テーブルは投入された新プログラムの置換処理の履歴を保持する。
⇒　番号：置き換えされた処理順につけられる番号
⇒　パッケージ名およびクラス名：投入した新プログラムのパッケージ名とクラス名
⇒　投入日時：置換処理が完了したときの日時
⇒　クラスバージョン：新プログラムのクラス毎のバージョン
⇒　最終状態：置換処理が完了したときの最終状態（後述図６で示す。Ｓｕｃｃｅｓｓ／Ａｂｏｒｔ／Ｕｎｓｕｃｃｅｓｓｆｕｌ／ｆａｉｌｅｄのうちのどれか）
【００４１】
（２）メソッド管理テーブル１１２０のデータ構造例
次に、メソッド管理テーブル１１２０のデータ構造例を示す。
【００４２】
従来のメソッド管理テーブルは、Ｊａｖａ（登録商標）仮想マシン１１０上のメソッドエリア１１１０に配置されている呼び出し元クラス１１１１のメソッドを実行中、呼び出し先クラスのメソッドを呼び出す必要が生じた場合、呼び出し先メソッドのアドレスを取得するため　に使われていたテーブルであり、このテーブル自身はＪａｖａ（登録商標）仮想マシン１１０が管理していた。
【００４３】
本発明では、呼び出し先メソッドのアドレスを応答する機能は変わらないが、そのデータ構造を変えることで本システムの動作が可能となる。
【００４４】
図５は、メソッド管理テーブルのデータ構造例である。
以下に各テーブルおよびレコードの詳細を説明する。
【００４５】
・　パッケージテーブル５０２
⇒　パッケージ名：該当クラスを持つパッケージ名、もっていなければデフォルトとなる。
⇒　クラステーブルＰ：クラステーブルへのポインタ
【００４６】
・　クラステーブル５０３：　本テーブルはパッケージごとに作成される。
⇒　クラス名：該当クラスの名前
⇒　メソッドテーブルＰ：メソッドテーブルへのポインタ
⇒　スーパークラス：該当クラスが継承するスーパークラス名
【００４７】
・　メソッドテーブル５０４：　本テーブルはクラスごとに作成される。
⇒　メソッド名：該当クラスが持つメソッドの名前
⇒　現アドレス：現在動作している既存プログラムのメソッドのメモリ上のアドレス
⇒　新アドレス：新プログラムが読み込まれたときのメモリ上の新アドレス。新プログラムがない場合はＮＵＬＬである。
【００４８】
なお、図５中の５０１は、クラスローダテーブルである。
【００４９】
（３）新プログラムにおけるクラスの状態遷移図
新プログラムの初期不良などを考慮し、新プログラムへの変更後、不具合が生じたときに既存プログラムへのロールバックを自動的に行うために一定の監視期間をもつことが考えられる。この実現のために、新プログラムのＪａｖａ（登録商標）仮想マシンでの状態を複数考える。
【００５０】
以下に、新プログラムがとりうる状態遷移の例を示す。
【００５１】
図６は、新プログラムにおけるクラスの状態遷移例を図に示したものである。
【００５２】
以下に各状態の時にとりうる状況と遷移が発生する要因を説明する。
【００５３】
・　Ｉｎｉｔｉａｌ６０１：初期状態として、保守者が新プログラムをＪａｖａ（登録商標）仮想マシン内に一時的にロードした状態を示す。この時点ではまだ新プログラムは動作しておらず、既存プログラムの運用中であることを示す。
・　Ｐｒｏｇｒｅｓｓ６０２：保守者からの置換処理開始指示を契機に本状態に遷移する。既存プログラムのクラスと新プログラムのクラスの構造を比較中もしくは、置き換え処理中であることを示す。
・　Ｓｕｐｅｒｖｉｓｅ６０３：前記Ｐｒｏｇｒｅｓｓ状態における処理が完了したことを契機に本状態に遷移する、新プログラムの動作を開始しているが、既存プログラムへ復帰可能な状態であることを示す。
・　Ｃｏｍｍｉｔ６０４：保守者からの監視終了指示を契機に本状態に遷移する。管理テーブルおよびＪａｖａ（登録商標）仮想マシン内から、既存プログラムの情報を消去する処理中を示す。この状態以降からは既存プログラムへの復帰はできない。
・　Ｓｕｃｃｅｓｓ６０５：監視終了処理が完了し、新プログラムでの動作を継続している状態である。
【００５４】
・　Ｒｏｌｌｂａｃｋ６０６：Ｐｒｏｇｒｅｓｓ状態もしくはＳｕｐｅｒｖｉｓｅ状態のときに、なんらかの異常（新プログラムの動作バグ）によりＪａｖａ（登録商標）仮想マシンから異常が通知された場合、もしくは保守者から置換処理中止が指示されたことを契機に本状態に遷移する。新プログラムから、既存プログラムへの復帰処理中であることを示す。
・　Ａｂｏｒｔ６０７：保守者による置換処理中止指示によって開始された、前記ＲｏｌｌＢａｃｋ状態から復帰処理が完了した場合に本状態に遷移する。
・　Ｕｎｓｕｃｃｅｓｓｆｕｌ６０８：置換処理中の障害発生によって開始された前記ＲｏｌｌＢａｃｋ状態から復帰処理が完了した場合、もしくは、既存プログラムと新プログラムの比較チェックを通過しなかった場合に本状態に遷移する。
・　Ｆａｉｌｅｄ６０９：前記Ｒｏｌｌｂａｃｋ状態で行われた復帰処理が、なんらかの異常により失敗した場合、本状態に遷移する。
【００５５】
前記の前提をおいた上で、新プログラムへの置換を行う場合のフローを例示する。
【００５６】
（４）新プログラムへの置換例
（４−１）正常ルート例
図７は、本発明を用いた場合の実施例として、新プログラムを置換する処理の流れの例を示したものである。
以下に流れを説明する。まず、図中の７０１は保守者を示す。７０２は制御装置であり、７１４は処理の終了を示す。
【００５７】
（ＳＴ１）保守者から、新プログラム名を指示して、「新プログラムロード指示」を制御装置に伝える。これが７０３にあたる。
（ＳＴ２）制御装置にてＳＴ１で指定した新プログラムを読み込むとともに、新プログラムに基づいて、新プログラム管理テーブル１２１２の初期化が行われる（後述する図１２参照）。これが７０４にあたる。
（ＳＴ３）新プログラム管理テーブル１２１２の初期化が完了したことが保守者に通知される。これが７０５にあたる。
（ＳＴ４）保守者からＳＴ１で指定した新プログラム名を指定して、「置換開始処理指示」を制御装置に伝える。これが７０６にあたる。
（ＳＴ５）制御装置にて新プログラムと既存プログラムの比較チェックが行われる（後述する図１３参照）。これが７０７にあたる。
（ＳＴ６）制御装置にて新プログラムの置き換え処理が行われる（後述する図１４参照）。これが７０８にあたる。
【００５８】
（ＳＴ７）置換処理開始が完了したことが保守者に通知される。これが７０９にあたる。
（ＳＴ８）保守者側では一定期間、制御装置を監視する。これが７１０にあたる。
（ＳＴ９）保守者からＳＴ１で指定した新プログラム名を指定して、「監視終了指示」を制御装置に伝える。これが７１１にあたる。
（ＳＴ１０）制御装置にて監視終了処理が行われる（後述する図１５参照）。これが７１２にあたる。
（ＳＴ１１）監視終了処理が完了したことが保守者に通知される。これが７１３にあたる。
【００５９】
（４−２）既存プログラムと新プログラムの比較ＮＧ
図８は、本発明を用いた場合の実施例として、新プログラムの置換処理において、既存プログラムと新プログラムの比較チェックＮＧの場合の流れの例を示したものである。ここで８０１、８０２、８０９は図７中と同様である。
以下に流れを説明する。
【００６０】
（ＳＴ１）〜（ＳＴ５）は（４−１）と同じ。図中の８０３から８０７の説明も同様なのでここでは省く。
（ＳＴ６）（ＳＴ５）の処理の結果がＮＧであったため、比較結果ＮＧが保守者に通知される。これが８０８にあたる。
【００６１】
（４−３）新プログラムの置換処理中の異常発生による中断又は保守者から中止を指示した場合
図９は、本発明を用いた場合の実施例として、新プログラムの置換処理中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示したものである。図中の９０１、９０２、９１４は、図７と同様である。
以下に流れを説明する。
【００６２】
（ＳＴ１）〜（ＳＴ６）は（４−１）と同じ。９０３から９０８は図７中と同様の説明となる。
（ＳＴ７）置換処理中になんらかの異常が発生したことが保守者に伝えられる。これが９０９にあたる。もしくは（９１０）、保守者からの「置換処理中断指示」が制御装置に伝えられる。これが９１１にあたる。
（ＳＴ８）制御装置にて中断処理が行われる（後述する図１６参照）。これが９１２にあたる。
（ＳＴ９）中断処理が正常に完了した場合は中断処理完了通知　もしくは　中断処理がなんらかの異常により失敗した場合は中断処理失敗通知が保守者に通知される。これが９１３にあたる。
【００６３】
（４−４）新プログラムの監視中の異常発生による中断又は保守者から中止を指示した場合
図１０は、本発明を用いた場合の実施例として、新プログラムの監視中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示したものである。図中の１００１、１００２、１０１６は図７中同様である。
以下に流れを説明する。
【００６４】
（ＳＴ１）〜（ＳＴ８）は（４−１）と同じ。つまり図中の１００３から１０１０の説明も同様である。
（ＳＴ９）監視中になんらかの異常が発生したことが保守者に伝えられる。これが１０１１にあたる。もしくは（１０１２）、保守者からの「置換処理中断指示」が制御装置に伝えられる。これが１０１３にあたる。
（ＳＴ１０）制御装置にて中断処理が行われる（後述する図１６参照）。これが１０１４にあたる。
（ＳＴ１１）中断処理が正常に完了した場合は中断処理完了通知　もしくは　中断処理がなんらかの異常により失敗した場合は中断処理失敗通知が保守者に通知される。これが１０１５にあたる。
【００６５】
図１１は、本発明を用いた場合の実施例として、各種情報参照（置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示）の流れの例を示したものである。図中の１１００１、１１００２は、図７中と同様である。以下に流れを説明する。
【００６６】
Ａ）置換履歴参照指示
（ＳＴ１）保守者から「置換履歴参照指示」を制御装置に伝える。これが１１００３にあたる。
（ＳＴ２）置換情報管理テーブルからデータ取得する（後述する図１７参照）。これが１１００４にあたる。
（ＳＴ３）置換履歴情報を保守者に返却する。これが１１００５にあたる。
【００６７】
Ｂ）新プログラム情報参照指示
（ＳＴ１）保守者から「新プログラム情報参照指示」を制御装置に伝える。これが１１００６にあたる。
（ＳＴ２）新プログラム管理テーブル１２１２からデータ取得する（後述する図１７参照）。これが１１００７にあたる。
（ＳＴ３）新プログラム情報を保守者に返却する。これが１１００８にあたる。
【００６８】
Ｃ）既存プログラム情報参照指示
（ＳＴ１）保守者から「既存プログラム情報参照指示」を制御装置に伝える。これが１１００９にあたる。
（ＳＴ２）既存プログラム管理テーブル１２１１からデータ取得する（後述する図１７参照）。これが１１０１０にあたる。
（ＳＴ３）既存プログラム情報を保守者に返却する。これが１１０１１にあたる。
【００６９】
次に、（４）で示した動作のさらに詳細を示す。
【００７０】
（６）動作の詳細
（６−１）新プログラム管理テーブル初期化の実施例
図１２は、本発明を用いた場合の実施例として、新プログラム管理テーブル初期化の実施例を示したものである。図中の番号による語句は図１の説明と同様である。以下に流れを説明する。
【００７１】
（ＳＴ１）保守者から新プログラム名を指定して「新プログラムロード指示」を制御装置１０に通知する。
（ＳＴ２）上記指示に基づき、保守機能部１２４０から新プログラムロード指示を置換管理部１２２０に通知する。
（ＳＴ３）置換管理部１２２０はクラスローダ部１１３０にＳＴ１で指令された新プログラムのロードを指示する。
（ＳＴ４）クラスローダ部１１３０は外部記憶装置３０より新プログラムをロードし、メソッド管理テーブル１１２０の該当パッケージの該当クラスの該当メソッドの新アドレスのフィールドに新プログラムのアドレスを書き込む。
【００７２】
（ＳＴ５）クラスローダ部１１３０はロードが完了したことを置換管理部１１２０に通知する。
（ＳＴ６）置換管理部１２２０は、新プログラムから、新プログラム管理テーブル１２１２を新規に作成する。クラステーブルの投入状態は「ｉｎｉｔｉａｌ」に設定する。他のデータはすべて新プログラムから導出する。
（ＳＴ７）置換管理部１２２０は新プログラムのロードが完了したことを保守機能部１２４０に通知する。
（ＳＴ８）保守機能部１２４０は新プログラム管理テーブル１２１２の初期化が完了したことを保守端末２０を通して保守者に通知する。
【００７３】
（６−２）新プログラムと既存プログラムの比較チェックの実施例
図１３は、本発明を用いた場合の実施例として、新プログラムと既存プログラムの比較チェックの実施例を示したものである。図中の番号による語句の説明は図１と同様である。以下に流れを説明する。
【００７４】
（ＳＴ１）保守者から置換先の新プログラム名を指定して「置換開始処理指示」を制御装置１０に伝え、保守機能部１２４０から置換開始処理の指示を置換管理部１２２０に通知する。
（ＳＴ２）置換管理部１２２０はファイル比較部１２３０にファイル比較開始処理を通知する。
【００７５】
（ＳＴ３）ファイル比較部１２３０にて、新プログラム管理テーブル１２１２のクラステーブルの投入状態を「ｐｒｏｇｒｅｓｓ」とする。その後、既存プログラム管理テーブル１２１１と新プログラム管理テーブル１２１２を以下のＳＴＥＰで比較する。
【００７６】
（ア）既存プログラム管理テーブル１２１１と新プログラム管理テーブルに格納されている全ての同名のパッケージおよび同名のクラスにおいて、以下の項目をチェックする。
▲１▼クラステーブルのアクセスフラグが既存プログラム管理テーブル１２１１と新プログラム管理テーブル１２１２で同じ値か
▲２▼クラステーブルのバージョンの値が、既存プログラムより新プログラムの値が大きいか
▲３▼既存プログラム管理テーブル１２１１のインタフェーステーブルのインタフェースの値およびその並びが、新プログラム管理テーブルの値と並びに含まれているか
▲４▼既存プログラム管理テーブル１２１１のフィールドテーブルのフィールド名およびアクセスフラグが新プログラム管理テーブルに含まれているか
▲５▼既存プログラム管理テーブル１２１１のフィールドディスクリプタテーブルの値が新プログラム管理テーブル１２１２に含まれているか
▲６▼既存プログラム管理テーブル１２１１のメソッドテーブルのメソッド名およびアクセスフラグが新プログラム管理テーブルに含まれているか
▲７▼既存プログラム管理テーブル１２１１のメソッドディスクリプタテーブルの値が新プログラム管理テーブル１２１２に含まれているか
【００７７】
（イ）上記チェックに全てＯＫであれば比較結果をＯＫとし、ひとつでもＮＧが存在する場合は比較結果をＮＧとする。
【００７８】
（ＳＴ４）比較結果を置換管理部１２２０に返却する。
（ＳＴ５）ＳＴ４の結果、ＯＫであれば置き換え処理（後述図１４参照）に移る。ＮＧの場合は、新プログラム管理テーブル１２１２の全クラスの投入状態を「Ｕｎｓｕｃｃｅｓｓｆｕｌ」にし、置換履歴管理テーブル１２１３に新プログラム管理テーブル１２１２の情報を以下のようにコピーし、新プログラム管理テーブル１２１２を消去する。
【００７９】
（ア）パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル１２１３の「パッケージおよびクラス名」にコピーする。
（イ）新プログラム管理テーブル１２１２のクラスバージョンをクラス毎に置換履歴管理テーブル１２１３の「クラスバージョン」にコピーする。
（ウ）クラス毎に置換履歴管理テーブル１２１３の最終状態を「Ｕｎｓｕｃｃｅｓｓｆｕｌ」とする。
（エ）この時点の日時情報を置換履歴管理テーブル１２１３の投入日時に入力する。
（オ）クラス毎にレコード通番を入力する。
【００８０】
（ＳＴ６）置換管理部１２２０は保守機能部１２４０にファイル比較結果がＮＧであることを返却する。
（ＳＴ７）保守機能部１２４０は保守端末２０にファイル比較結果がＮＧであることを通知する。
【００８１】
（６−３）新プログラムへの置換処理の実施例
図１４は、本発明を用いた場合の実施例として、新プログラムへの置換処理の実施例を示したものである。図中の番号による語句は図１の説明と同様である。
以下に流れを説明する。
【００８２】
（ＳＴ１）制御装置１０にて置換先の新プログラム名を指定して置き換え処理が通知され、ファイル比較部１２３０からファイル比較処理が正常に完了したことが返却されたことを契機に、メソッド管理テーブル１１２０の現アドレスの値と新アドレスの値を交換する。
（ＳＴ２）置換管理部１２２０は、新プログラム管理テーブル１２１２のクラステーブルの投入状態を「ｓｕｐｅｒｖｉｓｅ」とする。
（ＳＴ３）置換管理部１２２０は、保守機能部１２４０に置換処理が正常に終了したことを通知する。
（ＳＴ４）保守機能部１２４０は保守端末２０に置換処理が正常に終了したことを通知する。
【００８３】
（６−４）新プログラムへ監視終了処理の実施例
図１５は、本発明を用いた場合の実施例として、新プログラムの監視終了処理の実施例を示したものである。図中の番号による語句は、図１と同様である。
以下に流れを説明する。
【００８４】
（ＳＴ１）保守者から新プログラム名を指定して「監視終了指示」を制御装置１０に伝える。
（ＳＴ２）保守機能部１２４０から置換管理部１２２０に「監視終了指示」が通知される。
（ＳＴ３）置換管理部１２２０は新プログラム管理データベース１２１０のクラステーブルの投入状態を「Ｓｕｃｃｅｓｓ」とする。その後、新プログラム管理テーブル１２１２のデータを既存プログラム管理テーブル１２１１にマージする。その後、置換履歴管理テーブル１２１３に新プログラム管理テーブル１２１２の情報を以下のようにコピーし、新プログラム管理テーブル１２１２を消去する。
【００８５】
（ア）パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル１２１３の「パッケージおよびクラス名」にコピーする。
（イ）新プログラム管理テーブル１２１２のクラスバージョンをクラス毎に置換履歴管理テーブル１２１３の「クラスバージョン」にコピーする。
（ウ）クラス毎に置換履歴管理テーブル１２１３の最終状態を「Ｓｕｃｃｅｓｓ」とする。
（エ）この時点の日時情報を置換履歴管理テーブル１２１３の投入日時に入力する。
（オ）クラス毎にレコード通番を入力する。
【００８６】
（ＳＴ４）置換管理部１２２０から保守機能部１２４０に監視終了処理が完了したことを通知する。
（ＳＴ５）保守機能部１２４０から保守端末２０に監視終了処理の完了通知が通知される。
【００８７】
（６−５）新プログラムの置換処理中断処理の実施例
図１６は、本発明を用いた場合の実施例として、新プログラムへ置換処理中
断処理の実施例を示したものである。図中の番号による語句の説明は、図１と同様である。
以下に流れを説明する。
【００８８】
（ＳＴ１−１）保守者からの「置換処理中断指示」が保守機能部１２４０を経由して置換管理部１２２０に通知される。
（ＳＴ１−２）もしくは、置換処理中にメソッドエリア１１１０に格納されているクラスにて、なんらかの異常が発生したことが置換処理部に通知される。
（ＳＴ１−３）ＳＴ１−１もしくはＳＴ１−２を契機として、置換管理部１２２０は新プログラム管理データベース１２１０のクラステーブルの投入状態を「ＲｏｌｌＢａｃｋ」とする。
【００８９】
（ＳＴ２）メソッド管理テーブル１１２０の現アドレスの値と新アドレスの値を交換する（前ＳＴＥＰの段階では現アドレスのエリアに新アドレスの値が、新アドレスのエリアに現（旧）アドレスの値が格納されているため、本ＳＴＥＰによりそれが元に戻る。）。
【００９０】
（ＳＴ３）置換管理部１２２０は新プログラム管理データベースのクラステーブルの投入状態を「ｕｎｓｕｃｃｅｓｓｆｕｌ」とする。その後、置換履歴管理テーブル１２１３に新プログラム管理テーブル１２１２の情報を以下のようにコピーする。
【００９１】
（ア）パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル１２１３の「パッケージおよびクラス名」にコピーする。
（イ）新プログラム管理テーブル１２１２のクラスバージョンをクラス毎に置換履歴管理テーブル１２１３の「クラスバージョン」にコピーする。
（ウ）クラス毎に置換履歴管理テーブル１２１３の最終状態を「Ｕｎｓｕｃｃｅｓｓｆｕｌ」とする。
（エ）この時点の日時情報を置換履歴管理テーブル１２１３の投入日時に入力する。
（オ）クラス毎にレコード通番を入力する。
【００９２】
（ＳＴ４）置換管理部１２２０は保守機能部１２４０に中断処理完了通知を通知する。
（ＳＴ５）保守機能部１２４０は中断処理完了通知を保守端末２０に通知する。
【００９３】
（ＳＴ６）ＳＴ１−１からＳＴ５までのＳＴＥＰの中で何らかの障害が発生した場合は、以下のＳＴＥＰとする。
【００９４】
（カ）置換管理部１２２０は新プログラム管理データベースのクラステーブルの投入状態を「ｆａｉｌｅｄ」とする。その後、置換履歴管理テーブル１２１３に新プログラム管理テーブル１２１２の情報を以下のようにコピーし、新プログラム管理テーブル１２１２を消去する。
【００９５】
▲１▼パッケージテーブルの「パッケージ名」とクラステーブルの「クラス名」をあわせ、クラス毎に置換履歴管理テーブル１２１３の「パッケージおよびクラス名」にコピーする。
▲２▼新プログラム管理テーブル１２１２のクラスバージョンをクラス毎に置換履歴管理テーブル１２１３の「クラスバージョン」にコピーする。
▲３▼クラス毎に置換履歴管理テーブル１２１３の最終状態を「ｆａｉｌｅｄ」とする。
▲４▼この時点の日時情報を置換履歴管理テーブル１２１３の投入日時に入力する。
▲５▼クラス毎にレコード通番を入力する。
【００９６】
（キ）置換管理部１２２０は保守機能部１２４０に中断処理失敗通知を通知する。
（ク）保守機能部１２４０は中断処理失敗通知を保守端末２０に通知する。
【００９７】
（７）情報参照の詳細
図１７は、各種情報参照（置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示）の実施例を示したものである。図中の番号による語句の説明は、図１と同様である。
【００９８】
（ＳＴ１）保守者から「置換履歴参照指示」もしくは「新プログラム情報参照指示」、もしくは「既存プログラム情報参照指示」を制御装置１０に伝える。
【００９９】
（ＳＴ２）保守機能部１２４０は、指示毎にそれぞれ以下の処理を行う。
（ア）置換履歴参照指示の場合、置換履歴管理テーブル１２１３の情報を取得する。
（イ）新プログラム情報参照指示の場合、新プログラム管理テーブル１２１２の情報を取得する。
（ウ）既存プログラム情報参照指示の場合、既存プログラム管理テーブル１２１１の情報を取得する。
【０１００】
（ＳＴ３）前ＳＴＥＰにてのべた処理にて保守機能部１２４０は管理データベース１２１０から情報を取得する。
（ＳＴ４）保守機能部１２４０は管理データベース１２１０から取得した情報を保守者に返却する。
【０１０１】
上述の実施形態において、その処理を行うプログラムをアプリケーションソフトとして、ＣＤ−ＲＯＭ等の記憶媒体に格納しておいてもよい。このようにすれば、ＣＤ−ＲＯＭ等の可搬型記録媒体にプログラム等を格納して売買したり、携帯することができるようになる。
【０１０２】
【効果の発明】
以上説明したように、本発明によれば、運用中のシステムにプログラムの追加・変更を行うことができるという効果がある。
【０１０３】
また、追加プログラムにて障害が発生した場合に、元の状態に復帰することができるオブジェクト管理装置、および追加プログラムの投入時に追加プログラムと既存プログラムのファイル構造を比較し、オブジェクトの型定義に差分がないことを確認することができるオブジェクト管理装置を提供することが可能となる効果がある。
【図面の簡単な説明】
【図１】本発明の実施例を示すシステム構成例図である。
【図２】管理データベースに搭載される、既存プログラム管理テーブルのデータ構造例図である。
【図３】管理データベースに搭載される、新プログラム管理テーブルのデータ構造例図である。
【図４】管理データベースに搭載される、置換履歴管理テーブルのデータ構造例図である。
【図５】メソッド管理テーブルのデータ構造例図である。
【図６】新プログラムにおけるクラスの状態遷移図である。
【図７】本発明を用いた場合の実施例として、新プログラムを置換する処理の流れの例を示した図である。
【図８】本発明を用いた場合の実施例として、新プログラムの置換処理において、既存プログラムと新プログラムの比較チェックＮＧの場合の流れの例を示した図である。
【図９】本発明を用いた場合の実施例として、新プログラムの置換処理中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示した図である。
【図１０】本発明を用いた場合の実施例として、新プログラムの監視中なんらかの異常発生により中断もしくは保守者より中止を指示した場合の流れの例を示した図である。
【図１１】本発明を用いた場合の実施例として、各種情報参照（置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示）の流れの例を示した図である。
【図１２】本発明を用いた場合の実施例として、新プログラム管理テーブル初期化の実施例を示した図である。
【図１３】本発明を用いた場合の実施例として、新プログラムと既存プログラムの比較チェックを示す図である。
【図１４】本発明を用いた場合の実施例として、新プログラムへの置換処理の実施例を示した図である。
【図１５】本発明を用いた場合の実施例として、新プログラムへ監視終了処理の実施例を示した図である。
【図１６】本発明を用いた場合の実施例として、新プログラムへ置換処理中断処理の実施例を示した図である。
【図１７】各種情報参照（置換履歴参照指示、新プログラム情報参照指示、既存プログラム情報参照指示）の実施例を示した図である。
【符号の説明】
１０　制御装置
１１０　Ｊａｖａ（登録商標）仮想マシン
１１１０　メソッドエリア
１１１１　呼び出し元クラス
１１１２　呼び出し先クラス（旧）、呼び出し先クラス（新）
１１２０　メソッド管理テーブル
１１３０　クラスローダ部
１２０　オブジェクト管理機能
１２１０　管理データベース
１２１１　既存プログラム管理テーブル
１２１２　新プログラム管理テーブル
１２１３　置換履歴管理テーブル
１２２０　置換管理部
１２３０　ファイル比較部
１２４０保守機能部
２０　保守端末
３０　外部記憶装置
３１０　ベースプログラム
３２０　新プログラム
２０１、３０１、５０１　クラスローダテーブル
２０２、３０２、５０２　パッケージテーブル
２０３、３０３、５０３　クラステーブル
２０４、３０４　フィールドテーブル
２０５、３０５　フィールドディスクリプタテーブル
２０６、３０６、５０４　メソッドテーブル
２０７、３０７　メソッドディスクリプタテーブル
２０８、３０８　インタフェーステーブル
【図１】
2004126863.tif 000003
【図２】
2004126863.tif 000004
【図３】
2004126863.tif 000005
【図４】
2004126863.tif 000006
【図５】
2004126863.tif 000007
【図６】
2004126863.tif 000008
【図７】
2004126863.tif 000009
【図８】
2004126863.tif 000010
【図９】
2004126863.tif 000011
【図１０】
2004126863.tif 000012
【図１１】
2004126863.tif 000013
【図１２】
2004126863.tif 000014
【図１３】
2004126863.tif 000015
【図１４】
2004126863.tif 000016
【図１５】
2004126863.tif 000017
【図１６】
2004126863.tif 000018
【図１７】
2004126863.tif 000019