JP2001202248A - ソフトウェア・モジュール動的交換装置、ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換方法記録媒体 - Google Patents

ソフトウェア・モジュール動的交換装置、ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換方法記録媒体

Info

Publication number
JP2001202248A
JP2001202248A JP2000011473A JP2000011473A JP2001202248A JP 2001202248 A JP2001202248 A JP 2001202248A JP 2000011473 A JP2000011473 A JP 2000011473A JP 2000011473 A JP2000011473 A JP 2000011473A JP 2001202248 A JP2001202248 A JP 2001202248A
Authority
JP
Japan
Prior art keywords
class
application
core
exchange
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.)
Granted
Application number
JP2000011473A
Other languages
English (en)
Other versions
JP3986721B2 (ja
Inventor
Tomohisa Yamaguchi
智久 山口
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2000011473A priority Critical patent/JP3986721B2/ja
Priority to US09/635,795 priority patent/US6675381B1/en
Publication of JP2001202248A publication Critical patent/JP2001202248A/ja
Application granted granted Critical
Publication of JP3986721B2 publication Critical patent/JP3986721B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

(57)【要約】 【課題】 OS等のベーシック側からアプリケーション
・プログラムを止めないで、つまりデバイスを動作中に
も機能モジュールや、コアクラスの交換を可能にする。 【解決手段】 プログラム構成として、アプリケーショ
ン・モジュールとしてのアプリケーション・クラス15
またはアプリケーション・クラスを交換するコアクラス
16自体に、自身の更新を基本側に要求する交換要求ス
テップを設けたプログラムとし、各プログラムをロード
するプラットフォーム側に、この交換要求を受けて、対
応する新規バージョンをロードする代替コアクラス・ロ
ーダ19を備えて、このコアクラス・ローダを搭載する
ベースクラス18のプログラムに、新規バージョンをロ
ード後に、アプリケーションに動作を起動する開始ステ
ップを組み込んだ。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はネットワークに接続
されているデバイスで動作するアプリケーションの実行
に必要なモジュールを、同じくネットワークに接続され
ている遠隔の端末から交換するための、ソフトウェアモ
ジュールの交換方式に関するものである。
【0002】
【従来の技術】デバイスと端末がネットワークに接続さ
れていて、デバイス上のソフトウエアモジュールを端末
から交換する典型的な従来のシステム構成として、特開
平11−45174号公報に示されたものを図10に示
す。図において、111はデバイス本体、112は端
末、113はデバイス本体1と端末2が接続されている
ネットワーク、114はデバイス本体111上で動作す
るアプリケーション、120はアプリケーション114
を実行するためのプラットフォーム(OS)、115は
アプリケーション114の機能を実現するアプリケーシ
ョン・クラス(ファイルA,B,C)、116はアプリ
ケーション・クラス115の管理や交換を行うコアクラ
ス(コピーフィルタ)、117はアプリケーション・ク
ラス115のロードを行うアプリケーション・クラス・
ローダ、118はコアクラスの機能を実現するサブコア
モジュール、121はコアクラス116及びそこで使用
されている各サブコアモジュール118のロードを行う
コアクラス・ローダである。デバイス本体111で動作
するアプリケーション114のバージョンアップを行う
ために、アプリケーション・クラス115を新しいモジ
ュールに交換する場合、そのアプリケーション・クラス
115の交換はモジュール交換機能を持つコアクラス1
16にあるアプリケーション・クラス・ローダ117を
通してロードされ、交換が行われる。
【0003】以下に、上述した内容を図10に基づいて
具体的に説明する。まず、プラットフォーム120はア
プリケーション114を起動するために、コアクラス・
ローダ121を使用してコアクラス116とアプリケー
ション・クラス・ローダ117と各サブコアモジュール
118のロードを行い、その後コアクラス116を起動
する。起動されたコアクラス116はアプリケーション
114の機能を実行するために、アプリケーション・ク
ラス・ローダ117を使用して、アプリケーション・ク
ラス115をロードし、更に、その動作を開始させる。
アプリケーション・クラス115の交換を行う場合、コ
アクラス116は、各アプリケーション・クラス115
を停止させ、再びアプリケーション・クラス・ローダ1
17を使用して新しいアプリケーション・クラス115
をロードし、更にその動作を開始させる。このように、
アプリケーション・クラス・ローダ(リネーム部)がO
Sとは関係なく起動し、アプリケーション・クラスを交
換する場合が説明されているが、他の先行例ではOS側
からロードモジュールを(交換)起動するので、交換の
ためにはOSを一度、止めてから行うことが必要であ
る。
【0004】しかし上記のアプリケーション・クラス1
15の交換は、コアクラス116とその構成要素の一つ
であるアプリケーション・クラス・ローダ117を用い
て行うことができるが、コアクラス116の機能のバー
ジョンアップを行いたい場合、コアクラス116と、コ
アクラス116で使用するモジュールアプリケーション
・クラス・ローダ117及びサブコアモジュール118
はプラットフォーム(仮想OS)120にあるコアクラ
ス・ローダ121でロードされているために、プラット
フォーム120を再起動し直して、もう一度コアクラス
・ローダ121で新しいモジュール(コアクラス)がロ
ードされるか、またはプラットフォーム120でモジュ
ールの交換がサポートされる必要がある。通常はプラッ
トフォーム120でモジュールの交換がサポートされて
いないので、コアクラス116またはアプリケーション
・クラス・ローダ117を交換するためには、一度シス
テムを止めて、プラットフォームを再起動する必要があ
る。こうしてシステムを止めない範囲に交換限度を定め
ると、アプリケーション114でバージョンアップでき
るものはアプリケーション・クラス115のみとなり、
またはアプリケーション・クラス115の交換処理の起
動さえもコアクラス116の機能範囲内に制限されてし
まう。
【0005】
【発明が解決しようとする課題】以上のように従来の構
成では、機能モジュールの動作中に交換はできても、メ
インコアモジュールや機能モジュールローダの動作中の
交換はできないという課題があった。
【0006】本発明は上記の課題を解決しようとするも
ので、OS等のベーシック側からアプリケーション・プ
ログラムを止めないで、つまりデバイスを動作中にも機
能モジュールや、コアクラスの交換を可能にする。
【0007】
【課題を解決するための手段】この発明に係るソフトウ
ェア・モジュール動的交換装置は、アプリケーションを
搭載するデバイスでは、プログラム構成として、アプリ
ケーション・モジュールとしてのアプリケーション・ク
ラスまたはアプリケーション・クラスを交換するコアク
ラス自体に、自身の更新を基本側に要求する交換要求ス
テップを設けたプログラムとし、各プログラムをロード
するプラットフォーム側に、この交換要求を受けて、対
応する新規バージョンをロードするコアクラス・ローダ
を備えて、このコアクラス・ローダを搭載するベースク
ラスのプログラムに新規バージョンをロード後に、アプ
リケーションに動作を起動する開始ステップを組み込ん
だ。
【0008】また更に、デバイスには、外部からの新規
アプリケーション・モジュールまたは新規コアクラスを
受ける記憶部分を備えて、交換に先立って外部から交換
用の新規アプリケーション・モジュールまたは新規コア
クラスを記憶するようにした。
【0009】この発明に係るソフトウェア・モジュール
動的交換方法は、デバイス上にアプリケーション・プロ
グラム(以下アプリケーション)を展開して動作する構
成において、アプリケーション・モジュールとしてのア
プリケーション・クラスまたはアプリケーション・クラ
スを交換するコアクラス自体に、自身の更新を基本側に
要求する交換要求ステップと、各プログラムをロードす
るプラットフォーム側に、この交換要求を受けて、対応
する新規バージョンをロードするステップと、ロード後
に、アプリケーションに動作を起動する開始ステップを
備えた。
【0010】また更に、ロードするステップでは、交換
要求に基づいて、アプリケーション・モジュールと、コ
アクラスの双方を同時に交換するようにした。
【0011】また更に、交換要求は、デバイスが接続す
るインタフェースを通じてアプリケーションで検出する
ようにした。
【0012】この発明に係るソフトウェア・モジュール
動的交換方法記録媒体は、デバイス上にアプリケーショ
ン・プログラムを展開して動作する計算機に対して、ア
プリケーション・モジュールとしてのアプリケーション
・クラスまたはアプリケーション・クラスを交換するコ
アクラス自体に、自身の更新を基本側に要求する交換要
求ステップと、上記各プログラムをロードするプラット
フォーム側に、この交換要求を受けて、対応する新規バ
ージョンをロードするステップと、ロード後に、アプリ
ケーションに動作を起動する開始ステップを媒体に記載
した。
【0013】
【発明の実施の形態】実施の形態1.メインコアモジュ
ール等、アプリケーション側のモジュールまたはコアの
交換を仮想OS側からの処理によってのみ行うのではな
く、OS等の基本プログラム側に代わって擬似的に行う
手段(プログラム、ステップ)を挿入、組み込むこと
で、OS側を止めないで動的に交換を可能にする。文書
作成プログラムや、スプレッドシートのようにOSを一
旦止めて更新が可能なアプリケーションもあるが、オン
ライン機器、制御用機器組み込みのアプリケーションで
あると、いったんのOS等のベーシック側を停止するこ
とが望ましくない場合がある。
【0014】図1は本発明の実施の形態1におけるプロ
グラムの階層を説明する図である。図において新規な要
素は、コアクラスとそれに搭載されるクラスのロードと
起動を行うベースクラス18と、それに搭載し、コアク
ラス16及びアプリケーション・クラス・ローダ17等
をOSの動作中にOSに代わってロードする代替コアク
ラス・ローダである。その他の要素として、11はデバ
イス本体、12は端末、13はデバイス本体11と端末
12が接続されているネットワーク、14はデバイス本
体11上で動作するアプリケーション、15はアプリケ
ーション14の機能を実現するためのアプリケーション
・クラス、16はアプリケーション・クラス15および
アプリケーション・クラス15で使用されるクラス(図
示しない)の管理、交換およびアプリケーション・クラ
ス15への処理の開始を要求するコアクラス、17はア
プリケーション・クラス15およびアプリケーション・
クラス15で使用されるクラスのロードを行うアプリケ
ーション・クラス・ローダ、20はプラットフォームと
してのJavaVM、21は各種クラス(ベースクラス18お
よび代替コアクラス・ローダ19以外は図示しない)の
ロードを行うベースクラス・ローダである。本システム
ではプラットフォームとしてJavaを想定した場合につい
て記述するが、同じ動作をする他のプラットフォームを
使用してもよい。
【0015】なお、具体的にアプリケーション・クラス
を交換する場合の例として以下がある。アプリケーショ
ンの交換の場合にはデバイスの種類に対応するので、例
えば、 1−1)監視カメラ的には縦、横への方向変化およびズ
ームなどができるが、交換前の監視カメラ用制御アプリ
ケーションではズーム機能しかサポートしていないよう
な場合、このアプリケーションを交換することによって
縦、横への方向変更機能を追加する。(デバイスの機能
にアプリケーションが追いついていない場合)。また、
今までは監視カメラの映像は監視カメラ用制御アプリケ
ーションで圧縮率の低い方式で圧縮して配信していた
が、このアプリケーションを圧縮率の高い方式で圧縮で
きるアプリケーションと交換することによって監視カメ
ラの映像をビットレートを変えることなしに品質よく配
信できる、または同じ品質の映像を低ビットレートで配
信することができるようになる(デバイスの機能とは関
係しない)。 1−2)冷蔵庫用制御アプリケーションの温度調整機能
の部分をより効率よく行うことができるものに交換す
る。 1−3)自販機制御用アプリケーションで、今までは端
末側から自販機にアクセスすることによって、情報がと
れるようになっていたが、自販機側から端末に通知でき
る機能を追加したアプリケーションに変更することによ
って、例えば、商品がなくなりそうな場合にそのことを
通知したり、釣銭が切れた場合や、その日の売り上げな
どを通知できるようになる。
【0016】また、コアクラスを変換する場合の例とし
て以下がある。 2−1)今まではアプリケーション・クラスをロードす
る際には、一度デバイスにクラスのファイルをダウンロ
ードしてから交換を行っていたが、コアクラスのバージ
ョンアップと交換により、ネットワークを通して直接ク
ラスをロードできるようになれば、デバイスではクラス
のファイルを格納しておく分のリソースを節約できる。 2−2)アプリケーション・クラスの管理方式を変更し
たコアクラスのバージョンアップを行う。
【0017】以下、図2を用いてアプリケーション14
が起動するまでの処理について説明する。まず、アプリ
ケーション14を起動させるために、プラットフォーム
としてのJavaVM20がシステムクラス・ローダ21を使
用して、ベースクラス18をロードする。またベースク
ラス18で使用されている代替コアクラス・ローダ19
もロードする。さらにベースクラス18の起動用メソッ
ドを呼び出し、アプリケーション14を起動させる(ス
テップS1、以下ステップを省略)。この処理はJavaVM
20内で行われている処理なので、プラットフォーム依
存であるが、概要的には上述した処理が行われる。
【0018】ベースクラス・ローダ21でロードされた
クラスはJavaVM20を再起動しない限り再ロードされる
ことはないので、ベースクラス・ローダ21でロードさ
れたクラスは動的には交換を行うことができない。しか
し、ベースクラス18の機能は自分自身の交換を行わな
くても良いように、図3に示すように単純な機能しかな
い。図3は、図1のJavaVM20とコアクラス16の間に
新しく設けた単純機能のベースクラス18と代替コアク
ラス・ローダの具体構成を示す図である。特にS41、
S43と、S45、S46の処理を組み込んだ部分が重
要である。この例ではコアクラス16およびコアクラス
16で使用されるクラスのロードとコアクラス16への
処理の開始要求のみを行う。また、デバイスのOSに代
ってアプリケーション14からのアプリケーション更新
要求を受ける機能を持つが、この説明は後に更新動作で
説明する。次に、JavaVM20によって起動されたベース
クラス18は、代替コアクラス・ローダ19のインスタ
ンスを作成し(S2)、これを使用して、コアクラス1
6およびコアクラス16で使用されるクラスのロードを
行う(S3)。この例ではコアクラス16で使用される
クラスは、アプリケーション・クラス・ローダ17のみ
である。上記新規要素を構成することで、S2とS3の
ステップが余分にいることになるが、これは後の更新動
作のために有効なステップとなる。
【0019】以下にコアクラス16とコアクラスで使用
されるクラスのロード処理について、S3の詳細を図4
を用いて説明する。ベースクラスのロード処理について
は、プラットフォーム依存なので、ここではプラットフ
ォームとしてJavaを使用した場合のベースクラスのロー
ド処理について説明する。まず、代替コアクラス・ロー
ダ19がコアクラス16のバイトコードを取り出す際、
バイトコードをローカルから取り出すのか、それともリ
モートから取り出すのかを決定する(S4)。ローカル
かリモートかを判断する方法としては、クラス名はアプ
リケーション側で指定することができるので、例えば、
リモートにあるWebサーバからバイトコードを取り出す
ような場合、ロードするクラス名を“http://ホスト名/
クラス名”のように指定することによって行うことがで
きる。ロードされるバイトコードは実際には“クラス
名.class“というファイル名であるので、取り出す際に
は”http://ホスト名/クラス名“の最後に”.class“を
付けたURLで、目的とするバイトコードを提供するWebサ
ーバに要求することによって行う。この場合上記URLで
バイトコードを取れるようにバイトコードを提供するWe
bサーバを設定しておく必要がある。
【0020】次に代替コアクラス・ローダ19は既にバ
ージョンアップされたデータがローカルのバッファにフ
ァイルとして取り込まれている場合には、そのローカル
にあるファイルから(S5)、オンラインでリモートか
ら取り出す場合は、上述したようにHTTPを使用してネッ
トワーク経由でWebサーバからバイトコードを取り出す
(S6)。ここでリモートからの取り出しの場合にはUR
Lからクラス名の部分を取り出しておく(S7)。次
に、先ほど取り出したバイトコードをJavaVM20で用意
されているメソッドを使用してクラスに変換し(S
8)、これを、クラス名をキーとして格納し(S9)、
このクラスを要求もとに返す(S10)。これでS3は
終了する。
【0021】なお、格納しておいたクラスは、同じクラ
スに対して要求があった場合に、もう一度バイトコード
の取り出しを行うことなしにクラスを返すために使用す
る。これらの処理はリモートからバイトコードを取り出
す際にクラス名の前に“http://ホスト名/”を付けて代
替コアクラス・ローダ19に要求する以外は、Javaで通
常用いられる方法で行うことが出来る。さらに、JavaVM
20で用意されているバイトコードをクラスにするメソ
ッドを使用した際に、そのクラスで使用されるクラスの
ロードが要求されるので、上述した方法と同じようにク
ラスのロードを行う。ただし、このロード要求はJavaVM
20から要求されるので、クラス名の前にに“http://
ホスト名/”が付けられて指定されることはない。この
ため取り出すべきバイトコードがローカルにあるのかリ
モートにあるのかを判断することができないので、今ま
でにリモートから取り出したバイトコードがあるかをチ
ェックし(S11)、ある場合には、このリモートの位
置からバイトコードの取り出しを試みる。ここで取り出
しに成功したかのチェックを行い(S12)、もし取り
出しに失敗した場合にはローカルからバイトコードの取
り出しを行う。この処理をクラスの中で他のクラスが呼
ばれなくなるまで繰り返す。以上のようにクラスのロー
ド処理を行う。なおこの処理は以後に記述されるクラス
ロードにおいても同じ処理を行う。
【0022】次に、図2に戻り、ベースクラス18はコ
アクラス16のインスタンスを作成し、この作成したイ
ンスタンスに対してコアクラス16で定義されている処
理開始用メソッドを呼び出す(S13)。この後、ベー
スクラス18はコアクラス16への処理開始用メソッド
呼び出しに対する応答が返ってくるのを待ち続ける。ベ
ースクラス18では代替コアクラス・ローダ19でコア
クラス16およびコアクラス16で使用されるクラスを
ロードしたことにより、代替コアクラス・ローダ19で
ロードされたこれらのクラスは代替コアクラス・ローダ
19のインスタンスを再生成して、再ロードされること
により、クラスの交換が可能になる。クラスの再ロード
は上述したクラスのロード処理と同じ方法で行う。次
に、ベースクラス18によって開始されたコアクラス1
6は、アプリケーション・クラス・ローダ17のインス
タンスを作成し(S14)、これを使用して、アプリケ
ーション・クラス15およびアプリケーション・クラス
15で使用されるクラスのロードを行う(S15)。ロ
ード処理については代替コアクラス・ローダ19での処
理と同様である。
【0023】次に、コアクラス16はアプリケーション
・クラス15のインスタンスを作成し、この作成したイ
ンスタンスに対してアプリケーション・クラス15で定
義されている処理開始用メソッドを呼び出す(S1
6)。このメソッド呼び出しの際にパラメータとしてコ
アクラス16自身を設定しておく。これはコアクラス1
6およびコアクラス16で使用されるクラスのクラス交
換要求をアプリケーション・クラス15から受け取るた
めである。この後、コアクラス16はアプリケーション
・クラス15の処理開始用メソッド呼び出しに対する応
答が返ってくるのを待ち続ける。コアクラス16ではア
プリケーション・クラス・ローダ17でアプリケーショ
ン・クラス15およびアプリケーション・クラス15で
使用されるクラスをロードしたことにより、アプリケー
ション・クラス・ローダ17でロードされたこれらのク
ラスはアプリケーション・クラス・ローダ17のインス
タンスを再生成して、再ロードされることにより、クラ
スの交換が可能になる。クラスの再ロードは上述したク
ラスのロード処理と同じ方法で行う。次に、コアクラス
16によって開始されたアプリケーション・クラス15
はアプリケーション14で提供する機能の処理を行う。
この処理に関してはここでは関係ないので省略する。
【0024】以上がアプリケーション14の立ち上げま
での処理であり、以下に図5を用いて、重要であるOS
動作を止めないで行えるクラス交換処理について説明す
る。アプリケーション14で監視していて、モジュール
の交換要求があると、その内容によりアプリケーション
・クラスの交換であれば図2のS14へ、コアクラスの
交換であればS2へ割り込んで、以後の交換動作を行
う。クラスの交換は上述したように、アプリケーション
・クラス・ローダ17でロードされたアプリケーション
・クラス15およびアプリケーション・クラス15で使
用されるクラスと代替コアクラス・ローダ19でロード
されたコアクラス16およびコアクラス16で使用され
るクラスに対して行うことができる。そして、コアクラ
ス16レベルの交換であっても、上述のパラメータ設定
をしてコアクラス16がアプリケーション・クラス15
から受け取り、プラットフォームではなくてベースクラ
ス18に伝えることで、ベースクラス18の起動がかか
る。すなわち、新規に挿入したベースクラス18と代替
コアクラス・ローダ19がOSに代わる交換動作を行う
ことになる。
【0025】図6にアプリケーション・クラスの詳細な
構成例を示す。図6において、22は端末12からの要
求を受け取るための要求受付部、23は要求受付部22
で受け取った端末12からの要求がどのような要求であ
るかを調査する要求調査部、24は要求調査部23の調
査から得られた要求に応じたサービスの実行と現在実行
されているサービス数の管理等を行うサービス実行管理
部、25は端末12からの要求に応じたサービスを行う
各種サービス、26はクラスの交換処理を行うサービス
であるクラス交換サービス、27はクラス交換要求がど
のようなクラス交換であるかを調査するためのクラス交
換要求調査部、28はクラス交換要求のパラメータに新
しいクラスのバイトコードが含まれていた場合に、この
バイトコードをローカルにある古いバイトコードに上書
きするバイトコード保存部、29は端末12への応答を
返すための応答部、30はアプリケーション・クラス1
5またはコアクラス16にクラスの再ロードを要求する
ためにクラス再ロード要求を出すためのクラス再ロード
要求部、31はクラス再ロード要求を受け取り、アプリ
ケーション・クラス15およびアプリケーション・クラ
ス15で使用されるクラスの再ロードのための処理を行
うアプリケーション・クラス再ロード処理部である。
【0026】まず、アプリケーション・クラス15およ
びアプリケーション・クラス15で使用されるクラスを
交換する場合について説明する。アプリケーション・ク
ラス15は、端末12からの要求を要求受付部22を使
用して待っている(S17)。次に、端末12から要求
が送られてきたら、この要求を要求調査部23で調査す
る(S18)。ここで端末12がWebブラウザであり、
アプリケーション14がWebサーバであった場合には、
端末12からの要求としては図7のようになり、メソッ
ドとリクエストURIを調査することによってどのサービ
スが要求されているのかを選択することができる。例え
ばメソッドが“GET”で、リクエストURIが“/default.h
tml”であった場合は、Webサーバ上のルートにある“de
fault.html”というファイルの内容を返すサービスであ
るし、またメソッドに“POST”、リクエストURIに“/se
rvlet/ExchangeClass”と設定することによってクラス
の交換要求であるとすることができる。もちろん上記以
外の方法でリクエストを設定してもよい。次に、サービ
ス実行管理部24では、要求調査部23で上述したよう
な調査から得られた要求に応じたサービスを実行する。
サービスに関してはCGIプログラムであってもよいし、
サーブレットであってもかまわなく、サービスが実行で
きるようなものであればどのようなものでもかまわな
い。
【0027】この場合は要求としてクラス交換要求を想
定しているので、クラス交換サービス26を開始させる
(S19)。次に、クラス交換サービス26ではクラス
交換要求調査部27を使用して、さらにこのクラス交換
要求がアプリケーション・クラス15およびアプリケー
ション・クラス15で使用されるクラスの交換である
か、またはコアクラス16およびコアクラス16で使用
されるクラスの交換であるかを調査する(S20)。調
査方法としては上述したように端末からの要求がHTTP要
求であるような場合には、例えばアプリケーション・ク
ラス15の交換であれば、リクエストURIの部分を“/se
rvlet/ExchangeApplicationClass”とし、またコアクラ
ス16の交換であれば“/servlet/ExchangeCoreClass”
というように設定することによって行うことができる。
ここでは、調査した結果がアプリケーション・クラス1
5およびアプリケーション・クラス15で使用されるク
ラスの交換であるとする。次に、交換を行うクラスがロ
ーカルに存在するクラスである場合は、クラス交換要求
にパラメータとして交換するクラスの新しいバイトコー
ドを添付しておく。これも端末12からの要求がHTTP要
求である場合には、バイトコードをエンティティボディ
の部分に設定する。
【0028】次に、クラス交換サービス26では、この
新しいバイトコードを、バイトコード保存部28を使用
し、ローカルに存在する古いバイトコードに上書きする
(S21)。一方、交換するクラスがリモートに位置す
るクラスである場合には、クラスの交換を行いたいユー
ザが、リモートに位置する古いバイトコードを新しいバ
イトコードで上書きしておき、パラメータなしでクラス
交換要求を出す。次に、クラス交換サービス26では、
応答部29で端末12に応答を返す(S22)。上述し
たように、端末12との通信にHTTPを使用している場合
には図8に示す応答を返す。例えばこれまでの処理に成
功していて、これからクラスの交換を行うような場合に
は、ステータスコードに“200”、ヘッダに“Content-T
ype:text/plain”、メッセージボディに“これからクラ
ス交換を行います。”などを設定して、端末12に送
る。次に、クラス交換サービス26ではクラス再ロード
要求部30を使用し、アプリケーション・クラス15に
クラス再ロード要求を出し、自分自身の処理を終了させ
る。クラス再ロード要求としては、ただ単にメソッドの
呼び出しでもかまわないし、他の方法を使用してもかま
わない。ここではメソッド呼び出しとする。次に、アプ
リケーション・クラス15では、アプリケーション・ク
ラス再ロード処理部31で、このクラス再ロード要求を
受け取る。上述したようにクラス再ロード要求がメソッ
ドの呼び出しである場合は、アプリケーション・クラス
再ロード処理部がこのメソッドになる。
【0029】次に、アプリケーション・クラス15で
は、要求受付部22で行っている端末12からの要求受
付を停止するよう要求受付部22に要求する(S2
3)。この要求もただ単にメソッド呼び出しでもよい
し、他の方法を使用してもよい。次に、要求受付部23
では停止要求に基づき、端末12からの要求受付を停止
する。停止する方法としてはただ単に要求を待つループ
を抜けるだけで行うこともできるし、他の方法で停止し
てもよい。次に、アプリケーション・クラス15では、
サービス実行管理部24を使用して現在アプリケーショ
ン・クラス15上で動作している他のサービス25があ
る場合には、このサービスが終了するのを待つ(S2
4)。上述したように、アプリケーション14がWebサ
ーバである場合には、サービス25は端末12に応答を
返した後にサービスが終了する。次に、実行中のアプリ
ケーションのサービス25が全て終了したら、アプリケ
ーション・クラス15は、自分自身の処理を終了させ
る。
【0030】コアクラス16ではアプリケーション・ク
ラス15の処理開始用メソッドを呼び出した後、このメ
ソッド呼び出しに対する応答が返ってくるのを待ち続け
ているため、アプリケーション・クラス15の処理が終
了した場合、コアクラス16に制御が返ってくる。次
に、コアクラス16では、後述するコアクラス終了フラ
グをチェックし(S26)、このフラグが立っていなけ
れば、アプリケーション・クラス・ローダ17のインス
タンスを再生成して、この新たに作成したアプリケーシ
ョン・クラス・ローダ17のインスタンスを使用して、
アプリケーション・クラス15およびアプリケーション
・クラス15で使用されるクラスのロードを行う。もし
コアクラス終了フラグが立っていた場合の処理について
は、後述するコアクラス16およびコアクラス16で使
用されるクラスの交換で説明する。そして、アプリケー
ション14の起動処理と同様に、コアクラス16で、ア
プリケーション・クラス15のインスタンスを作成し、
この作成したインスタンスに対して、アプリケーション
・クラス15で定義されている処理開始用メソッドを呼
び出し、また処理開始用メソッド呼び出しに対する応答
が返ってくるのを待ち続ける。このようにしてアプリケ
ーション・クラス15およびアプリケーション・クラス
15で使用されるクラスの交換を行う。
【0031】次に、もう1つの重要な動作であるコアク
ラス16およびコアクラス16で使用されるクラスを交
換する場合について説明する。各処理に関しては特に記
述がない限り、アプリケーション・クラス15およびア
プリケーション・クラス15で使用されるクラスを交換
する場合で説明した方法と同じである。まず、アプリケ
ーション・クラス15は、端末12からの要求を要求受
付部22を使用して待っている(S17)。端末12か
ら要求が送られてきたら、要求調査部23で調査する
(S18)。次に、サービス実行管理部24では、この
場合は要求としてクラス交換要求であるので、クラス交
換サービス26を開始させる(S19)。次に、クラス
交換サービス26ではクラス交換要求調査部27を使用
して、アプリケーション・クラス15レベルの交換であ
るか、またはコアクラス16およびコアクラス16で使
用されるクラスの交換であるかを調査する(S20)。
ここでは、調査した結果がコアクラス16およびコアク
ラス16で使用されるクラスの交換であるとする。次
に、交換を行うクラスがローカルに存在するクラスであ
る場合は、クラス交換要求にパラメータとして交換する
クラスの新しいバイトコードを添付しておき、クラス交
換サービス26では、この新しいバイトコードを、ロー
カルに存在する古いバイトコードに上書きする(S2
1)。交換するクラスがリモートに位置するクラスであ
る場合には、ユーザがリモートに位置する古いバイトコ
ードを新しいバイトコードで上書きしておき、パラメー
タなしでクラス交換要求を出す。クラス交換サービス2
6では、応答部29で端末12に応答を返した後(S2
2)、上述のアプリケーション・クラス15レベルの交
換と同様、自分自身の処理を終了させる。
【0032】図9にコアクラス16の構成を示す。図9
において、32はクラス再ロード要求を受け取り、コア
クラス16およびコアクラス16で使用されるクラスの
再ロードのための処理を行うコアクラス再ロード処理
部、33はアプリケーション・クラス15にクラスの再
ロードを要求するためにクラス再ロード要求を出すため
のアプリケーション・クラス再ロード要求部である。コ
アクラス16では、コアクラス再ロード処理部32で、
クラス再ロード要求を受け取る。上述したようにクラス
再ロード要求がメソッド呼び出しであった場合は、コア
クラス再ロード処理部がこのメソッドになる。次に、コ
アクラス16では、アプリケーション・クラス15が終
了した際に、コアクラス16自身も終了するようにコア
クラス終了フラグを立てる(S25)。次に、コアクラ
ス16では、アプリケーション・クラス再ロード要求部
33を使用してアプリケーション・クラス15にクラス
の再ロード要求を送る。上述したようにクラス再ロード
要求としては、ただ単にメソッドの呼び出してもかまわ
ないし、他の方法を使用してもかまわない。ここではメ
ソッド呼び出しとする。次に、アプリケーション・クラ
ス15では、アプリケーション・クラス再ロード処理部
31で、このクラス再ロード要求を受け取る。そして端
末12からの要求受付を停止するよう要求受付部22に
要求し(S23)、現在アプリケーション・クラス15
上で動作している他のサービス25がある場合には、こ
のサービスが終了するのを待つ(S24)。更に実行中
のアプリケーションのサービス25が全て終了したら、
アプリケーション・クラス15は、自分自身の処理を終
了させる。
【0033】コアクラス16では、アプリケーション・
クラス15の処理開始用メソッドを呼び出した後、この
メソッド呼び出しに対する応答が返ってくるのを待ち続
けているため、アプリケーション・クラス15の処理が
終了した場合、コアクラス16に制御が返ってくる。次
に、コアクラス16では、コアクラス終了フラグが立っ
ているかをチェックする(S26)。この場合上述した
ようにコアクラス再ロード処理部32でコアクラス終了
フラグを立てているので、コアクラス16自身の処理を
終了させる。ベースクラス18では、コアクラス16の
処理開始用メソッドを呼び出した後、このメソッド呼び
出しに対する応答が返ってくるのを待ち続けているた
め、コアクラス16の処理が終了した場合、ベースクラ
ス18に制御が返ってくる。即ちS26のチェックによ
り図2のS2に戻ることになる。そこで、もう1つの重
要な動作であるベースクラス18では、代替コアクラス
・ローダ19のインスタンスを再生成して、S3でこの
新たに作成した代替コアクラス・ローダ19のインスタ
ンスを使用して、コアクラス16およびコアクラス16
で使用されるクラスのロードを行う。そして、アプリケ
ーション14の起動処理と同様にコアクラス16のイン
スタンスを作成し、この作成したインスタンスに対し
て、コアクラス16で定義されている処理開始用メソッ
ドを呼び出し、また処理開始用メソッド呼び出しに対す
る応答が返ってくるのを待ち続ける。さらにコアクラス
16で上述したアプリケーション14の立ち上げ時と同
じ処理を行い、アプリケーション・クラス15を開始さ
せる。このようにしてコアクラス16およびコアクラス
16で使用されるクラスの交換を行う。以上のような方
式により、コアクラス16およびコアクラス16で使用
されるクラスの交換が行えるようになり、デバイス11
上のアプリケーション14の機能を構成するクラスの全
ての交換が可能になる。
【0034】
【発明の効果】以上のようにこの発明によれば、アプリ
ケーション側からの交換要求を受けて新規モジュールを
交換する代替コアクラス・ローダ、ベースクラスを備え
たので、OSを止めないでも、プラットフォーム側に代
わってコアクラスまたはアプリケーション・クラスを交
換できる効果がある。
【図面の簡単な説明】
【図1】 本発明の実施の形態1におけるプログラム構
造を示す図である。
【図2】 実施の形態1におけるアプリケーション起動
までの動作フロー図である。
【図3】 実施の形態1におけるベースクラスの内容の
具体例を示す図である。
【図4】 図2におけるS3の詳細動作フロー図であ
る。
【図5】 実施の形態1におけるモジュールの交換要求
に基づく動作を示すフロー図である。
【図6】 アプリケーション・クラスの詳細構成例を示
す図である。
【図7】 実施の形態1における端末からの交換要求の
フォーマット例を示す図である。
【図8】 実施の形態1における交換要求に対する端末
への応答フォーマット例を示す図である。
【図9】 コアクラスの構成例を示す図である。
【図10】 従来のモジュール交換を行う装置構成を示
す図である。
【符号の説明】
11 デバイス、12 端末、13 ネットワーク、1
4 アプリケーション、15 アプリケーション・クラ
ス、16 コアクラス、17 アプリケーション・クラ
ス・ローダ、18 ベースクラス、19 代替コアクラ
ス・ローダ、20 JavaVM(プラットフォー
ム)、21 ベースクラス・ローダ、22要求受付部、
23 要求調査部、24 サービス実行管理部、25
各種サービス、26 クラス交換サービス、27 クラ
ス交換要求調査部、28 バイトコード保存部、29
応答部、30 クラス再ロード部、31 アプリケーシ
ョン・クラス再ロード部、32 コアクラス再ロード処
理部、33 アプリケーション・クラス再ロード要求
部、S2 コアクラス・ローダのインスタンスの作成ス
テップ、S3 コアクラスとコアクラスで使用するクラ
スのロードステップ、S13コアクラスのインスタンス
の生成と開始指示ステップ、S14 アプリケーション
・クラス・ローダのインスタンス生成ステップ、S15
アプリケーション・クラスとアプリケーション・クラ
スで使用するクラスのロードステップ、S16 アプリ
ケーション・クラスのインスタンス生成と開始指示ステ
ップ、S18 端末からの要求調査ステップ、S18b
クラス交換の要求かの判断ステップ、S20b コア
クラス交換かの判断ステップ。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 アプリケーションを搭載するデバイスで
    は、 プログラム構成として、アプリケーション・モジュール
    としてのアプリケーション・クラスまたは該アプリケー
    ション・クラスを交換するコアクラス自体に、自身の更
    新を基本側に要求する交換要求ステップを設けたプログ
    ラムとし、 上記各プログラムをロードするプラットフォーム側に、
    上記交換要求を受けて、対応する新規バージョンをロー
    ドするコアクラス・ローダを備えて、該コアクラス・ロ
    ーダを搭載するベースクラスのプログラムに上記新規バ
    ージョンをロード後に、上記アプリケーションに動作を
    起動する開始ステップを組み込んだことを特徴とするソ
    フトウェア・モジュール動的交換装置。
  2. 【請求項2】 デバイスには、外部からの新規アプリケ
    ーション・モジュールまたは新規コアクラスを受ける記
    憶部分を備えて、交換に先立って外部から交換用の上記
    新規アプリケーション・モジュールまたは新規コアクラ
    スを記憶するようにしたことを特徴とする請求項1記載
    のソフトウェア・モジュール動的交換装置。
  3. 【請求項3】 デバイス上にアプリケーション・プログ
    ラム(以下アプリケーション)を展開して動作する構成
    において、 上記アプリケーション・モジュールとしてのアプリケー
    ション・クラスまたは該アプリケーション・クラスを交
    換するコアクラス自体に、自身の更新を基本側に要求す
    る交換要求ステップと、 上記各プログラムをロードするプラットフォーム側に、
    上記交換要求を受けて、対応する新規バージョンをロー
    ドするステップと、該ロード後に、上記アプリケーショ
    ンに動作を起動する開始ステップを備えたことを特徴と
    するソフトウェア・モジュール動的交換方法。
  4. 【請求項4】 ロードするステップでは、交換要求に基
    づいて、アプリケーション・モジュールと、コアクラス
    の双方を同時に交換するようにしたことを特徴とする請
    求項3記載のソフトウェア・モジュール動的交換方法。
  5. 【請求項5】 交換要求は、デバイスが接続するインタ
    フェースを通じてアプリケーションで検出するようにし
    たことを特徴とする請求項3記載のソフトウェア・モジ
    ュール動的交換方法。
  6. 【請求項6】 デバイス上にアプリケーション・プログ
    ラムを展開して動作する計算機に対して、 上記アプリケーション・モジュールとしてのアプリケー
    ション・クラスまたは該アプリケーション・クラスを交
    換するコアクラス自体に、自身の更新を基本側に要求す
    る交換要求ステップと、 上記各プログラムをロードするプラットフォーム側に、
    上記交換要求を受けて、対応する新規バージョンをロー
    ドするステップと、該ロード後に、上記アプリケーショ
    ンに動作を起動する開始ステップを媒体に記載したソフ
    トウェア・モジュール動的交換方法記録媒体。
JP2000011473A 2000-01-20 2000-01-20 ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体 Expired - Lifetime JP3986721B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000011473A JP3986721B2 (ja) 2000-01-20 2000-01-20 ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体
US09/635,795 US6675381B1 (en) 2000-01-20 2000-08-11 Software-module dynamic loader, a software-module dynamic loading method and a medium storing the software-module dynamic loading method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000011473A JP3986721B2 (ja) 2000-01-20 2000-01-20 ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体

Publications (2)

Publication Number Publication Date
JP2001202248A true JP2001202248A (ja) 2001-07-27
JP3986721B2 JP3986721B2 (ja) 2007-10-03

Family

ID=18539328

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000011473A Expired - Lifetime JP3986721B2 (ja) 2000-01-20 2000-01-20 ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体

Country Status (2)

Country Link
US (1) US6675381B1 (ja)
JP (1) JP3986721B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008135049A (ja) * 2003-08-01 2008-06-12 Kw-Software Gmbh 産業オートメーション用のcilコード・プログラムのオンライン修正
US8413133B2 (en) 2008-03-24 2013-04-02 Fujitsu Limited Software update management apparatus and software update management method

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281047B2 (en) * 2001-01-16 2007-10-09 Cognos Incorporated System and method for automatic provision of an application
US20020147971A1 (en) * 2001-02-15 2002-10-10 Adams James Andrew Object-oriented class loading system and method
US6971001B1 (en) * 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
US7073171B2 (en) * 2003-02-28 2006-07-04 Bea Systems, Inc. EJB implementation class loading with removed dependencies with ability to replace EJB implementation class without full redeployment
US7587708B2 (en) * 2004-07-20 2009-09-08 International Business Machines Corporation Method for testing converted source code
US7930693B2 (en) * 2005-04-04 2011-04-19 Cisco Technology, Inc. Method and system for accessing and launching a java based applet as a locally installed application
US7765537B2 (en) * 2005-11-21 2010-07-27 International Business Machines Corporation Profiling interface assisted class loading for byte code instrumented logic
CN103077033B (zh) * 2012-08-20 2016-08-24 南京南瑞继保电气有限公司 一种优化组态系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09292980A (ja) 1996-04-25 1997-11-11 N T T Data Tsushin Kk ファイル配布システム
US6175855B1 (en) * 1996-12-20 2001-01-16 Siemens Aktiengesellschaft Method for instantiating a class having different versions
US5974428A (en) * 1997-08-29 1999-10-26 International Business Machines Corporation Method and apparatus for class version naming and mapping
JPH11145174A (ja) 1997-11-10 1999-05-28 Sony Corp 半導体装置およびその製造方法
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6279030B1 (en) * 1998-11-12 2001-08-21 International Business Machines Corporation Dynamic JAVA™ class selection and download based on changeable attributes
CA2255042C (en) * 1998-11-30 2004-04-13 Leonard W. Theivendra Class loader
US6272674B1 (en) * 1998-12-14 2001-08-07 Nortel Networks Limited Method and apparatus for loading a Java application program
US6507946B2 (en) * 1999-06-11 2003-01-14 International Business Machines Corporation Process and system for Java virtual method invocation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008135049A (ja) * 2003-08-01 2008-06-12 Kw-Software Gmbh 産業オートメーション用のcilコード・プログラムのオンライン修正
US8413133B2 (en) 2008-03-24 2013-04-02 Fujitsu Limited Software update management apparatus and software update management method

Also Published As

Publication number Publication date
JP3986721B2 (ja) 2007-10-03
US6675381B1 (en) 2004-01-06

Similar Documents

Publication Publication Date Title
US20220094737A1 (en) Method, server and system for converging desktop application and web application
US8015560B2 (en) Apparatus and method for managing application in incorporated equipment
CN108959455B (zh) 单页Web应用实现方法、装置、计算机设备和存储介质
JP5052955B2 (ja) アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム
JP2003177989A (ja) 情報処理装置およびサーバ装置およびドライバ更新方法およびコンピュータが読み取り可能な記憶媒体およびプログラム
JP2004005419A (ja) インストール処理装置、処理方法及び記憶媒体ならびにプログラム
US7784048B2 (en) Mobile communication terminal and application control method
JP2004199577A (ja) 設定ファイルの統合編集方法および設定ファイル統合基盤
JP2001202248A (ja) ソフトウェア・モジュール動的交換装置、ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換方法記録媒体
CN113742105A (zh) 微服务框架的适配方法、设备和介质
US6981251B1 (en) Agent system for mobile agents, computer network and method for downloading an agent system from a host computer to a client computer of a computer network
US7860987B2 (en) Apparatus for providing service in response to user request and method therefor
CN114489847A (zh) 进程管理器的管控方法、系统、设备及存储介质
CN112540777A (zh) 一种支持动态读写nv参数的方法和终端
JP2002095071A (ja) ネットワークシステム及び機器制御方法
JP2004334679A (ja) 情報処理装置、情報処理装置のプログラム実行方式、情報処理装置のプログラム実行方式を記録した記憶媒体
CN101232398B (zh) 机架图共同显示的网管系统及应用
JP4004993B2 (ja) 遠隔制御方法、サーバ装置及び仮想マシンプログラム
JP4738556B2 (ja) 分散運用システムおよび記録媒体
JP2007011645A (ja) モジュール更新プログラム
JP2012212462A (ja) アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム
JP2019070884A (ja) 情報処理装置
JP2003259000A (ja) Ip−pbxにおけるip電話機サービス機能のバージョンアップ方式および方法
CN117931237A (zh) 软件升级方法、装置、智能电视设备及介质
JP4071678B2 (ja) バッチアプリケーション実行制御方法,バッチアプリケーション実行制御装置およびバッチアプリケーション実行制御プログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040514

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040608

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070608

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070711

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100720

Year of fee payment: 3