説明

画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラム

【課題】仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷を軽減できる画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供する。
【解決手段】画像処理装置100は、標準機能と標準機能を利用した拡張機能とが異なる仮想マシン21,21上で動作する装置であって、標準機能を実現する複数の動作モジュール30と、各仮想マシン21上で動作し、複数の動作モジュール30に対して共通の仮想マシン間通信を行う通信インタフェース部41,41と、を有し、通信インタフェース部40が、動作モジュールインタフェース実現部52を生成する生成手段51を有し、仮想マシン21,21それぞれに生成された一対の動作モジュールインタフェース実現部52,52を介して、仮想マシン間通信により、仮想マシン21上の動作モジュール30の実行を制御し、拡張機能を実現することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の仮想マシンが動作可能な画像処理装置に関し、特に、仮想マシン間で行うデータ通信により動作モジュールの実行を制御する技術に関するものである。
【背景技術】
【0002】
1台の物理コンピュータ上に、あたかもコンピュータが複数稼働しているかのような疑似システムを構築する仮想化技術は既に知られている。このような仮想化技術により実現される擬似的な情報処理システム環境(論理コンピュータ)を、仮想マシン(VM:Virtual Machine)と言う。
【0003】
単体の仮想マシンが構築されたシステムの場合には、何らかの原因で処理が停止してしまうと、システム全体が停止することになる。しかし、複数の仮想マシンが構築されたシステムの場合には、ある仮想マシンにおいて処理が停止したとしても、他の仮想マシンに影響しないため、システム全体が停止することなく、処理を継続できる。
【0004】
このような利点から、単体の仮想マシンが構築されたシステムを複数の仮想マシンが構築されたシステムに変更したい。そのためには、仮想マシン間でデータ通信が行えるように対応する必要がある。
【0005】
仮想マシン間でデータ通信を行う手段には、Java(登録商標:以下略)RMI(Java Remote Method Invocation:以下単に「RMI」と言う)通信が知られている。しかし、従来のシステムでは、RMI通信を行うインタフェース(以下「通信I/F」と言う)の追加・変更を行う場合に対応箇所が多く、開発作業が繁雑となる(開発作業負荷が増大する)問題点があった。
【0006】
そこで、例えば、特許文献1には、開発作業負荷の軽減を目的とし、仮想マシン間通信を行うサーバ再度Webアプリケーション開発において、複数の表示層とコンポーネント群を分離し、通信I/Fを少なくすることで、変更があった場合でも、少ない対応で済む開発支援装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の方法では、既存の通信I/FをRMI通信対応する場合、通信I/F自体の変更を行う必要がある。また、RMIコンパイラによりコンパイルを行う必要もある。
【0008】
既存の通信I/FをRMI通信対応する場合には、メソッドパラメータ(引数)の変更やException(例外)の追加など通信I/F自体の変更を行わなければならない。そのため、通信I/Fを利用している箇所(仮想マシン間で呼び出されるメソッド)を変更する必要がある。また、RMI通信によりリモートサーバオブジェクト上のメソッドを呼び出すクライアントは、実際にリモートオブジェクトのスタブ又はプロキシをリモートオブジェクトへの通路として利用する。そのため、スタブやプロキシを作成し直し、再度、コンパイル(リコンパイル)を行う必要がある。
【0009】
このように、従来の方法では、RMI通信対応の開発作業において、その負荷を十分に軽減できていなかった。
【0010】
本発明は上記従来技術の問題点を鑑み提案されたものであり、その目的とするところは、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷を軽減できる画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記目的を達成するため、本発明に係る画像処理装置は、当該画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する画像処理装置であって、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、前記通信インタフェース部が、前記仮想マシン上での機能実行要求を受け付ける受付手段と、前記仮想マシン間通信を行う通信手段と、前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段と、を有し、前記受付手段により、前記拡張機能の実行要求を受け付けると、前記通信手段による仮想マシン間通信により、前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする。
【0012】
また、上記目的を達成するため、本発明に係る画像処理装置は、前記生成手段が、Java(登録商標)オブジェクトのシリアライズ(直列化)により、各仮想マシンにおいて、前記仮想マシン間通信による前記動作モジュールのメソッド呼出が可能な同一インスタンスの動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする。
【0013】
このような構成によって、本発明に係る画像処理装置は、各仮想マシンにおいて、仮想マシン間通信を行う通信インタフェース部(サブセットモジュール)を動作させる。サブセットモジュールは、RMI通信を行う通信I/F(RMI通信I/F)が仮想マシン間で呼び出される動作モジュールと別途独立した構成となっている。また、サブセットモジュールは、RMI通信I/Fと動作モジュールとの間に介在し、動作モジュールのI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)を管理する機能(代理オブジェクト管理部)を有している。代理オブジェクトは、各仮想マシン上で動作する代理オブジェクト管理部により、各仮想マシンにおいてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。画像処理装置は、機能実行要求を受け付けた仮想マシン上で動作する代理オブジェクトから、RMI通信I/Fを介して、他の仮想マシン上で動作する代理オブジェクトを呼び出し、他の仮想マシンが有する動作モジュールに実行要求を行う。つまり、画像処理装置では、各仮想マシンに生成された一対の代理オブジェクトを介して、仮想マシン上の動作モジュールの実行を制御し、要求された機能を実現する。
【0014】
これによって、本発明に係る画像処理装置は、仮想マシン間で呼び出す動作モジュールのI/Fに変更が生じた場合であっても、RMI通信I/Fと動作モジュールとが分離されていることから、RMI通信I/Fを変更する必要がない(通信I/Fの隠蔽が可能となる)。また、画像処理装置は、仮想マシン間で呼び出す動作モジュールのI/Fを新たに追加する場合であっても、動作モジュールのI/Fを実現する代理オブジェクトを動的に生成する機能を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)。その結果、画像処理装置では、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。
【0015】
上記目的を達成するため、本発明に係る仮想マシン間の動作モジュール実行制御方法は、画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における仮想マシン間の動作モジュール実行制御方法であって、前記通信インタフェース部が、前記仮想マシン上での機能実行要求を受け付ける受付手順と、前記仮想マシン間通信を行う通信手順と、前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手順と、を有し、前記受付手順により、前記拡張機能の実行要求を受け付けると、前記通信手順による仮想マシン間通信により、前記機能実行要求を受け付けた仮想マシン上で、前記生成手順により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手順により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする。
【0016】
このような手順によって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、RMI通信I/Fが仮想マシン間で呼び出す動作モジュールと別途独立した構成において、動作モジュールのI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)を各仮想マシンで動的に生成し、機能実行要求を受け付けた仮想マシン上で動作する代理オブジェクトから、RMI通信I/Fを介して、他の仮想マシン上で動作する代理オブジェクトを呼び出し、他の仮想マシンが有する動作モジュールに実行要求を行うと言う動作を実現する。
【0017】
これによって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷を軽減可能な環境を提供できる。
【発明の効果】
【0018】
本発明によれば、RMI通信I/Fが仮想マシン間で呼び出す動作モジュールと別途独立した構成とし、動作モジュールのI/Fを実現する代理オブジェクトを各仮想マシンで動的に生成し、生成された一対の代理オブジェクトを介して、仮想マシン上の動作モジュールの実行を制御可能とすることで、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減される画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の第1の実施形態に係る画像処理装置のハードウェア構成例を示す図である。
【図2】本発明の第1の実施形態に係る複数の仮想マシンが構築されたシステム構成例を示す図である。
【図3】本発明の第1の実施形態に係る複数の仮想マシンが構築されたシステムのソフトウェア構成例を示す図である。
【図4】本発明の第1の実施形態に係るサブセットモジュールの機能構成例を示す図である。
【図5】本発明の第1の実施形態に係る第1仮想マシンでサブセットモジュールが起動された場合の処理手順例を示すシーケンス図である。
【図6】本発明の第1の実施形態に係る第2仮想マシンで機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。
【発明を実施するための形態】
【0020】
以下、本発明の好適な実施の形態(以下「実施形態」と言う)について、図面を用いて詳細に説明する。
【0021】
[第1の実施形態]
<ハードウェア構成>
図1は、本実施形態に係る画像処理装置100のハードウェア構成例を示す図である。
図1に示すように、画像処理装置100は、コントローラ110、操作パネル120、プロッタ130、及びスキャナ140などを備え、それぞれが相互にバスBで接続されている。
【0022】
操作パネル120は、表示部及び入力部を備えており、機器情報などの各種情報をユーザに提供したり、動作設定や動作指示などの各種ユーザ操作を受け付けたりする。プロッタ130は、画像形成部を備えており、用紙に出力画像を形成する。例えば、出力画像を形成する方式には、電子写真プロセスやインクジェット方式などがある。スキャナ140は、原稿を光学的に読み取り、読み取り画像を生成する。
【0023】
コントローラ110は、CPU(Central Processing Unit)111、記憶装置112、ネットワークI/F113、及び外部記憶I/F114などを備えており、それぞれが相互にバスBで接続されている。
【0024】
CPU111は、プログラムを実行することにより各種機能の実現や装置全体を制御する。また記憶装置112は、上記プログラムや各種データ(例えば「画像データ」)を格納し保持する。例えば、記憶装置112には、揮発性のメモリであるRAM(Random Access Memory)、不揮発性のメモリであるROM(Read Only Memory)、及び大容量の記憶領域を備えたHDD(Hard Disk Drive)などがある。RAMは、CPU111のワークエリア(プログラムやデータが一時的に読み出される記憶エリア)として機能する。ROMやHDDは、プログラムや各種データの格納先として用いられる。これにより、画像処理装置100では、CPU111がROMに格納されたプログラムをRAM上に読み出し、プログラムを実行する。
【0025】
ネットワークI/F113は、画像処理装置100をネットワークなどの所定のデータ伝送路に接続するためのインタフェースである。外部記憶I/F114は、外部記憶装置にあたる記録媒体114aを接続するためのインタフェースである。例えば、外部記憶装置には、SDメモリカード(SD Memory Card)やUSB(Universal Serial Bus)メモリなどがある。これにより、画像処理装置100は、外部記憶I/F114を介して、記録媒体114aに格納されたプログラムやデータを読み取る。
【0026】
画像処理装置100では、上記ハードウェア構成により、例えば、HDDやROMからRAM上に読み出したプログラムをCPU111により実行することで、1又は複数の仮想マシン環境を動作させることができる。
【0027】
<システム及びソフトウェア構成>
図2は、本実施形態に係る複数の仮想マシンが構築されたシステム構成例を示す図である。図2には、1台の物理コンピュータ上に2つの仮想マシンが動作するシステム構成が示されている。
【0028】
図2に示すように、仮想マシン環境は、OS(Operating System)10上で仮想マシン環境を実現するプログラムを動作させることで実現される。本実施形態では、組み込み型システムの開発環境として使用頻度の高いJavaVM(Java Virtual Machine)21を動作させることで実現している。なお、OS10は、組み込み系の基本ソフトウェアであり、例えば、Linux(登録商標:以下略)などがある。
【0029】
複数の仮想マシン環境は、OS10上で複数のJavaVM21を動作させることで実現できる。本実施形態では、JavaVM21及び21(2つのJavaVM21)を動作させることで、第1及び第2仮想マシン環境(2つの仮想マシン環境)を実現している。以降では、JavaVM21及び21を「第1仮想マシン21及び第2仮想マシン21」に置き換え説明する。また、第1仮想マシン21及び第2仮想マシン21を総称する際には、「仮想マシン21」とする。同様に、各仮想マシン21上で動作するソフトウェア(例えば「プログラム」や「データ」)及び使用される記憶領域についても、同じソフトウェア名や記憶領域名を総称する際には、共通する名称と参照符号を用いることとする。
【0030】
仮想マシン21は、仮想マシン21上でJavaコンポーネント22を動作させるためのヒープメモリ211を有している。ヒープメモリ211は、仮想マシン21上で動作するアプリケーションが自由に確保できるメモリ領域である。このように、複数の仮想マシン21が構築されたシステムでは、仮想マシン21ごとに独立したヒープメモリ211を有することから、処理停止などの障害が発生しても、互いのシステムに影響を及ぼすことがない。
【0031】
仮想マシン21上で動作するJavaコンポーネント22には、プラットフォーム及びアプリケーション(図中のJavaプラットフォーム221及びJavaアプリケーション222)の各機能を実現するための複数のJavaプログラムが含まれる。Javaプラットフォーム221は、仮想マシン21が実現するシステム(動作環境)の標準機能として動作する。またJavaアプリケーション222は、上記基本機能を利用し、例えば、ユーザが実行したい作業を実施する機能(仮想マシン環境におけるユーザ提供機能)として動作する。Javaアプリケーション222は、提供する機能構成に応じてインストール/アンインストールが可能である。
【0032】
以上のように、本実施形態に係る画像処理装置100には、複数の仮想マシン21が動作する環境を構築することができる。
【0033】
次に、上記システムにおける詳細なソフトウェア構成について説明する。
図3は、本実施形態に係る複数の仮想マシン21が構築されたシステムのソフトウェア構成例を示す図である。
【0034】
例えば、上記システムが構築された画像処理装置100が、MFP(Multifunction Peripheral)であった場合、次のようなシステム構築が考えられる。
【0035】
第1仮想マシン21では、プリンタ、スキャナ、FAX(ファクシミリ)などの標準機能を動作させる。
【0036】
第1仮想マシン21上で動作するJavaコンポーネント22が有するJavaアプリケーション222は、標準アプリケーション222a及びSDK(Software Development Kit)アプリケーション222bを含む。またJavaプラットフォーム221は、Javaモジュール群(動作モジュール群)221a及びSDK API(Application Program Interface)221bを含む。
【0037】
標準アプリケーション222aは、MFP搭載の標準機能を利用したユーザ提供機能を実現するソフトウェアである。標準アプリケーション222aは、標準機能として、プラットフォームが有するJavaモジュール群221aの動作モジュール30を利用する。例えば、Javaモジュール群221aには、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fなどが、標準機能を実現する動作モジュール30として含まれる。これにより、例えば、標準アプリケーション222aは、Javaモジュール群221aのプリンタモジュール30P及びスキャナモジュール30Sを利用してコピー機能(コピーアプリ)を実現する。
【0038】
SDKアプリケーション222bは、ソフトウェアを開発する際に使用できる命令や関数の集合であるSDK API221bを用いて開発され、ユーザへの個別対応機能(カスタマイズ機能)などを実現するソフトウェアである。SDKアプリケーション222bは、SDK API221bを介して、プラットフォームが有するJavaモジュール群221aの動作モジュール30を利用する。これにより、例えば、SDKアプリケーション222bは、SDK API221bを介して、Javaモジュール群221aのプリンタモジュール30Pを利用し、認証モジュール(非図示)と合わせて印刷の利用認証機能(セキュアプリントアプリ)を実現する。
【0039】
これに対して、第2仮想マシン21では、標準機能を利用する拡張機能(例えば「サードベンダ提供機能」)を動作させる。
【0040】
第2仮想マシン21上で動作するJavaコンポーネント22が有するJavaアプリケーション222は、SDKアプリケーション222bを含み、Javaプラットフォーム221は、SDK API221bを含む。
【0041】
上述したように、SDKアプリケーション222bは、プラットフォームが有するSDK API221bを用いれば独自に開発できる。特に拡張機能を実現するSDKアプリケーション222bは、サードベンダにより開発され提供されるソフトウェアである。サードベンダにより開発されたソフトウェアは、どのように設計・プログラミングされ、かつどのような工程を経て動作テストされ、提供されたものなのかを、知ることができない。そのため、動作中のメモリリークなど、予期せぬエラー(障害)が発生する恐れがある。
【0042】
このような場合、SDKアプリケーション222b(拡張機能)を、標準アプリケーション222a(標準機能)と同じ仮想マシン21(第1仮想マシン21)上で動作させると、障害発生の影響からシステム全体を停止(システムダウン)させてしまう可能性がある。そのため、本実施形態では、MFP搭載の標準機能と拡張機能とを異なる仮想マシン21上で動作させることにより、たとえ拡張機能に何らかの障害が発生したとしても、ユーザに対して、標準機能のサービス提供を継続して行うことができる。
【0043】
しかし、このようなシステム構成の場合、第2仮想マシン21上で動作するSDKアプリケーション222bは、第1仮想マシン21上で動作するJavaモジュール群221aの動作モジュール30とデータ通信(仮想マシン間通信)を行う必要がある。なぜなら、第2仮想マシン21上で動作するSDKアプリケーション222bは、第1仮想マシン21上で動作する動作モジュール30(標準機能を実現するモジュール)を利用して機能(拡張機能)を実現しているからである。
【0044】
仮想マシン間通信への対応方法には、第2仮想マシン21上で、各動作モジュール30に対応する通信モジュールを動作させる方法(動作モジュール単位で対応する方法)がある。しかし、システム規模が大きく、かつシステム内で多くの動作モジュール30が協働する場合には、多くの通信モジュールを用意する必要があり、現実的な対応方法ではない。また、たとえ通信モジュールが用意できたとしても、障害が発生した場合など、その後のシステム管理・保守が煩雑となる。さらに、仮想マシン21上で多くの通信モジュールを動作させなければならず、リソースを無駄に消費することとなる。
【0045】
そこで、本実施形態では、各仮想マシン21に、仮想マシン間のデータ通信機能(仮想マシン間通信機能)を有するシステム全体のインタフェース部が設けられている。このインタフェース部が、各仮想マシン21上で動作するJavaプラットフォーム221が有するJavaモジュール群221aのサブセットモジュール(通信インタフェース部)41である。各仮想マシン21上で動作するサブセットモジュール41は、同一モジュールである。また、各仮想マシン21上では、1つのサブセットモジュール41が動作する。
【0046】
サブセットモジュール41は、SDKアプリケーション222bから受け付けた機能実行要求に基づき、機能を実現するために連係する動作モジュール30に対して処理の実行を要求する。また、サブセットモジュール41は、他の仮想マシンと機能実行要求を送受信し、他の仮想マシン上で動作する動作モジュール30の実行を制御する。例えば、第2仮想マシン21上で動作するSDKアプリケーション222bが、第1仮想マシン21上で動作する動作モジュール30と連係する場合には、次のように行われる。SDKアプリケーション222bは、第2仮想マシン21側のサブセットモジュール41を介して、第1仮想マシン21側のサブセットモジュール41に対し、機能実行要求を行う。第1仮想マシン21側のサブセットモジュール41は、受け付けた機能実行要求に基づき、指定された動作モジュール30に対して処理の実行を要求する。
【0047】
このように、サブセットモジュール41は、複数の動作モジュール30に対して共通の通信インタフェースとして機能する。
【0048】
<仮想マシン間の動作モジュール実行制御機能>
上記サブセットモジュール41が有する機能について説明する。
図4は、本実施形態に係るサブセットモジュール41の機能構成例を示す図である。
本実施形態に係る画像処理装置100では、各仮想マシン21において、仮想マシン間通信を行うサブセットモジュール(通信インタフェース部)41を動作させる。サブセットモジュール41は、RMI通信を行う通信I/F(RMI通信I/F部)が仮想マシン間で呼び出される動作モジュール30と別途独立した構成となっている。また、サブセットモジュール41は、RMI通信I/F部53と動作モジュール30との間に介在し、動作モジュール30のI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)52を管理する代理オブジェクト管理部51を有している。代理オブジェクト52は、各仮想マシン21上で動作する代理オブジェクト管理部51により、各仮想マシン21においてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。
【0049】
本実施形態に係る画像処理装置100は、機能実行要求を受け付けた第2仮想マシン21上で動作する代理オブジェクト52から、RMI通信I/F部53を介して、第1仮想マシン21上で動作する代理オブジェクト52を呼び出し、第1仮想マシン21が有する動作モジュール30に実行要求を行う。つまり、画像処理装置100では、各仮想マシン21に生成された一対の代理オブジェクト52を介して、仮想マシン21上の動作モジュール30の実行を制御し、要求された機能を実現する。画像処理装置100は、各仮想マシン21上で動作する上記サブセットモジュール41により、このような仮想マシン間の動作モジュール実行制御機能を有している。
【0050】
本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fに変更が生じた場合であっても、RMI通信I/F部53と動作モジュール30とが分離されていることから、RMI通信I/F部53を変更する必要がない(通信I/Fの隠蔽が可能となる)。
【0051】
また、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fを新たに追加する場合であっても、動作モジュール30のI/Fを実現する代理オブジェクト52を動的に生成する代理オブジェクト管理部51を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)。
【0052】
このように、本実施形態に係る画像処理装置100では、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。
【0053】
以下に、上記動作モジュール実行制御機能の構成とその動作について説明する。なお、上述したように、以降で、各仮想マシン21上で動作するサブセットモジュール41の機能名を総称する際、共通する名称と参照符号を用いることとする。
【0054】
図4に示すように、サブセットモジュール41は、要求受付部411、処理要求部412、及び仮想マシン間通信部413などを有している。
【0055】
要求受付部411は、SDK API221を介して、SDKアプリケーション22bからの機能動作要求を受け付ける機能部である。
【0056】
処理要求部412は、要求時指定の動作モジュール30に対して処理の実行を要求する機能部である。よって、処理要求部412は、仮想マシン21が有する動作モジュール30に対応して構成される。例えば、第1仮想マシン21は、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fの基本機能を実現する動作モジュール30を有している。このようなモジュール構成の場合、第1仮想マシン21が有する処理要求部412の構成は、プリンタモジュール30Pに対応する処理要求部412P、スキャナモジュール30Sに対応する処理要求部412S、及びFAXモジュール30Fに対応する処理要求部412Fとなる。
【0057】
例えば、第1仮想マシン21が有する処理要求部412は、自身の動作する仮想マシン21が第1仮想マシン21であることから(実行環境判定結果から)、仮想マシン21上で動作する動作モジュール30に対して処理の実行を要求する。このとき、サブセットモジュール41は、要求受付部411により受け付けた機能動作要求を解析し、解析結果として、動作要求された機能(要求処理)に係る情報を得る。これにより、処理要求部412は、得られた情報(例えば「機能実現のために連係する動作モジュール30に係る情報」)に基づき、該当する動作モジュール30を実行する。一方、第2仮想マシン21では、サブセットモジュール41が、自身の動作する仮想マシン21が第2仮想マシン21であることから、後述する仮想マシン間通信部413を介して、要求処理を実行する際に呼び出す仮想マシン21上で動作する動作モジュール30に対して処理の実行を要求する。このように、本実施形態では、第2仮想マシン21において、基本機能を使用して機能を実現する拡張機能から動作要求を受け付けると、仮想マシン間通信が行われ、処理の実行に用いられる第1仮想マシン21上の動作モジュール30に対して処理の実行が要求される。
【0058】
仮想マシン間通信部413は、仮想マシン間でデータ通信を行う機能部である。本実施形態では、仮想マシン環境がJavaVMにより実現されている。よって、仮想マシン間通信部413では、仮想マシン間通信をRMI通信により実現される。RMIとは、別ホスト(他のJavaVM)のJavaオブジェクトのメソッドを呼び出すための通信手段であり、RPC(Remote Procedure Call)のオブジェクトに相当する機能を果たすためのAPIである。これにより、仮想マシン間通信部413では、仮想マシン間のデータ通信(情報送受信)を行う。
【0059】
例えば、第2仮想マシン21が有する仮想マシン間通信部413では、自身の動作する仮想マシン21が第2仮想マシン21であることから、要求受付部411により受け付けた機能動作要求を、第1仮想マシン21に送信する。
【0060】
このように機能する仮想マシン間通信部413は、代理オブジェクト管理部51及びRMI通信I/F部53を有している。
【0061】
代理オブジェクト管理部51は、動作モジュール30のI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)52を管理する機能部である。代理オブジェクト52とは、後述するRMI通信I/F部53と動作モジュール30との間に介在し、各動作モジュール30のI/Fを実現するJavaオブジェクトである。代理オブジェクト管理部51は、この代理オブジェクト52の生成・削除などを行うことで、代理オブジェクト52を管理する。
【0062】
代理オブジェクト管理部52は、仮想マシン21が有する動作モジュール30に対応する代理オブジェクト52を生成する。なお、ここで言う「オブジェクトの生成」とは、オブジェクト指向言語によりクラスからオブジェクトを生成する工程である。生成工程には、例えば、「オブジェクト変数の宣言(クラス名 オブジェクト変数)」、「オブジェクトの生成(new)」、及び「オブジェクトの初期化(コンストラクタ名(初期化値・・・))」などがある。
【0063】
例えば、第1仮想マシン21は、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fの基本機能を実現する動作モジュール30を有している。このようなモジュール構成の場合、仮想マシン21が有する代理オブジェクト管理部52は、動作モジュール30の登録情報(例えば「メソッド名(関数名)」や「メソッドパラメータ(引数)」)に基づき、プリンタモジュール30Pに対応する代理オブジェクト52P、スキャナモジュール30Sに対応する代理オブジェクト52S、及びFAXモジュール30Fに対応する代理オブジェクト52Fを生成する。代理オブジェクト管理部52は、上記代理オブジェクト52を、仮想マシン21からのRMI通信実行時(機能実行要求時)に生成する。代理オブジェクト管理部52は、生成後の代理オブジェクト52を所定の管理識別子(例えば「I/FID」)を用いて管理する。また、代理オブジェクト管理部52は、RMI通信I/F部53に生成後の代理オブジェクト52を定義する。このとき、代理オブジェクト管理部52は、RMI通信I/F部53に、生成後の代理オブジェクト52、メソッド名(関数名)、及びメソッドパラメータ(引数)などを渡す。なお、仮想マシン21では、サブセットモジュール41の起動時に、動作モジュール30の情報が代理オブジェクト管理部52へ登録される。
【0064】
一方、仮想マシン21が有する代理オブジェクト管理部52は、RMI通信実行(機能実行要求)により、生成後の代理オブジェクト52を受け取る(生成後の代理オブジェクト52が返却される)。代理オブジェクト管理部52は、受け取ったオブジェクト(返却されたオブジェクト)を代理オブジェクト52として所定の管理識別子(例えば「I/FID」)を用いて管理する。また、代理オブジェクト管理部52は、RMI通信I/F部53に代理オブジェクト52を定義する。
【0065】
このように、代理オブジェクト管理部52は、代理オブジェクト52と代理オブジェクト52を、第1仮想マシン21と第2仮想マシン21とにおいてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクトとして管理する。これら一対のオブジェクトは、動作モジュール30の単位(基本機能の単位)で管理される。
【0066】
Javaでは、文字データやバイトデータの入出力以外に、オブジェクトの入出力を行うクラスが用意されている。オブジェクトの入出力は、オブジェクトを再利用するため一時的にオブジェクトを保持する場合や、仮想マシン間などのリモート環境にあるプログラムとソケットを利用してオブジェクトをやり取りする場合などに用いる。
【0067】
このようなオブジェクトの入出力処理を、オブジェクトのシリアライズ(直列化)と呼ぶ。それは、オブジェクトの書き込み処理を行う場合、読み込み処理に備えオブジェクトを一連のつながりのあるデータとして書き込み、読み込む際、書き込まれた一連のデータの順に読み込み処理を行うと言うものである。
【0068】
つまり、第1仮想マシン21から第2仮想マシン21に返却される代理オブジェクト52は、オブジェクトがシリアライズ(直列化)されている。そのため、第1仮想マシン21で管理する代理オブジェクト52と、第2仮想マシン21で管理する代理オブジェクト52とは、同一インスタンスとなる。
【0069】
また、代理オブジェクト管理部51は、例えば、機能実行を要求するJavaアプリケーション222の終了時に、管理対象の代理オブジェクト52を削除する。なお、代理オブジェクト52の削除タイミングは、Javaアプリケーション222の終了と必ずしも同期していなくてもよい。
【0070】
RMI通信I/F部53は、RMI通信を行う通信I/Fを実現する機能部である。つまり、RMI通信I/F部53は、仮想マシン間で直接RMI通信を行うためのI/Fである。また、RMI通信I/F部53は、上述した動作モジュール30の単位で管理される代理オブジェクト52に対して共通するI/Fである。
【0071】
このように、本実施形態に係るサブセットモジュール41では、RMI通信を行う通信I/F(RMI通信I/F部)が仮想マシン間で呼び出す動作モジュール30と別途独立した構成となっている。
【0072】
これにより、画像処理装置100では、動作モジュール30のI/Fに変更や追加が生じた場合でも、RMI通信を行うI/Fで対応作業を行う必要がなく、通信I/Fに影響がない。
【0073】
また、RMI通信I/F部53には、上述したように、代理オブジェクト管理部51により、代理オブジェクト52、メソッド名(関数名)、及びメソッドパラメータ(引数)が定義される。よって、RMI通信I/F部53は、実際のRMI通信を行う際に、上記定義情報をキーに実行される。
【0074】
本実施形態に係る仮想マシン間の動作モジュール実行制御機能は、上記各機能部が次のように連係動作することにより実現される。画像処理装置100は、機能実行要求を受け付けた第2仮想マシン21上で動作する代理オブジェクト52から、RMI通信I/F部53を介して、第1仮想マシン21上で動作する代理オブジェクト52を呼び出し、第1仮想マシン21が有する動作モジュール30に実行要求を行う。
【0075】
このように、本実施形態に係る画像処理装置100では、上記機能構成により、動作モジュール30のI/Fに変更や追加が生じた場合、代理オブジェクト管理部51のみで対応することができる。つまり、本実施形態では、従来に比べて、より限定した範囲での作業で仮想マシン間のRMI通信対応が行える。
【0076】
次に、動作モジュール実行制御機能の詳細な動作(機能部群の連係動作)について、処理手順を示すシーケンス図を用いて説明する。
【0077】
動作モジュール実行制御機能は、各仮想マシン21上でサブセットモジュール41が動作することで実現される機能である。仮想マシン環境は、画像処理装置100に搭載(インストール)されるJavaVM(仮想マシン環境を実現するプログラム)が、CPU111により、格納先(例えば「ROM」)からRAM上に読み出され、実行されることで構築される。サブセットモジュール41は、この環境下において、Javaプラットフォーム221が有するJavaモジュール群221aの1つのモジュールとして起動される。
【0078】
なお、以下の説明では、第1仮想マシン21でサブセットモジュール41が起動された場合の処理(処理1)と、第2仮想マシン21で機能実行要求を受け付けた場合の処理(処理2)に分けて説明する。
【0079】
《処理1》
図5は、本実施形態に係る第1仮想マシン21でサブセットモジュール41が起動された場合の処理手順例を示すシーケンス図である。
【0080】
図5に示すように、画像処理装置100は、第1仮想マシン21上でサブセットモジュール41が起動されると、要求受付部411、処理要求部412、及び仮想マシン間通信部413の各機能実現オブジェクトが生成され動作する(ステップS11)。このとき、第1仮想マシン21が有する動作モジュール30に対応して生成された処理要求部412は、対応する動作モジュール30がRMI通信を行う必要のあるモジュールであった場合、仮想マシン間通信部413が有する代理オブジェクト管理部51に、自身のオブジェクトを管理対象として登録要求する(ステップS12)。なお、動作モジュール30がRMI通信を行う必要のあるモジュールであるか否かの判定は、例えば、設計・開発段階で予め決定しておいた機能単位におけるRMI通信の要否設定に基づいて行う。
【0081】
代理オブジェクト管理部51は、要求に応じて、処理要求部412のオブジェクトを、管理対象として登録する(ステップS13)。
【0082】
これにより、画像処理装置100では、代理オブジェクト管理部51が、第2仮想マシン21とRMI通信を行う動作モジュール30に対応する代理オブジェクト52(動作モジュールI/F実現部)を、第1仮想マシン21上に生成できる。
【0083】
《処理2》
図6は、本実施形態に係る第2仮想マシン21で機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。なお、図6には、第2仮想マシン21上で動作する拡張機能が、仮想マシン間通信により、第1仮想マシン21上で動作する動作モジュール30を利用して動作する場合の処理手順例が示されている。
【0084】
図6に示すように、画像処理装置100は、ユーザから拡張機能実行の指示を受け付けると、第2仮想マシン21上でJavaアプリケーション222が動作する(ステップS21)。動作中のJavaアプリケーション222からは、機能実現のために動作モジュール30の関数(アプリが使用するメソッド)が呼び出される(ステップS22)。このとき、Javaアプリケーション222では、通常と異なるインスタンスにより関数呼出を行うことで、内部的に代理オブジェクト管理部51に動作モジュール30の実行要求が通知される仕組みとなっている。具体的には、次のような処理が行われる。
【0085】
サブセットモジュール41では、要求受付部411により、Javaアプリケーション222からの動作モジュール30の実行要求を受け付けて(ステップS23)、受け付けた要求が代理オブジェクト管理部51に通知される(ステップS24)。
【0086】
代理オブジェクト管理部51は、代理オブジェクト52を管理する機能であることから、要求された動作モジュール30に対応する代理オブジェクト52が第2仮想マシン21上に既に生成されているか否かを確認する(ステップS25)。
【0087】
代理オブジェクト管理部51は、第2仮想マシン21上に、まだ、要求された動作モジュール30に対応する代理オブジェクト52が生成されていなければ(生成後の代理オブジェクト52が未登録の場合)、第1仮想マシン21に対して、要求された動作モジュール30に対応する代理オブジェクト52の取得を要求する(ステップS26)。このとき、代理オブジェクト管理部51は、要求された動作モジュール30のメソッド名(関数名)及びメソッドパラメータ(引数)を、RMI通信I/F部53を介して(RMI通信により)、第1仮想マシン21に送信し、代理オブジェクト52の取得を要求する。
【0088】
第1仮想マシン21では、サブセットモジュール41が有する代理オブジェクト管理部51により、取得要求を受け付けて、要求された代理オブジェクト52が第1仮想マシン21上に既に生成されているか否かを確認する(ステップS31)。
【0089】
代理オブジェクト管理部51は、第1仮想マシン21上に、まだ、要求された代理オブジェクト52が生成されていなければ(生成後の代理オブジェクト52が未登録の場合)、代理オブジェクト52を生成する(ステップS32)。このとき、代理オブジェクト管理部51は、サブセットモジュール41の起動時に登録された動作モジュール30に対応する処理要求部412の登録情報、及び取得要求時に受信した動作モジュール30のメソッド名(関数名)及びメソッドパラメータ(引数)などに基づき、動作モジュール30のI/Fを実現するJavaオブジェクトを生成する。
【0090】
代理オブジェクト管理部51は、生成された代理オブジェクト52に対して、管理識別子を発行し、管理対象の代理オブジェクト52として登録する(ステップS33)。このとき、代理オブジェクト管理部51は、生成後のI/FをRMI通信I/F部53に定義する。RMI通信I/F部53には、生成後の代理オブジェクト52、メソッド名(関数名)、及びメソッドパラメータ(引数)が定義される。
【0091】
代理オブジェクト管理部51は、生成後の代理オブジェクト52を、RMI通信I/F部53を介して(RMI通信により)、第2仮想マシン21に転送し、取得要求に応答する(ステップS34)。
【0092】
第2仮想マシン21では、代理オブジェクト52が転送されたことにより、サブセットモジュール41が有する代理オブジェクト管理部51により、代理オブジェクト52が生成される(ステップS41)。これにより、各仮想マシン21では、RMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)が生成される。
【0093】
代理オブジェクト管理部51は、生成した代理オブジェクト52に対して、管理識別子を発行し、管理対象の代理オブジェクト52として登録する(ステップS42)。このとき、代理オブジェクト管理部51は、生成後のI/FをRMI通信I/F部53に定義する。
【0094】
生成後、登録された代理オブジェクト52は、代理オブジェクト管理部51に対して、第1仮想マシン21上で動作する要求動作モジュール30の代理呼出を要求する(ステップS43)。
【0095】
代理オブジェクト管理部51は、要求に応じて、第1仮想マシン21上で動作する要求動作モジュール30を呼び出し、処理の実行を要求する(ステップS44)。つまり、代理オブジェクト管理部51は、RMI通信(リモート)によるメソッド呼出が可能な一対の代理オブジェクト52を介して、要求された動作モジュール30に対応する関数(外部メソッド)を呼び出す。このとき、代理オブジェクト52からは、動作モジュール30が処理を実行する際に必要なメソッドパラメータ値(引数値)が、RMI通信により代理オブジェクト52に渡される。
【0096】
第1仮想マシン21では、サブセットモジュール41が有する代理オブジェクト管理部51により、代理オブジェクト52の動作モジュールI/Fを介して(ステップS51)、サブセットモジュール41の起動時に登録された動作モジュール30に対応する処理要求部412に、処理の実行を要求する(ステップS52)。このとき、代理オブジェクト52からは、動作モジュール30が処理を実行する際に必要なメソッドパラメータ値(引数値)が、RMI通信により処理要求部412に渡される。
【0097】
処理要求部412は、上記メソッドパラメータ値(引数値)に基づき、対応する動作モジュール30を実行し、処理を行う(ステップS53)。
【0098】
その結果、処理要求部412からは、処理の実行結果が要求元に応答される。これにより、第1仮想マシン21では、一対の代理オブジェクト52を介して、RMI通信により、第1仮想マシン21からの実行結果を受け取る。この実行結果は、要求受付部411を介して、Javaアプリケーション2222へと渡される。
【0099】
本実施形態に係る画像処理装置100では、一対の代理オブジェクト52を介して、仮想マシン間通信を擬似的に実現することで、第2仮想マシン21から第1仮想マシン21が有する動作モジュール30を利用し、第2仮想マシン21が有する機能を実現することができる。
【0100】
<まとめ>
以上のように、本実施形態に係る画像処理装置100によれば、各仮想マシン21において、仮想マシン間通信を行うサブセットモジュール(通信インタフェース部)41を動作させる。サブセットモジュール41は、RMI通信を行う通信I/F(RMI通信I/F部)が仮想マシン間で呼び出される動作モジュール30と別途独立した構成となっている。また、サブセットモジュール41は、RMI通信I/F部53と動作モジュール30との間に介在し、動作モジュール30のI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)52を管理する代理オブジェクト管理部51を有している。代理オブジェクト52は、各仮想マシン21上で動作する代理オブジェクト管理部51により、各仮想マシン21においてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。
【0101】
本実施形態に係る画像処理装置100は、機能実行要求を受け付けた第2仮想マシン21上で動作する代理オブジェクト52から、RMI通信I/F部53を介して、第1仮想マシン21上で動作する代理オブジェクト52を呼び出し、第1仮想マシン21が有する動作モジュール30に実行要求を行う。つまり、画像処理装置100では、各仮想マシン21に生成された一対の代理オブジェクト52を介して、仮想マシン21上の動作モジュール30の実行を制御し、要求された機能を実現する。
【0102】
これによって、画像処理装置100は、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。
【0103】
なぜなら、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fに変更が生じた場合であっても、RMI通信I/F部53と動作モジュール30とが分離されていることから、RMI通信I/F部53を変更する必要がない(通信I/Fの隠蔽が可能となる)からである。
【0104】
また、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fを新たに追加する場合であっても、動作モジュール30のI/Fを実現する代理オブジェクト52を動的に生成する代理オブジェクト管理部51を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)からである。
【0105】
ここまで、上記実施形態の説明を行ってきたが、実施形態に係る画像処理装置100が有する「動作モジュール実行制御機能」は、図を用いて説明を行った各処理手順を動作環境(プラットフォーム)にあったプログラミング言語でコード化したプログラムが、CPU111により実行されることで実現される。
【0106】
上記プログラムは、コンピュータが読み取り可能な記録媒体114aに格納することができる。上記記録媒体114aには、例えば、SDメモリカード及びUSBメモリなどがある。
【0107】
よって、上記プログラムは、上記記録媒体114aに記憶させることで、記録媒体114aを読み取り可能な外部記憶I/F114などを介して画像処理装置100にインストールすることができる。また画像処理装置100は、ネットワークI/F113を備えていることから、インターネットなどの電気通信回線を用いて上記プログラムをダウンロードし、インストールすることもできる。
【0108】
最後に、上記実施形態に挙げた形状や構成に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【0109】
10 OS
21 JavaVM(:第1仮想マシン側、:第2仮想マシン側)
211 ヒープメモリ
22 Javaコンポーネント
221 Javaプラットフォーム
221a Javaモジュール群
221b SDK API
222 Javaアプリケーション
222a 標準アプリケーション(:第1仮想マシン側)
222b SDKアプリケーション
30 動作モジュール(P:プリンタ、S:スキャナ、F:FAX)
41 サブセットモジュール
411 要求受付部
412 処理要求部(P:プリンタ,S:スキャナ,F:FAX)
413 仮想マシン間通信部
51 代理オブジェクト管理部
52 代理オブジェクト(P:プリンタ,S:スキャナ,F:FAX)
53 RMI通信I/F部
100 画像処理装置
110 コントローラ
111 CPU(中央処理装置)
112 記憶装置
113 ネットワークI/F
114 外部記憶I/F(a:記録媒体)
120 操作パネル
130 プロッタ(画像形成部)
140 スキャナ(読み取り部)
【先行技術文献】
【特許文献】
【0110】
【特許文献1】特開2003−15870号公報

【特許請求の範囲】
【請求項1】
当該画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する画像処理装置であって、
前記標準機能を実現する複数の動作モジュールと、
各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、
前記通信インタフェース部が、
前記仮想マシン上での機能実行要求を受け付ける受付手段と、
前記仮想マシン間通信を行う通信手段と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段と、を有し、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記通信手段による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする画像処理装置。
【請求項2】
前記生成手段は、
Java(登録商標)オブジェクトのシリアライズ(直列化)により、
各仮想マシンにおいて、前記仮想マシン間通信による前記動作モジュールのメソッド呼出が可能な同一インスタンスの動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記拡張機能が動作する仮想マシンにおいて、
前記通信インタフェース部は、
仮想マシン上に前記動作モジュールインタフェース実現部が生成されているか否かを判定する判定手段を、有し、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記判定手段により、処理の実行が要求された動作モジュールに対応する前記第1の動作モジュールインタフェース実現部の生成有無を判定し、
生成されていないと判定された場合に、
前記生成手段により、他の仮想マシンに対して、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトの取得を要求し、応答されたオブジェクトを、前記第1の動作モジュールインタフェース実現部のオブジェクトとして生成することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記標準機能が動作する仮想マシンにおいて、
前記通信インタフェース部は、
前記拡張機能の実行要求を受け付けた仮想マシンから、前記第2の動作モジュールインタフェース実現部のオブジェクトの取得要求を受け付けると、
前記判定手段により、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部の生成有無を判定し、
生成されていないと判定された場合に、
前記生成手段により、前記動作モジュールの登録情報に基づき、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトを生成し、生成したオブジェクトを、取得要求元である仮想マシンに応答することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記標準機能が動作する仮想マシンにおいて、
前記生成手段は、
前記通信インタフェース部の起動時に登録された前記動作モジュールのメソッド名及びメソッドパラメータに基づき、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする請求項4に記載の画像処理装置。
【請求項6】
画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における仮想マシン間の動作モジュール実行制御方法であって、
前記通信インタフェース部が、
前記仮想マシン上での機能実行要求を受け付ける受付手順と、
前記仮想マシン間通信を行う通信手順と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手順と、を有し、
前記受付手順により、前記拡張機能の実行要求を受け付けると、
前記通信手順による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手順により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手順により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする動作モジュール実行制御方法。
【請求項7】
画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における仮想マシン間の動作モジュール実行制御プログラムであって、
前記通信インタフェース部が動作することにより、
コンピュータを、
前記仮想マシン上での機能実行要求を受け付ける受付手段と、
前記仮想マシン間通信を行う通信手段と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段として機能させ、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記通信手段による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うように動作させる動作モジュール実行制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate