JP2011107834A - Image processing apparatus, method and program for controlling operation module execution between virtual machines - Google Patents
Image processing apparatus, method and program for controlling operation module execution between virtual machines Download PDFInfo
- Publication number
- JP2011107834A JP2011107834A JP2009260260A JP2009260260A JP2011107834A JP 2011107834 A JP2011107834 A JP 2011107834A JP 2009260260 A JP2009260260 A JP 2009260260A JP 2009260260 A JP2009260260 A JP 2009260260A JP 2011107834 A JP2011107834 A JP 2011107834A
- Authority
- JP
- Japan
- Prior art keywords
- operation module
- virtual machine
- communication
- unit
- function
- 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
Links
Images
Abstract
Description
本発明は、複数の仮想マシンが動作可能な画像処理装置に関し、特に、仮想マシン間で行うデータ通信により動作モジュールの実行を制御する技術に関するものである。 The present invention relates to an image processing apparatus capable of operating a plurality of virtual machines, and more particularly to a technique for controlling execution of an operation module by data communication performed between virtual machines.
1台の物理コンピュータ上に、あたかもコンピュータが複数稼働しているかのような疑似システムを構築する仮想化技術は既に知られている。このような仮想化技術により実現される擬似的な情報処理システム環境(論理コンピュータ)を、仮想マシン(VM:Virtual Machine)と言う。 A virtualization technology for constructing a pseudo system as if a plurality of computers are operating on one physical computer is already known. A pseudo information processing system environment (logical computer) realized by such virtualization technology is called a virtual machine (VM).
単体の仮想マシンが構築されたシステムの場合には、何らかの原因で処理が停止してしまうと、システム全体が停止することになる。しかし、複数の仮想マシンが構築されたシステムの場合には、ある仮想マシンにおいて処理が停止したとしても、他の仮想マシンに影響しないため、システム全体が停止することなく、処理を継続できる。 In the case of a system in which a single virtual machine is constructed, if the process stops for some reason, the entire system stops. However, in the case of a system in which a plurality of virtual machines are constructed, even if processing is stopped in a certain virtual machine, it does not affect other virtual machines, so that processing can be continued without stopping the entire system.
このような利点から、単体の仮想マシンが構築されたシステムを複数の仮想マシンが構築されたシステムに変更したい。そのためには、仮想マシン間でデータ通信が行えるように対応する必要がある。 Because of these advantages, we want to change a system in which a single virtual machine is constructed to a system in which multiple virtual machines are constructed. For this purpose, it is necessary to cope with data communication between virtual machines.
仮想マシン間でデータ通信を行う手段には、Java(登録商標:以下略)RMI(Java Remote Method Invocation:以下単に「RMI」と言う)通信が知られている。しかし、従来のシステムでは、RMI通信を行うインタフェース(以下「通信I/F」と言う)の追加・変更を行う場合に対応箇所が多く、開発作業が繁雑となる(開発作業負荷が増大する)問題点があった。 As means for performing data communication between virtual machines, Java (registered trademark: hereinafter abbreviated) RMI (Java Remote Method Invocation: hereinafter simply referred to as “RMI”) communication is known. However, in the conventional system, when adding / changing an interface for performing RMI communication (hereinafter referred to as “communication I / F”), there are many corresponding parts, and development work becomes complicated (development work load increases). There was a problem.
そこで、例えば、特許文献1には、開発作業負荷の軽減を目的とし、仮想マシン間通信を行うサーバ再度Webアプリケーション開発において、複数の表示層とコンポーネント群を分離し、通信I/Fを少なくすることで、変更があった場合でも、少ない対応で済む開発支援装置が開示されている。
Therefore, for example, in
しかしながら、従来の方法では、既存の通信I/FをRMI通信対応する場合、通信I/F自体の変更を行う必要がある。また、RMIコンパイラによりコンパイルを行う必要もある。 However, in the conventional method, when the existing communication I / F is compatible with RMI communication, it is necessary to change the communication I / F itself. It is also necessary to compile with an RMI compiler.
既存の通信I/FをRMI通信対応する場合には、メソッドパラメータ(引数)の変更やException(例外)の追加など通信I/F自体の変更を行わなければならない。そのため、通信I/Fを利用している箇所(仮想マシン間で呼び出されるメソッド)を変更する必要がある。また、RMI通信によりリモートサーバオブジェクト上のメソッドを呼び出すクライアントは、実際にリモートオブジェクトのスタブ又はプロキシをリモートオブジェクトへの通路として利用する。そのため、スタブやプロキシを作成し直し、再度、コンパイル(リコンパイル)を行う必要がある。 When an existing communication I / F is compatible with RMI communication, the communication I / F itself must be changed, such as changing a method parameter (argument) or adding an exception (exception). Therefore, it is necessary to change the location (method called between virtual machines) using the communication I / F. A client that calls a method on a remote server object by RMI communication actually uses a stub or proxy of the remote object as a path to the remote object. Therefore, it is necessary to recreate a stub and a proxy and compile (recompile) again.
このように、従来の方法では、RMI通信対応の開発作業において、その負荷を十分に軽減できていなかった。 Thus, the conventional method cannot sufficiently reduce the load in the development work corresponding to RMI communication.
本発明は上記従来技術の問題点を鑑み提案されたものであり、その目的とするところは、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷を軽減できる画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することにある。 The present invention has been proposed in view of the above-described problems of the prior art, and an object of the present invention is to provide an image processing apparatus that can reduce the workload of adding / changing a communication I / F in correspondence with RMI communication between virtual machines. Another object is to provide an operation module execution control method and an operation module execution control program between virtual machines.
上記目的を達成するため、本発明に係る画像処理装置は、当該画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する画像処理装置であって、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、前記通信インタフェース部が、前記仮想マシン上での機能実行要求を受け付ける受付手段と、前記仮想マシン間通信を行う通信手段と、前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段と、を有し、前記受付手段により、前記拡張機能の実行要求を受け付けると、前記通信手段による仮想マシン間通信により、前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする。 In order to achieve the above object, an image processing apparatus according to the present invention is an image processing apparatus in which a standard function of the image processing apparatus and an extended function using the standard function operate on different virtual machines, A plurality of operation modules that realize functions, and a communication interface unit that operates on each virtual machine and performs communication between the virtual machines that is common to the plurality of operation modules, and the communication interface unit includes: An operation that realizes an interface of the operation module that is interposed between a reception unit that receives a function execution request on a virtual machine, a communication unit that performs communication between the virtual machines, an interface of the communication unit, and the operation module Generating means for generating a module interface realizing unit, and receiving the execution request for the extended function by the receiving means. In addition, on the other virtual machine from the first operation module interface realizing unit that is generated and operated by the generating unit on the virtual machine that has received the function execution request by communication between virtual machines by the communication unit, The second operation module interface realization unit generated and operated by the generation unit is called, and an execution request is made to the operation module of another virtual machine.
また、上記目的を達成するため、本発明に係る画像処理装置は、前記生成手段が、Java(登録商標)オブジェクトのシリアライズ(直列化)により、各仮想マシンにおいて、前記仮想マシン間通信による前記動作モジュールのメソッド呼出が可能な同一インスタンスの動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする。 In order to achieve the above object, in the image processing apparatus according to the present invention, the generation unit performs the operation by the inter-virtual machine communication in each virtual machine by serializing a Java (registered trademark) object. An object of an operation module interface realization unit of the same instance capable of calling a method of a module is generated.
このような構成によって、本発明に係る画像処理装置は、各仮想マシンにおいて、仮想マシン間通信を行う通信インタフェース部(サブセットモジュール)を動作させる。サブセットモジュールは、RMI通信を行う通信I/F(RMI通信I/F)が仮想マシン間で呼び出される動作モジュールと別途独立した構成となっている。また、サブセットモジュールは、RMI通信I/Fと動作モジュールとの間に介在し、動作モジュールのI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)を管理する機能(代理オブジェクト管理部)を有している。代理オブジェクトは、各仮想マシン上で動作する代理オブジェクト管理部により、各仮想マシンにおいてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。画像処理装置は、機能実行要求を受け付けた仮想マシン上で動作する代理オブジェクトから、RMI通信I/Fを介して、他の仮想マシン上で動作する代理オブジェクトを呼び出し、他の仮想マシンが有する動作モジュールに実行要求を行う。つまり、画像処理装置では、各仮想マシンに生成された一対の代理オブジェクトを介して、仮想マシン上の動作モジュールの実行を制御し、要求された機能を実現する。 With such a configuration, the image processing apparatus according to the present invention operates a communication interface unit (subset module) that performs communication between virtual machines in each virtual machine. The subset module is configured separately from an operation module in which a communication I / F that performs RMI communication (RMI communication I / F) is called between virtual machines. The subset module is interposed between the RMI communication I / F and the operation module, and functions to manage a proxy object (operation module I / F realization unit) that realizes the I / F of the operation module (proxy object management unit) )have. The proxy object is generated as a pair of objects (objects of the same instance in different virtual machines) that can be called by RMI communication (remote) in each virtual machine by the proxy object management unit operating on each virtual machine. The image processing apparatus calls a proxy object that operates on another virtual machine from the proxy object that operates on the virtual machine that has received the function execution request via the RMI communication I / F, and the operation that the other virtual machine has Make an execution request to the module. That is, the image processing apparatus controls the execution of the operation module on the virtual machine via the pair of proxy objects generated in each virtual machine, and realizes the requested function.
これによって、本発明に係る画像処理装置は、仮想マシン間で呼び出す動作モジュールのI/Fに変更が生じた場合であっても、RMI通信I/Fと動作モジュールとが分離されていることから、RMI通信I/Fを変更する必要がない(通信I/Fの隠蔽が可能となる)。また、画像処理装置は、仮想マシン間で呼び出す動作モジュールのI/Fを新たに追加する場合であっても、動作モジュールのI/Fを実現する代理オブジェクトを動的に生成する機能を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)。その結果、画像処理装置では、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。 As a result, the image processing apparatus according to the present invention separates the RMI communication I / F from the operation module even when the I / F of the operation module to be called between virtual machines is changed. Therefore, there is no need to change the RMI communication I / F (the communication I / F can be concealed). Further, the image processing apparatus has a function of dynamically generating a proxy object that realizes the I / F of the operation module even when a new I / F of the operation module to be called between the virtual machines is added. Therefore, there is no need to change the existing I / F (no recompilation is required). As a result, the image processing apparatus can reduce the workload of adding / changing the communication I / F in correspondence with the RMI communication between virtual machines.
上記目的を達成するため、本発明に係る仮想マシン間の動作モジュール実行制御方法は、画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における仮想マシン間の動作モジュール実行制御方法であって、前記通信インタフェース部が、前記仮想マシン上での機能実行要求を受け付ける受付手順と、前記仮想マシン間通信を行う通信手順と、前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手順と、を有し、前記受付手順により、前記拡張機能の実行要求を受け付けると、前記通信手順による仮想マシン間通信により、前記機能実行要求を受け付けた仮想マシン上で、前記生成手順により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手順により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする。 In order to achieve the above object, an operation module execution control method between virtual machines according to the present invention provides an environment in which a standard function of an image processing apparatus and an extended function using the standard function operate on different virtual machines. Between virtual machines in an image processing apparatus having a plurality of operation modules that realize standard functions and a communication interface unit that operates on each virtual machine and performs common inter-virtual machine communication with the plurality of operation modules An operation module execution control method, wherein the communication interface unit receives a function execution request on the virtual machine, a communication procedure for performing communication between the virtual machines, an interface of the communication means, and the operation module And an operation module interface that realizes the interface of the operation module. A generation procedure for generating a service realization unit, and when the execution request for the extended function is received by the reception procedure, on the virtual machine that has received the function execution request by communication between virtual machines according to the communication procedure. The second operation module interface realization unit generated and operated by the generation procedure is called on the other virtual machine from the first operation module interface implementation unit generated and operated by the generation procedure, and the other virtual machine An execution request is made to the operation module.
このような手順によって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、RMI通信I/Fが仮想マシン間で呼び出す動作モジュールと別途独立した構成において、動作モジュールのI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)を各仮想マシンで動的に生成し、機能実行要求を受け付けた仮想マシン上で動作する代理オブジェクトから、RMI通信I/Fを介して、他の仮想マシン上で動作する代理オブジェクトを呼び出し、他の仮想マシンが有する動作モジュールに実行要求を行うと言う動作を実現する。 By such a procedure, the operation module execution control method between virtual machines according to the present invention realizes the I / F of the operation module in a configuration separately from the operation module that the RMI communication I / F calls between the virtual machines. A proxy object (operation module I / F realization unit) is dynamically generated in each virtual machine, and another virtual object is operated from the proxy object that operates on the virtual machine that has received the function execution request via the RMI communication I / F. A proxy object that operates on a machine is called, and an operation of making an execution request to an operation module of another virtual machine is realized.
これによって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷を軽減可能な環境を提供できる。 Thus, the operation module execution control method between virtual machines according to the present invention can provide an environment that can reduce the workload of adding / changing a communication I / F in correspondence with RMI communication between virtual machines.
本発明によれば、RMI通信I/Fが仮想マシン間で呼び出す動作モジュールと別途独立した構成とし、動作モジュールのI/Fを実現する代理オブジェクトを各仮想マシンで動的に生成し、生成された一対の代理オブジェクトを介して、仮想マシン上の動作モジュールの実行を制御可能とすることで、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減される画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することができる。 According to the present invention, the RMI communication I / F is configured separately from the operation module that is called between the virtual machines, and the proxy object that realizes the I / F of the operation module is dynamically generated and generated by each virtual machine. Image processing that reduces the workload of adding / changing communication I / F in RMI communication between virtual machines by enabling execution of operation modules on virtual machines to be controlled via a pair of proxy objects An apparatus, an operation module execution control method between virtual machines, and an operation module execution control program can be provided.
以下、本発明の好適な実施の形態(以下「実施形態」と言う)について、図面を用いて詳細に説明する。 DESCRIPTION OF EMBODIMENTS Hereinafter, preferred embodiments of the present invention (hereinafter referred to as “embodiments”) will be described in detail with reference to the drawings.
[第1の実施形態]
<ハードウェア構成>
図1は、本実施形態に係る画像処理装置100のハードウェア構成例を示す図である。
図1に示すように、画像処理装置100は、コントローラ110、操作パネル120、プロッタ130、及びスキャナ140などを備え、それぞれが相互にバスBで接続されている。
[First Embodiment]
<Hardware configuration>
FIG. 1 is a diagram illustrating a hardware configuration example of an
As illustrated in FIG. 1, the
操作パネル120は、表示部及び入力部を備えており、機器情報などの各種情報をユーザに提供したり、動作設定や動作指示などの各種ユーザ操作を受け付けたりする。プロッタ130は、画像形成部を備えており、用紙に出力画像を形成する。例えば、出力画像を形成する方式には、電子写真プロセスやインクジェット方式などがある。スキャナ140は、原稿を光学的に読み取り、読み取り画像を生成する。
The
コントローラ110は、CPU(Central Processing Unit)111、記憶装置112、ネットワークI/F113、及び外部記憶I/F114などを備えており、それぞれが相互にバスBで接続されている。
The
CPU111は、プログラムを実行することにより各種機能の実現や装置全体を制御する。また記憶装置112は、上記プログラムや各種データ(例えば「画像データ」)を格納し保持する。例えば、記憶装置112には、揮発性のメモリであるRAM(Random Access Memory)、不揮発性のメモリであるROM(Read Only Memory)、及び大容量の記憶領域を備えたHDD(Hard Disk Drive)などがある。RAMは、CPU111のワークエリア(プログラムやデータが一時的に読み出される記憶エリア)として機能する。ROMやHDDは、プログラムや各種データの格納先として用いられる。これにより、画像処理装置100では、CPU111がROMに格納されたプログラムをRAM上に読み出し、プログラムを実行する。
The CPU 111 executes various programs to control various functions and the entire apparatus. The
ネットワークI/F113は、画像処理装置100をネットワークなどの所定のデータ伝送路に接続するためのインタフェースである。外部記憶I/F114は、外部記憶装置にあたる記録媒体114aを接続するためのインタフェースである。例えば、外部記憶装置には、SDメモリカード(SD Memory Card)やUSB(Universal Serial Bus)メモリなどがある。これにより、画像処理装置100は、外部記憶I/F114を介して、記録媒体114aに格納されたプログラムやデータを読み取る。
The network I /
画像処理装置100では、上記ハードウェア構成により、例えば、HDDやROMからRAM上に読み出したプログラムをCPU111により実行することで、1又は複数の仮想マシン環境を動作させることができる。
In the
<システム及びソフトウェア構成>
図2は、本実施形態に係る複数の仮想マシンが構築されたシステム構成例を示す図である。図2には、1台の物理コンピュータ上に2つの仮想マシンが動作するシステム構成が示されている。
<System and software configuration>
FIG. 2 is a diagram illustrating a system configuration example in which a plurality of virtual machines according to the present embodiment are constructed. FIG. 2 shows a system configuration in which two virtual machines operate on one physical computer.
図2に示すように、仮想マシン環境は、OS(Operating System)10上で仮想マシン環境を実現するプログラムを動作させることで実現される。本実施形態では、組み込み型システムの開発環境として使用頻度の高いJavaVM(Java Virtual Machine)21を動作させることで実現している。なお、OS10は、組み込み系の基本ソフトウェアであり、例えば、Linux(登録商標:以下略)などがある。 As shown in FIG. 2, the virtual machine environment is realized by operating a program that realizes the virtual machine environment on an OS (Operating System) 10. In this embodiment, it is realized by operating a Java VM (Java Virtual Machine) 21 that is frequently used as a development environment for an embedded system. The OS 10 is built-in basic software, such as Linux (registered trademark: hereinafter abbreviated).
複数の仮想マシン環境は、OS10上で複数のJavaVM21を動作させることで実現できる。本実施形態では、JavaVM211及び212(2つのJavaVM21)を動作させることで、第1及び第2仮想マシン環境(2つの仮想マシン環境)を実現している。以降では、JavaVM211及び212を「第1仮想マシン211及び第2仮想マシン212」に置き換え説明する。また、第1仮想マシン211及び第2仮想マシン212を総称する際には、「仮想マシン21」とする。同様に、各仮想マシン21上で動作するソフトウェア(例えば「プログラム」や「データ」)及び使用される記憶領域についても、同じソフトウェア名や記憶領域名を総称する際には、共通する名称と参照符号を用いることとする。
A plurality of virtual machine environments can be realized by operating a plurality of
仮想マシン21は、仮想マシン21上でJavaコンポーネント22を動作させるためのヒープメモリ211を有している。ヒープメモリ211は、仮想マシン21上で動作するアプリケーションが自由に確保できるメモリ領域である。このように、複数の仮想マシン21が構築されたシステムでは、仮想マシン21ごとに独立したヒープメモリ211を有することから、処理停止などの障害が発生しても、互いのシステムに影響を及ぼすことがない。
The
仮想マシン21上で動作するJavaコンポーネント22には、プラットフォーム及びアプリケーション(図中のJavaプラットフォーム221及びJavaアプリケーション222)の各機能を実現するための複数のJavaプログラムが含まれる。Javaプラットフォーム221は、仮想マシン21が実現するシステム(動作環境)の標準機能として動作する。またJavaアプリケーション222は、上記基本機能を利用し、例えば、ユーザが実行したい作業を実施する機能(仮想マシン環境におけるユーザ提供機能)として動作する。Javaアプリケーション222は、提供する機能構成に応じてインストール/アンインストールが可能である。
The
以上のように、本実施形態に係る画像処理装置100には、複数の仮想マシン21が動作する環境を構築することができる。
As described above, an environment in which a plurality of
次に、上記システムにおける詳細なソフトウェア構成について説明する。
図3は、本実施形態に係る複数の仮想マシン21が構築されたシステムのソフトウェア構成例を示す図である。
Next, a detailed software configuration in the system will be described.
FIG. 3 is a diagram illustrating a software configuration example of a system in which a plurality of
例えば、上記システムが構築された画像処理装置100が、MFP(Multifunction Peripheral)であった場合、次のようなシステム構築が考えられる。
For example, when the
第1仮想マシン211では、プリンタ、スキャナ、FAX(ファクシミリ)などの標準機能を動作させる。 In the first virtual machine 21 1, a printer, a scanner, to operate the standard functions such as FAX (facsimile).
第1仮想マシン211上で動作するJavaコンポーネント221が有するJavaアプリケーション2221は、標準アプリケーション222a1及びSDK(Software Development Kit)アプリケーション222b1を含む。またJavaプラットフォーム2211は、Javaモジュール群(動作モジュール群)221a1及びSDK API(Application Program Interface)221b1を含む。
The
標準アプリケーション222a1は、MFP搭載の標準機能を利用したユーザ提供機能を実現するソフトウェアである。標準アプリケーション222a1は、標準機能として、プラットフォームが有するJavaモジュール群221a1の動作モジュール30を利用する。例えば、Javaモジュール群221a1には、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fなどが、標準機能を実現する動作モジュール30として含まれる。これにより、例えば、標準アプリケーション222a1は、Javaモジュール群221a1のプリンタモジュール30P及びスキャナモジュール30Sを利用してコピー機能(コピーアプリ)を実現する。
The standard application 222a 1 is software that realizes a user-provided function using a standard function installed in the MFP. The standard application 222a 1 uses the
SDKアプリケーション222b1は、ソフトウェアを開発する際に使用できる命令や関数の集合であるSDK API221b1を用いて開発され、ユーザへの個別対応機能(カスタマイズ機能)などを実現するソフトウェアである。SDKアプリケーション222b1は、SDK API221b1を介して、プラットフォームが有するJavaモジュール群221a1の動作モジュール30を利用する。これにより、例えば、SDKアプリケーション222b1は、SDK API221b1を介して、Javaモジュール群221a1のプリンタモジュール30Pを利用し、認証モジュール(非図示)と合わせて印刷の利用認証機能(セキュアプリントアプリ)を実現する。
The SDK application 222b 1 is software that is developed by using the SDK API 221b 1 that is a set of instructions and functions that can be used when developing software, and that realizes an individual correspondence function (customization function) to the user. The SDK application 222b 1 uses the
これに対して、第2仮想マシン212では、標準機能を利用する拡張機能(例えば「サードベンダ提供機能」)を動作させる。
In contrast, in the second
第2仮想マシン212上で動作するJavaコンポーネント222が有するJavaアプリケーション2222は、SDKアプリケーション222b2を含み、Javaプラットフォーム2212は、SDK API221b2を含む。
上述したように、SDKアプリケーション222b2は、プラットフォームが有するSDK API221b2を用いれば独自に開発できる。特に拡張機能を実現するSDKアプリケーション222b2は、サードベンダにより開発され提供されるソフトウェアである。サードベンダにより開発されたソフトウェアは、どのように設計・プログラミングされ、かつどのような工程を経て動作テストされ、提供されたものなのかを、知ることができない。そのため、動作中のメモリリークなど、予期せぬエラー(障害)が発生する恐れがある。 As described above, the SDK application 222b 2 can be uniquely developed by using the SDK API 221b 2 included in the platform. In particular, the SDK application 222b 2 that realizes an extended function is software developed and provided by a third vendor. It is impossible to know how software developed by a third vendor is designed and programmed, and through which process it is tested and provided. Therefore, an unexpected error (failure) such as a memory leak during operation may occur.
このような場合、SDKアプリケーション222b2(拡張機能)を、標準アプリケーション222a1(標準機能)と同じ仮想マシン21(第1仮想マシン211)上で動作させると、障害発生の影響からシステム全体を停止(システムダウン)させてしまう可能性がある。そのため、本実施形態では、MFP搭載の標準機能と拡張機能とを異なる仮想マシン21上で動作させることにより、たとえ拡張機能に何らかの障害が発生したとしても、ユーザに対して、標準機能のサービス提供を継続して行うことができる。
In such a case, if the SDK application 222b 2 (extended function) is operated on the same virtual machine 21 (first virtual machine 21 1 ) as the standard application 222a 1 (standard function), the entire system is affected by the occurrence of a failure. There is a possibility of stopping (system down). Therefore, in the present embodiment, the standard function and the extended function installed in the MFP are operated on different
しかし、このようなシステム構成の場合、第2仮想マシン212上で動作するSDKアプリケーション222b2は、第1仮想マシン211上で動作するJavaモジュール群221a1の動作モジュール30とデータ通信(仮想マシン間通信)を行う必要がある。なぜなら、第2仮想マシン212上で動作するSDKアプリケーション222b2は、第1仮想マシン211上で動作する動作モジュール30(標準機能を実現するモジュール)を利用して機能(拡張機能)を実現しているからである。
However, in the case of such a system configuration, the SDK application 222b 2 operating on the second
仮想マシン間通信への対応方法には、第2仮想マシン212上で、各動作モジュール30に対応する通信モジュールを動作させる方法(動作モジュール単位で対応する方法)がある。しかし、システム規模が大きく、かつシステム内で多くの動作モジュール30が協働する場合には、多くの通信モジュールを用意する必要があり、現実的な対応方法ではない。また、たとえ通信モジュールが用意できたとしても、障害が発生した場合など、その後のシステム管理・保守が煩雑となる。さらに、仮想マシン21上で多くの通信モジュールを動作させなければならず、リソースを無駄に消費することとなる。
The corresponding method for inter-virtual machine communication, on the second
そこで、本実施形態では、各仮想マシン21に、仮想マシン間のデータ通信機能(仮想マシン間通信機能)を有するシステム全体のインタフェース部が設けられている。このインタフェース部が、各仮想マシン21上で動作するJavaプラットフォーム221が有するJavaモジュール群221aのサブセットモジュール(通信インタフェース部)41である。各仮想マシン21上で動作するサブセットモジュール41は、同一モジュールである。また、各仮想マシン21上では、1つのサブセットモジュール41が動作する。
Therefore, in this embodiment, each
サブセットモジュール41は、SDKアプリケーション222bから受け付けた機能実行要求に基づき、機能を実現するために連係する動作モジュール30に対して処理の実行を要求する。また、サブセットモジュール41は、他の仮想マシンと機能実行要求を送受信し、他の仮想マシン上で動作する動作モジュール30の実行を制御する。例えば、第2仮想マシン212上で動作するSDKアプリケーション222b2が、第1仮想マシン211上で動作する動作モジュール30と連係する場合には、次のように行われる。SDKアプリケーション222b2は、第2仮想マシン212側のサブセットモジュール412を介して、第1仮想マシン211側のサブセットモジュール411に対し、機能実行要求を行う。第1仮想マシン211側のサブセットモジュール411は、受け付けた機能実行要求に基づき、指定された動作モジュール30に対して処理の実行を要求する。
Based on the function execution request received from the SDK application 222b, the
このように、サブセットモジュール41は、複数の動作モジュール30に対して共通の通信インタフェースとして機能する。
As described above, the
<仮想マシン間の動作モジュール実行制御機能>
上記サブセットモジュール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通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。
<Operation module execution control function between virtual machines>
The functions of the
FIG. 4 is a diagram illustrating a functional configuration example of the
In the
本実施形態に係る画像処理装置100は、機能実行要求を受け付けた第2仮想マシン212上で動作する代理オブジェクト522から、RMI通信I/F部53を介して、第1仮想マシン211上で動作する代理オブジェクト521を呼び出し、第1仮想マシン211が有する動作モジュール30に実行要求を行う。つまり、画像処理装置100では、各仮想マシン21に生成された一対の代理オブジェクト52を介して、仮想マシン21上の動作モジュール30の実行を制御し、要求された機能を実現する。画像処理装置100は、各仮想マシン21上で動作する上記サブセットモジュール41により、このような仮想マシン間の動作モジュール実行制御機能を有している。
The
本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fに変更が生じた場合であっても、RMI通信I/F部53と動作モジュール30とが分離されていることから、RMI通信I/F部53を変更する必要がない(通信I/Fの隠蔽が可能となる)。
In the
また、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fを新たに追加する場合であっても、動作モジュール30のI/Fを実現する代理オブジェクト52を動的に生成する代理オブジェクト管理部51を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)。
Further, in the
このように、本実施形態に係る画像処理装置100では、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。
As described above, in the
以下に、上記動作モジュール実行制御機能の構成とその動作について説明する。なお、上述したように、以降で、各仮想マシン21上で動作するサブセットモジュール41の機能名を総称する際、共通する名称と参照符号を用いることとする。
The configuration and operation of the operation module execution control function will be described below. As described above, hereinafter, when generically referring to the function names of the
図4に示すように、サブセットモジュール41は、要求受付部411、処理要求部412、及び仮想マシン間通信部413などを有している。
As illustrated in FIG. 4, the
要求受付部411は、SDK API221を介して、SDKアプリケーション22bからの機能動作要求を受け付ける機能部である。
The request receiving unit 411 is a functional unit that receives a functional operation request from the SDK application 22b via the
処理要求部412は、要求時指定の動作モジュール30に対して処理の実行を要求する機能部である。よって、処理要求部412は、仮想マシン21が有する動作モジュール30に対応して構成される。例えば、第1仮想マシン211は、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fの基本機能を実現する動作モジュール30を有している。このようなモジュール構成の場合、第1仮想マシン211が有する処理要求部4121の構成は、プリンタモジュール30Pに対応する処理要求部412P1、スキャナモジュール30Sに対応する処理要求部412S1、及びFAXモジュール30Fに対応する処理要求部412F1となる。
The
例えば、第1仮想マシン211が有する処理要求部4121は、自身の動作する仮想マシン21が第1仮想マシン211であることから(実行環境判定結果から)、仮想マシン211上で動作する動作モジュール30に対して処理の実行を要求する。このとき、サブセットモジュール411は、要求受付部4111により受け付けた機能動作要求を解析し、解析結果として、動作要求された機能(要求処理)に係る情報を得る。これにより、処理要求部4121は、得られた情報(例えば「機能実現のために連係する動作モジュール30に係る情報」)に基づき、該当する動作モジュール30を実行する。一方、第2仮想マシン212では、サブセットモジュール412が、自身の動作する仮想マシン21が第2仮想マシン212であることから、後述する仮想マシン間通信部413を介して、要求処理を実行する際に呼び出す仮想マシン211上で動作する動作モジュール30に対して処理の実行を要求する。このように、本実施形態では、第2仮想マシン212において、基本機能を使用して機能を実現する拡張機能から動作要求を受け付けると、仮想マシン間通信が行われ、処理の実行に用いられる第1仮想マシン211上の動作モジュール30に対して処理の実行が要求される。
For example, the
仮想マシン間通信部413は、仮想マシン間でデータ通信を行う機能部である。本実施形態では、仮想マシン環境がJavaVMにより実現されている。よって、仮想マシン間通信部413では、仮想マシン間通信をRMI通信により実現される。RMIとは、別ホスト(他のJavaVM)のJavaオブジェクトのメソッドを呼び出すための通信手段であり、RPC(Remote Procedure Call)のオブジェクトに相当する機能を果たすためのAPIである。これにより、仮想マシン間通信部413では、仮想マシン間のデータ通信(情報送受信)を行う。 The inter-virtual machine communication unit 413 is a functional unit that performs data communication between virtual machines. In this embodiment, the virtual machine environment is realized by JavaVM. Therefore, in the inter-virtual machine communication unit 413, inter-virtual machine communication is realized by RMI communication. The RMI is a communication means for calling a method of a Java object of another host (another JavaVM), and is an API for performing a function corresponding to an object of an RPC (Remote Procedure Call). Thereby, the inter-virtual machine communication unit 413 performs data communication (information transmission / reception) between the virtual machines.
例えば、第2仮想マシン212が有する仮想マシン間通信部4132では、自身の動作する仮想マシン21が第2仮想マシン212であることから、要求受付部4112により受け付けた機能動作要求を、第1仮想マシン211に送信する。
For example, the inter-VM communication unit 413 2 in which the second
このように機能する仮想マシン間通信部413は、代理オブジェクト管理部51及びRMI通信I/F部53を有している。
The inter-virtual machine communication unit 413 that functions in this way includes a proxy
代理オブジェクト管理部51は、動作モジュール30のI/Fを実現する代理オブジェクト(動作モジュールI/F実現部)52を管理する機能部である。代理オブジェクト52とは、後述するRMI通信I/F部53と動作モジュール30との間に介在し、各動作モジュール30のI/Fを実現するJavaオブジェクトである。代理オブジェクト管理部51は、この代理オブジェクト52の生成・削除などを行うことで、代理オブジェクト52を管理する。
The proxy
代理オブジェクト管理部52は、仮想マシン21が有する動作モジュール30に対応する代理オブジェクト52を生成する。なお、ここで言う「オブジェクトの生成」とは、オブジェクト指向言語によりクラスからオブジェクトを生成する工程である。生成工程には、例えば、「オブジェクト変数の宣言(クラス名 オブジェクト変数)」、「オブジェクトの生成(new)」、及び「オブジェクトの初期化(コンストラクタ名(初期化値・・・))」などがある。
The proxy object management unit 52 generates a proxy object 52 corresponding to the
例えば、第1仮想マシン211は、プリンタモジュール30P、スキャナモジュール30S、及びFAXモジュール30Fの基本機能を実現する動作モジュール30を有している。このようなモジュール構成の場合、仮想マシン211が有する代理オブジェクト管理部521は、動作モジュール30の登録情報(例えば「メソッド名(関数名)」や「メソッドパラメータ(引数)」)に基づき、プリンタモジュール30Pに対応する代理オブジェクト52P1、スキャナモジュール30Sに対応する代理オブジェクト52S1、及びFAXモジュール30Fに対応する代理オブジェクト52F1を生成する。代理オブジェクト管理部521は、上記代理オブジェクト521を、仮想マシン212からのRMI通信実行時(機能実行要求時)に生成する。代理オブジェクト管理部521は、生成後の代理オブジェクト521を所定の管理識別子(例えば「I/FID」)を用いて管理する。また、代理オブジェクト管理部521は、RMI通信I/F部531に生成後の代理オブジェクト521を定義する。このとき、代理オブジェクト管理部521は、RMI通信I/F部531に、生成後の代理オブジェクト521、メソッド名(関数名)、及びメソッドパラメータ(引数)などを渡す。なお、仮想マシン211では、サブセットモジュール411の起動時に、動作モジュール30の情報が代理オブジェクト管理部521へ登録される。
For example, a first
一方、仮想マシン212が有する代理オブジェクト管理部522は、RMI通信実行(機能実行要求)により、生成後の代理オブジェクト521を受け取る(生成後の代理オブジェクト521が返却される)。代理オブジェクト管理部522は、受け取ったオブジェクト(返却されたオブジェクト)を代理オブジェクト522として所定の管理識別子(例えば「I/FID」)を用いて管理する。また、代理オブジェクト管理部522は、RMI通信I/F部532に代理オブジェクト522を定義する。
On the other hand, the proxy object management unit 52 2 for
このように、代理オブジェクト管理部52は、代理オブジェクト521と代理オブジェクト522を、第1仮想マシン211と第2仮想マシン212とにおいてRMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクトとして管理する。これら一対のオブジェクトは、動作モジュール30の単位(基本機能の単位)で管理される。
As described above, the proxy object management unit 52 allows the proxy object 52 1 and the proxy object 52 2 to be paired with each other so that the first
Javaでは、文字データやバイトデータの入出力以外に、オブジェクトの入出力を行うクラスが用意されている。オブジェクトの入出力は、オブジェクトを再利用するため一時的にオブジェクトを保持する場合や、仮想マシン間などのリモート環境にあるプログラムとソケットを利用してオブジェクトをやり取りする場合などに用いる。 In Java, in addition to input / output of character data and byte data, classes for input / output of objects are prepared. Object input / output is used when an object is temporarily held to reuse the object, or when an object is exchanged using a socket in a remote environment such as between virtual machines.
このようなオブジェクトの入出力処理を、オブジェクトのシリアライズ(直列化)と呼ぶ。それは、オブジェクトの書き込み処理を行う場合、読み込み処理に備えオブジェクトを一連のつながりのあるデータとして書き込み、読み込む際、書き込まれた一連のデータの順に読み込み処理を行うと言うものである。 Such object input / output processing is called object serialization. That is, when an object writing process is performed, the object is written as a series of connected data in preparation for the reading process, and when the object is read, the reading process is performed in the order of the written series of data.
つまり、第1仮想マシン211から第2仮想マシン212に返却される代理オブジェクト521は、オブジェクトがシリアライズ(直列化)されている。そのため、第1仮想マシン211で管理する代理オブジェクト521と、第2仮想マシン212で管理する代理オブジェクト522とは、同一インスタンスとなる。
That is, proxy object 521 to be returned from the first
また、代理オブジェクト管理部51は、例えば、機能実行を要求するJavaアプリケーション222の終了時に、管理対象の代理オブジェクト52を削除する。なお、代理オブジェクト52の削除タイミングは、Javaアプリケーション222の終了と必ずしも同期していなくてもよい。
In addition, the proxy
RMI通信I/F部53は、RMI通信を行う通信I/Fを実現する機能部である。つまり、RMI通信I/F部53は、仮想マシン間で直接RMI通信を行うためのI/Fである。また、RMI通信I/F部53は、上述した動作モジュール30の単位で管理される代理オブジェクト52に対して共通するI/Fである。
The RMI communication I / F unit 53 is a functional unit that implements a communication I / F that performs RMI communication. That is, the RMI communication I / F unit 53 is an I / F for performing RMI communication directly between virtual machines. The RMI communication I / F unit 53 is an I / F common to the proxy object 52 managed in units of the
このように、本実施形態に係るサブセットモジュール41では、RMI通信を行う通信I/F(RMI通信I/F部)が仮想マシン間で呼び出す動作モジュール30と別途独立した構成となっている。
As described above, the
これにより、画像処理装置100では、動作モジュール30のI/Fに変更や追加が生じた場合でも、RMI通信を行うI/Fで対応作業を行う必要がなく、通信I/Fに影響がない。
Thereby, in the
また、RMI通信I/F部53には、上述したように、代理オブジェクト管理部51により、代理オブジェクト52、メソッド名(関数名)、及びメソッドパラメータ(引数)が定義される。よって、RMI通信I/F部53は、実際のRMI通信を行う際に、上記定義情報をキーに実行される。
In the RMI communication I / F unit 53, as described above, the proxy
本実施形態に係る仮想マシン間の動作モジュール実行制御機能は、上記各機能部が次のように連係動作することにより実現される。画像処理装置100は、機能実行要求を受け付けた第2仮想マシン212上で動作する代理オブジェクト522から、RMI通信I/F部53を介して、第1仮想マシン211上で動作する代理オブジェクト521を呼び出し、第1仮想マシン211が有する動作モジュール30に実行要求を行う。
The operation module execution control function between virtual machines according to the present embodiment is realized by the above-described functional units operating in linkage as follows. The
このように、本実施形態に係る画像処理装置100では、上記機能構成により、動作モジュール30のI/Fに変更や追加が生じた場合、代理オブジェクト管理部51のみで対応することができる。つまり、本実施形態では、従来に比べて、より限定した範囲での作業で仮想マシン間のRMI通信対応が行える。
As described above, in the
次に、動作モジュール実行制御機能の詳細な動作(機能部群の連係動作)について、処理手順を示すシーケンス図を用いて説明する。 Next, detailed operation of the operation module execution control function (function unit group linking operation) will be described with reference to a sequence diagram showing a processing procedure.
動作モジュール実行制御機能は、各仮想マシン21上でサブセットモジュール41が動作することで実現される機能である。仮想マシン環境は、画像処理装置100に搭載(インストール)されるJavaVM(仮想マシン環境を実現するプログラム)が、CPU111により、格納先(例えば「ROM」)からRAM上に読み出され、実行されることで構築される。サブセットモジュール41は、この環境下において、Javaプラットフォーム221が有するJavaモジュール群221aの1つのモジュールとして起動される。
The operation module execution control function is a function realized by the
なお、以下の説明では、第1仮想マシン211でサブセットモジュール411が起動された場合の処理(処理1)と、第2仮想マシン212で機能実行要求を受け付けた場合の処理(処理2)に分けて説明する。 In the following description, processing when the subset module 411 is activated by the first virtual machine 21 1 (treatment 1), processing when receiving a function execution request by the second virtual machine 21 2 (processing 2 ).
《処理1》
図5は、本実施形態に係る第1仮想マシン211でサブセットモジュール411が起動された場合の処理手順例を示すシーケンス図である。
<<
FIG. 5 is a sequence diagram illustrating an example of a processing procedure when the
図5に示すように、画像処理装置100は、第1仮想マシン211上でサブセットモジュール411が起動されると、要求受付部4111、処理要求部4121、及び仮想マシン間通信部4131の各機能実現オブジェクトが生成され動作する(ステップS11)。このとき、第1仮想マシン211が有する動作モジュール30に対応して生成された処理要求部4121は、対応する動作モジュール30がRMI通信を行う必要のあるモジュールであった場合、仮想マシン間通信部4131が有する代理オブジェクト管理部511に、自身のオブジェクトを管理対象として登録要求する(ステップS12)。なお、動作モジュール30がRMI通信を行う必要のあるモジュールであるか否かの判定は、例えば、設計・開発段階で予め決定しておいた機能単位におけるRMI通信の要否設定に基づいて行う。
As illustrated in FIG. 5, when the
代理オブジェクト管理部511は、要求に応じて、処理要求部4121のオブジェクトを、管理対象として登録する(ステップS13)。
Proxy
これにより、画像処理装置100では、代理オブジェクト管理部511が、第2仮想マシン212とRMI通信を行う動作モジュール30に対応する代理オブジェクト521(動作モジュールI/F実現部)を、第1仮想マシン211上に生成できる。
Thus, the
《処理2》
図6は、本実施形態に係る第2仮想マシン212で機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。なお、図6には、第2仮想マシン212上で動作する拡張機能が、仮想マシン間通信により、第1仮想マシン211上で動作する動作モジュール30を利用して動作する場合の処理手順例が示されている。
<< Process 2 >>
Figure 6 is a sequence diagram illustrating a processing procedure example of the case where the function execution indicated by the second
図6に示すように、画像処理装置100は、ユーザから拡張機能実行の指示を受け付けると、第2仮想マシン212上でJavaアプリケーション2222が動作する(ステップS21)。動作中のJavaアプリケーション2222からは、機能実現のために動作モジュール30の関数(アプリが使用するメソッド)が呼び出される(ステップS22)。このとき、Javaアプリケーション2222では、通常と異なるインスタンスにより関数呼出を行うことで、内部的に代理オブジェクト管理部512に動作モジュール30の実行要求が通知される仕組みとなっている。具体的には、次のような処理が行われる。
As shown in FIG. 6, the
サブセットモジュール412では、要求受付部4112により、Javaアプリケーション2222からの動作モジュール30の実行要求を受け付けて(ステップS23)、受け付けた要求が代理オブジェクト管理部512に通知される(ステップS24)。
In the
代理オブジェクト管理部512は、代理オブジェクト522を管理する機能であることから、要求された動作モジュール30に対応する代理オブジェクト522が第2仮想マシン212上に既に生成されているか否かを確認する(ステップS25)。
Proxy
代理オブジェクト管理部512は、第2仮想マシン212上に、まだ、要求された動作モジュール30に対応する代理オブジェクト522が生成されていなければ(生成後の代理オブジェクト522が未登録の場合)、第1仮想マシン211に対して、要求された動作モジュール30に対応する代理オブジェクト522の取得を要求する(ステップS26)。このとき、代理オブジェクト管理部512は、要求された動作モジュール30のメソッド名(関数名)及びメソッドパラメータ(引数)を、RMI通信I/F部532を介して(RMI通信により)、第1仮想マシン211に送信し、代理オブジェクト522の取得を要求する。
Proxy
第1仮想マシン211では、サブセットモジュール411が有する代理オブジェクト管理部511により、取得要求を受け付けて、要求された代理オブジェクト521が第1仮想マシン211上に既に生成されているか否かを確認する(ステップS31)。
In the first
代理オブジェクト管理部511は、第1仮想マシン211上に、まだ、要求された代理オブジェクト521が生成されていなければ(生成後の代理オブジェクト521が未登録の場合)、代理オブジェクト521を生成する(ステップS32)。このとき、代理オブジェクト管理部511は、サブセットモジュール411の起動時に登録された動作モジュール30に対応する処理要求部4121の登録情報、及び取得要求時に受信した動作モジュール30のメソッド名(関数名)及びメソッドパラメータ(引数)などに基づき、動作モジュール30のI/Fを実現するJavaオブジェクトを生成する。
If the requested proxy object 52 1 has not yet been generated on the first virtual machine 21 1 (when the generated proxy object 52 1 has not been registered), the proxy
代理オブジェクト管理部511は、生成された代理オブジェクト521に対して、管理識別子を発行し、管理対象の代理オブジェクト52として登録する(ステップS33)。このとき、代理オブジェクト管理部511は、生成後のI/FをRMI通信I/F部531に定義する。RMI通信I/F部531には、生成後の代理オブジェクト521、メソッド名(関数名)、及びメソッドパラメータ(引数)が定義される。
The proxy
代理オブジェクト管理部511は、生成後の代理オブジェクト521を、RMI通信I/F部531を介して(RMI通信により)、第2仮想マシン212に転送し、取得要求に応答する(ステップS34)。
Proxy
第2仮想マシン212では、代理オブジェクト521が転送されたことにより、サブセットモジュール412が有する代理オブジェクト管理部512により、代理オブジェクト522が生成される(ステップS41)。これにより、各仮想マシン21では、RMI通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)が生成される。
In the second
代理オブジェクト管理部512は、生成した代理オブジェクト522に対して、管理識別子を発行し、管理対象の代理オブジェクト52として登録する(ステップS42)。このとき、代理オブジェクト管理部512は、生成後のI/FをRMI通信I/F部532に定義する。
Proxy
生成後、登録された代理オブジェクト522は、代理オブジェクト管理部512に対して、第1仮想マシン211上で動作する要求動作モジュール30の代理呼出を要求する(ステップS43)。
After generation, proxy object 522 that is registered, to the proxy
代理オブジェクト管理部512は、要求に応じて、第1仮想マシン211上で動作する要求動作モジュール30を呼び出し、処理の実行を要求する(ステップS44)。つまり、代理オブジェクト管理部512は、RMI通信(リモート)によるメソッド呼出が可能な一対の代理オブジェクト52を介して、要求された動作モジュール30に対応する関数(外部メソッド)を呼び出す。このとき、代理オブジェクト522からは、動作モジュール30が処理を実行する際に必要なメソッドパラメータ値(引数値)が、RMI通信により代理オブジェクト521に渡される。
Proxy
第1仮想マシン211では、サブセットモジュール411が有する代理オブジェクト管理部511により、代理オブジェクト521の動作モジュールI/Fを介して(ステップS51)、サブセットモジュール411の起動時に登録された動作モジュール30に対応する処理要求部4121に、処理の実行を要求する(ステップS52)。このとき、代理オブジェクト521からは、動作モジュール30が処理を実行する際に必要なメソッドパラメータ値(引数値)が、RMI通信により処理要求部4121に渡される。
In the first
処理要求部4121は、上記メソッドパラメータ値(引数値)に基づき、対応する動作モジュール30を実行し、処理を行う(ステップS53)。
その結果、処理要求部4121からは、処理の実行結果が要求元に応答される。これにより、第1仮想マシン212では、一対の代理オブジェクト52を介して、RMI通信により、第1仮想マシン211からの実行結果を受け取る。この実行結果は、要求受付部4112を介して、Javaアプリケーション2222へと渡される。
As a result, the
本実施形態に係る画像処理装置100では、一対の代理オブジェクト52を介して、仮想マシン間通信を擬似的に実現することで、第2仮想マシン212から第1仮想マシン211が有する動作モジュール30を利用し、第2仮想マシン212が有する機能を実現することができる。
In the
<まとめ>
以上のように、本実施形態に係る画像処理装置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通信(リモート)によるメソッド呼出が可能な一対のオブジェクト(異なる仮想マシンで同一インスタンスのオブジェクト)として生成される。
<Summary>
As described above, according to the
本実施形態に係る画像処理装置100は、機能実行要求を受け付けた第2仮想マシン212上で動作する代理オブジェクト522から、RMI通信I/F部53を介して、第1仮想マシン211上で動作する代理オブジェクト521を呼び出し、第1仮想マシン211が有する動作モジュール30に実行要求を行う。つまり、画像処理装置100では、各仮想マシン21に生成された一対の代理オブジェクト52を介して、仮想マシン21上の動作モジュール30の実行を制御し、要求された機能を実現する。
The
これによって、画像処理装置100は、仮想マシン間のRMI通信対応における通信I/Fの追加・変更の作業負荷が軽減できる。
As a result, the
なぜなら、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fに変更が生じた場合であっても、RMI通信I/F部53と動作モジュール30とが分離されていることから、RMI通信I/F部53を変更する必要がない(通信I/Fの隠蔽が可能となる)からである。
This is because in the
また、本実施形態に係る画像処理装置100では、仮想マシン間で呼び出す動作モジュール30のI/Fを新たに追加する場合であっても、動作モジュール30のI/Fを実現する代理オブジェクト52を動的に生成する代理オブジェクト管理部51を有していることから、既存I/Fを変更する必要がない(リコンパイルを行わなくてもよい)からである。
Further, in the
ここまで、上記実施形態の説明を行ってきたが、実施形態に係る画像処理装置100が有する「動作モジュール実行制御機能」は、図を用いて説明を行った各処理手順を動作環境(プラットフォーム)にあったプログラミング言語でコード化したプログラムが、CPU111により実行されることで実現される。
The above-described embodiment has been described so far. The “operation module execution control function” of the
上記プログラムは、コンピュータが読み取り可能な記録媒体114aに格納することができる。上記記録媒体114aには、例えば、SDメモリカード及びUSBメモリなどがある。
The program can be stored in a computer-
よって、上記プログラムは、上記記録媒体114aに記憶させることで、記録媒体114aを読み取り可能な外部記憶I/F114などを介して画像処理装置100にインストールすることができる。また画像処理装置100は、ネットワークI/F113を備えていることから、インターネットなどの電気通信回線を用いて上記プログラムをダウンロードし、インストールすることもできる。
Therefore, by storing the program in the
最後に、上記実施形態に挙げた形状や構成に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。 Finally, the present invention is not limited to the requirements shown here, such as combinations of other elements with the shapes and configurations described in the above embodiments. With respect to these points, the present invention can be changed within a range that does not detract from the gist of the present invention, and can be appropriately determined according to the application form.
10 OS
21 JavaVM(1:第1仮想マシン側、2:第2仮想マシン側)
211 ヒープメモリ
22 Javaコンポーネント
221 Javaプラットフォーム
221a Javaモジュール群
221b SDK API
222 Javaアプリケーション
222a 標準アプリケーション(1:第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 スキャナ(読み取り部)
10 OS
21 JavaVM ( 1 : first virtual machine side, 2 : second virtual machine side)
222 Java application 222a Standard application ( 1 : first virtual machine side)
41 Subset module 411
413 Virtual
53 RMI Communication I /
112
114 External storage I / F (a: recording medium)
120
140 Scanner (reading unit)
Claims (7)
前記標準機能を実現する複数の動作モジュールと、
各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、
前記通信インタフェース部が、
前記仮想マシン上での機能実行要求を受け付ける受付手段と、
前記仮想マシン間通信を行う通信手段と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段と、を有し、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記通信手段による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする画像処理装置。 An image processing apparatus in which a standard function of the image processing apparatus and an extended function using the standard function operate on different virtual machines,
A plurality of operation modules for realizing the standard functions;
A communication interface unit that operates on each virtual machine and performs communication between virtual machines common to the plurality of operation modules;
The communication interface unit is
Accepting means for accepting a function execution request on the virtual machine;
A communication means for performing communication between the virtual machines;
Generating means for generating an operation module interface realizing unit that is interposed between the interface of the communication means and the operation module, and realizes the interface of the operation module;
When receiving the execution request for the extended function by the receiving means,
By communication between virtual machines by the communication means,
A second operation module that is generated and operated by the generation unit on another virtual machine from the first operation module interface realization unit that is generated and operated by the generation unit on the virtual machine that has received the function execution request. An image processing apparatus that calls an interface implementation unit and makes an execution request to the operation module of another virtual machine.
Java(登録商標)オブジェクトのシリアライズ(直列化)により、
各仮想マシンにおいて、前記仮想マシン間通信による前記動作モジュールのメソッド呼出が可能な同一インスタンスの動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする請求項1に記載の画像処理装置。 The generating means includes
By serializing Java (registered trademark) objects,
The image processing apparatus according to claim 1, wherein each virtual machine generates an object of an operation module interface realization unit of the same instance capable of calling a method of the operation module by communication between the virtual machines.
前記通信インタフェース部は、
仮想マシン上に前記動作モジュールインタフェース実現部が生成されているか否かを判定する判定手段を、有し、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記判定手段により、処理の実行が要求された動作モジュールに対応する前記第1の動作モジュールインタフェース実現部の生成有無を判定し、
生成されていないと判定された場合に、
前記生成手段により、他の仮想マシンに対して、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトの取得を要求し、応答されたオブジェクトを、前記第1の動作モジュールインタフェース実現部のオブジェクトとして生成することを特徴とする請求項2に記載の画像処理装置。 In the virtual machine on which the extension function operates,
The communication interface unit
Determination means for determining whether or not the operation module interface realization unit is generated on a virtual machine;
When receiving the execution request for the extended function by the receiving means,
The determination unit determines whether or not the first operation module interface realization unit corresponding to the operation module requested to execute the process is generated,
If it is determined that it has not been generated,
The generation means requests the other virtual machine to acquire an object of the second operation module interface realization unit corresponding to the operation module requested to execute the process, The image processing apparatus according to claim 2, wherein the image processing apparatus is generated as an object of one operation module interface realization unit.
前記通信インタフェース部は、
前記拡張機能の実行要求を受け付けた仮想マシンから、前記第2の動作モジュールインタフェース実現部のオブジェクトの取得要求を受け付けると、
前記判定手段により、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部の生成有無を判定し、
生成されていないと判定された場合に、
前記生成手段により、前記動作モジュールの登録情報に基づき、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトを生成し、生成したオブジェクトを、取得要求元である仮想マシンに応答することを特徴とする請求項3に記載の画像処理装置。 In a virtual machine on which the standard function operates,
The communication interface unit
When an acquisition request for an object of the second operation module interface realization unit is received from a virtual machine that has received the execution request for the extended function,
The determination unit determines whether or not the second operation module interface realization unit corresponding to the operation module requested to execute the process is generated,
If it is determined that it has not been generated,
The generation unit generates an object of the second operation module interface realization unit corresponding to the operation module requested to execute the process based on the registration information of the operation module, and the generated object is obtained at the acquisition request source. The image processing apparatus according to claim 3, wherein the image processing apparatus responds to a certain virtual machine.
前記生成手段は、
前記通信インタフェース部の起動時に登録された前記動作モジュールのメソッド名及びメソッドパラメータに基づき、処理の実行が要求された動作モジュールに対応する前記第2の動作モジュールインタフェース実現部のオブジェクトを生成することを特徴とする請求項4に記載の画像処理装置。 In a virtual machine on which the standard function operates,
The generating means includes
Based on the method name and method parameter of the operation module registered when the communication interface unit is activated, generating an object of the second operation module interface realizing unit corresponding to the operation module requested to execute the process. The image processing apparatus according to claim 4.
前記通信インタフェース部が、
前記仮想マシン上での機能実行要求を受け付ける受付手順と、
前記仮想マシン間通信を行う通信手順と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手順と、を有し、
前記受付手順により、前記拡張機能の実行要求を受け付けると、
前記通信手順による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手順により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手順により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うことを特徴とする動作モジュール実行制御方法。 In an environment in which a standard function of an image processing device and an extended function using the standard function operate on different virtual machines, a plurality of operation modules that realize the standard function, and a plurality of operation modules that operate on each virtual machine, An operation module execution control method between virtual machines in an image processing apparatus having a communication interface unit that performs common inter-virtual machine communication for operation modules,
The communication interface unit is
A reception procedure for receiving a function execution request on the virtual machine;
A communication procedure for performing communication between the virtual machines;
A generation procedure for generating an operation module interface realization unit that is interposed between the interface of the communication means and the operation module, and realizes the interface of the operation module;
When an execution request for the extended function is received by the reception procedure,
By communication between virtual machines according to the communication procedure,
A second operation module that is generated and operated by the generation procedure on another virtual machine from the first operation module interface realizing unit that is generated and operated by the generation procedure on the virtual machine that has received the function execution request. An operation module execution control method that calls an interface realization unit and issues an execution request to the operation module of another virtual machine.
前記通信インタフェース部が動作することにより、
コンピュータを、
前記仮想マシン上での機能実行要求を受け付ける受付手段と、
前記仮想マシン間通信を行う通信手段と、
前記通信手段のインタフェースと前記動作モジュールとの間に介在し、前記動作モジュールのインタフェースを実現する動作モジュールインタフェース実現部を生成する生成手段として機能させ、
前記受付手段により、前記拡張機能の実行要求を受け付けると、
前記通信手段による仮想マシン間通信により、
前記機能実行要求を受け付けた仮想マシン上で、前記生成手段により生成され動作する第1の動作モジュールインタフェース実現部から、他の仮想マシン上で、前記生成手段により生成され動作する第2の動作モジュールインタフェース実現部を呼び出し、他の仮想マシンが有する前記動作モジュールに実行要求を行うように動作させる動作モジュール実行制御プログラム。 In an environment in which a standard function of an image processing device and an extended function using the standard function operate on different virtual machines, a plurality of operation modules that realize the standard function, and a plurality of operation modules that operate on each virtual machine, An operation module execution control program between virtual machines in an image processing apparatus having a communication interface unit that performs common inter-virtual machine communication for the operation modules,
By operating the communication interface unit,
Computer
Accepting means for accepting a function execution request on the virtual machine;
A communication means for performing communication between the virtual machines;
Intervening between the interface of the communication means and the operation module, function as a generation means for generating an operation module interface realization unit for realizing the interface of the operation module;
When receiving the execution request for the extended function by the receiving means,
By communication between virtual machines by the communication means,
A second operation module that is generated and operated by the generation unit on another virtual machine from the first operation module interface realization unit that is generated and operated by the generation unit on the virtual machine that has received the function execution request. An operation module execution control program that calls an interface realization unit and causes an operation request to be issued to the operation module of another virtual machine.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009260260A JP2011107834A (en) | 2009-11-13 | 2009-11-13 | Image processing apparatus, method and program for controlling operation module execution between virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009260260A JP2011107834A (en) | 2009-11-13 | 2009-11-13 | Image processing apparatus, method and program for controlling operation module execution between virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011107834A true JP2011107834A (en) | 2011-06-02 |
Family
ID=44231253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009260260A Pending JP2011107834A (en) | 2009-11-13 | 2009-11-13 | Image processing apparatus, method and program for controlling operation module execution between virtual machines |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011107834A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149051A (en) * | 2012-01-19 | 2013-08-01 | Ricoh Co Ltd | Information processing device and program |
JP2014059718A (en) * | 2012-09-18 | 2014-04-03 | Ricoh Co Ltd | Information processor, information processing method, and program |
JP2015097061A (en) * | 2013-11-15 | 2015-05-21 | 株式会社東芝 | Information processing apparatus, information processing method, and program |
JP2017175501A (en) * | 2016-03-25 | 2017-09-28 | 京セラドキュメントソリューションズ株式会社 | Image forming device and specific information collection program |
-
2009
- 2009-11-13 JP JP2009260260A patent/JP2011107834A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149051A (en) * | 2012-01-19 | 2013-08-01 | Ricoh Co Ltd | Information processing device and program |
JP2014059718A (en) * | 2012-09-18 | 2014-04-03 | Ricoh Co Ltd | Information processor, information processing method, and program |
JP2015097061A (en) * | 2013-11-15 | 2015-05-21 | 株式会社東芝 | Information processing apparatus, information processing method, and program |
US10275592B2 (en) | 2013-11-15 | 2019-04-30 | Kabushiki Kaisha Toshiba | Information processing device, information processing method, and computer program product |
JP2017175501A (en) * | 2016-03-25 | 2017-09-28 | 京セラドキュメントソリューションズ株式会社 | Image forming device and specific information collection program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9830135B2 (en) | Declarative and pluggable business logic for systems management | |
JP5259924B2 (en) | Dynamic service generation for legacy components | |
US10656971B2 (en) | Agile framework for vertical application development and delivery | |
Zimmer et al. | Beyond BIOS: developing with the unified extensible firmware interface | |
US20150220308A1 (en) | Model-based development | |
WO2010141387A2 (en) | System and method for converting a java application into a virtual server image for cloud deployment | |
JP4843386B2 (en) | Apparatus, information processing method, information processing program, and recording medium | |
KR102283736B1 (en) | Method and apparatus for generating automatically setup code of application software baesed autosar | |
JP2014170515A (en) | Device, information storage program, and information storage method | |
JP2011123842A (en) | Image forming apparatus, function addition method, and program | |
JP2012018530A (en) | Image forming apparatus and application management program | |
JP7098427B2 (en) | Information processing equipment, control methods and programs for information processing equipment | |
US20130212595A1 (en) | Dynamic injection of code into running process | |
US9626251B2 (en) | Undo configuration transactional compensation | |
JP2011107834A (en) | Image processing apparatus, method and program for controlling operation module execution between virtual machines | |
JP2011061459A (en) | Image forming device, installing method and program | |
CN109660688B (en) | Information processing apparatus and control method thereof | |
JP2011180771A (en) | Information processing device, emulation system and emulation program | |
JP2015197845A (en) | Information processing apparatus and control method of the same, and program | |
JP2011060236A (en) | Information processor, development support program, and software integrated development environment | |
JP5144624B2 (en) | Image forming apparatus | |
Wang et al. | On-demand service hosting on production grid infrastructures | |
JP2011034453A (en) | Image processor, information providing method, and information providing program | |
JP4500326B2 (en) | Inter-process communication program and image information processing apparatus | |
JP3977039B2 (en) | Communication program generating method for image information processing apparatus and communication program generating apparatus for image information processing apparatus |