JP2016038806A - 画像形成装置およびリソース管理方法 - Google Patents

画像形成装置およびリソース管理方法 Download PDF

Info

Publication number
JP2016038806A
JP2016038806A JP2014163049A JP2014163049A JP2016038806A JP 2016038806 A JP2016038806 A JP 2016038806A JP 2014163049 A JP2014163049 A JP 2014163049A JP 2014163049 A JP2014163049 A JP 2014163049A JP 2016038806 A JP2016038806 A JP 2016038806A
Authority
JP
Japan
Prior art keywords
resource
application
service
amount
api
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
JP2014163049A
Other languages
English (en)
Other versions
JP6423645B2 (ja
JP2016038806A5 (ja
Inventor
邦匡 藤澤
Kunimasa Fujisawa
邦匡 藤澤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014163049A priority Critical patent/JP6423645B2/ja
Priority to US14/820,715 priority patent/US9571687B2/en
Publication of JP2016038806A publication Critical patent/JP2016038806A/ja
Publication of JP2016038806A5 publication Critical patent/JP2016038806A5/ja
Application granted granted Critical
Publication of JP6423645B2 publication Critical patent/JP6423645B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00954Scheduling operations or managing resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/0096Simultaneous or quasi-simultaneous functioning of a plurality of operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)

Abstract

【課題】複数のアプリケーションを並列に動作させるアプリケーション実行環境で、アプリケーション毎のリソース管理が可能になり、リソースが限られているアプリケーション実行環境においてリソース管理の追加的な実施を容易に行える画像形成装置およびリソース管理方法を提供する。【解決手段】アプリケーション毎にアプリケーションの使用する最大リソース量を取得し、アプリケーション毎にアプリケーション最大使用リソース量取得手段で取得した最大使用リソース量と、アプリケーションが使用しているリソース量とを記憶する。アプリケーションがリソースを取得・解放するためにリソース使用API604を呼び出すと、リソース使用量の上限と使用量とからリソースの生成の可否判断をして可であればリソースを生成するとともに使用リソース量の更新をおこなう。【選択図】図6

Description

本発明は画像形成装置およびリソース管理方法に関するものである。
現在の多機能周辺装置(MFP)はソリューションの実現のため、ドキュメントのコピーやスキャン、印刷といったMFPに組み込まれた機能以外のアプリケーションを実行する機能をもつものが増えてきている。多くのMFPではアプリケーション実行環境としてJava(登録商標)の実行環境をもち、Javaで記述されたアプリケーションを実行することができる。アプリケーション実行環境の例としてはキヤノンのMEAP等があげられる。PC上のJavaアプリケーション場合には一つのJavaプロセスは一つのアプリケーションを実行する。一方、MFPではCPUやメモリの制限のためOSGiフレームワークなどを使用して一つのJavaのプロセスで複数のアプリケーションを実行するものが多い。OSGiフレームワークは一つのJavaVM上で複数のアプリケーションを実行するためのアプリケーションプラットフォームである。そのためMFP上で実行しているアプリケーションの一つにバグがありリソースリーク、例えばメモリリークを起こしている場合、OutOfMemoryError等のリソース不足によるエラーが発生しすべてのアプリケーションが停止してしまう可能性がある。また、リソース不足によるエラー、例えばOutOfMemoryError等のエラーはアプリケーションがリソースを要求したときに、割り当てられるリソースが無かった場合に発生するため、問題のないアプリケーションの実行中に発生することがある。
特開2005-269439号公報 特開2013-145503号公報
そのためリソースリークを起こしているアプリケーションを特定することは困難であった。
一方、特許文献1で示されているようにスレッド毎にリソースを計測する技術は存在した。しかし、特許文献1の図13のように一つのスレッドが複数のアプリケーションのコードを実行するような場合にアプリケーション毎の使用リソースを計測することができなかった。
さらに特許文献2のようにアプリケーション実行環境自体に修正を加えてリソース管理を行う技術は存在する。しかしメモリやCPU等のリソースが限られているMFPにおいてアプリケーション実行環境にリソース管理を追加する修正は困難である。
本発明は上記従来例に鑑みて成されたもので、アプリケーション毎にリソースの管理をおこなうリソース管理装置及び方法を提供することを目的とする。さらに、リソースが限られているアプリケーション実行環境においてリソース管理を追加的に実施できる画像形成装置及び該装置によるリソース管理方法を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を有する。すなわち、アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持手段と、
アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理手段とを有する。
本発明によれば、複数のアプリケーションを並列に動作させるアプリケーション実行環境で、アプリケーション毎のリソース管理が可能になる。また、リソースが限られているアプリケーション実行環境においてリソース管理の追加的な実施を容易に行える。
システム構成図 ソフトウェア構成図 アプリケーションプラットフォーム構成図 アプリケーションのAPI登録手順のフローチャート アプリケーションのAPI使用手順のフローチャート リソースサービスの提供するAPIを示す図 リソースサービスのソフトウェア構成図 アプリケーションファイルの構成図 リソースサービスのリソース量記憶部を示す図 サービスAPI部初期化処理のフローチャート リソース取得のフローチャート リソース取得のフローチャート アプリケーションのファイル書き込みのフローチャート 実施例2のリソースサービスのプログラムを保持するJarファイルの構造を示す図 実施例2のリソースサービスの起動処理のフローチャート リソースサービスとRSIサービスの機能の比較表を示す図 実施例2のリソースサービスのソフトウェア構成図 実施例2のリソースサービスのソフトウェア構成図 実施例2のリソース取得シーケンス図を示す図 RSIサービスのリソース使用量記憶テーブルを示す図 実施例3のRSIサービスのリソース取得のフローチャート 実施例3リソースサービスのリソース量記憶部の更新処理のフローチャート
[実施例1]
<画像形成装置のハードウェア>
図1は、たとえば多機能周辺装置などである画像形成装置100のハードウェア構成を示すブロック図である。CPU101は、画像形成装置100のソフトウェアプログラムを実行し、装置全体の制御を行なうプロセッサあるいはコンピュータである。ROM102は、リードオンリーメモリであり、装置のブートプログラムや固定パラメータ等が格納されている。RAM103は、ランダムアクセスメモリであり、CPU101が装置を制御する際に、一時的なデータの格納などに使用する。外部記憶装置104は、インストールされたアプリケーションやアプリケーションのデータや印刷データの格納など、様々なデータの格納に使用する。USBH I/F制御部105はUSBホストインターフェースを制御するためのものであり、さまざまなUSBデバイスとの通信を制御する。スキャナI/F制御部106は、スキャナ111を制御する装置である。プリンタI/F制御部107は、プリンタ112を制御する装置である。NVRAM108は、不揮発性のメモリでありアプリケーション管理装置の各種設定値が保存される。パネル制御部109は、操作パネル113を制御し、各種情報の表示、ユーザからの指示入力を行なうためのものである。ネットワークI/F制御部110は、ネットワーク115とのデータの送受信を制御する。バス114には、CPU101、ROM102、RAM103、外部記憶装置104、USBH I/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107、NVRAM108、パネル制御部109、ネットワークI/F制御部110が接続される。またバス114は、CPU101からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。ICカードリーダ116は認証をおこなうためのUSBデバイスである。
<画像形成装置のソフトウェア>
画像形成装置100は、例えばOSGiプラットフォームなどのアプリケーションプラットフォームを提供し、そのアプリケーションプラットフォーム上では、例えばJAVA(登録商標)で記述した複数のアプリケーションプログラムをインストールし、並列に実行することが可能である。画像形成装置100は、本明細書ではアプリケーションを管理する装置としての観点からアプリケーション管理装置とも呼ばれ、また、アプリケーションのリソース管理を行う装置としての観点からリソース管理装置と呼ばれる。
図2は画像形成装置100のソフトウェア200の構成を示す図である。ハードウェア201はアプリケーション管理装置のソフトウェアを実行する、例えば図1に示したRAM102やCPU101等である。OS202はプロセスの管理、メモリ管理、入出力管理を実行する。Nativeアプリ203は、コピー等、機器の基本的な機能を実現するプログラムである。ソフトウェア200はJavaVM(Java仮想マシン)204とプリケーションプラットフォーム205とから構成される。JavaVM204はJavaプログラムを実行する仮想マシンである。アプリケーションプラットフォーム205は単一のJavaVM上で少なくとも一つ以上のアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理をおこなうプログラムであり、たとえばOSGiプラットフォームなどである。アプリケーションA206、アプリケーションB207はアプリケーションプラットフォーム205上で動作するアプリケーションプログラムである。JavaVM204は、アプリケーションプラットフォーム205およびアプリケーションA206、アプリケーションB207は一つのJavaアプリケーション208として処理する。アプリケーションプラットフォーム205上で実行されるアプリケーションのひとつとして、後述するリソースサービスプログラムがある。PC209はアプリケーションプラットフォーム205とネットワーク115を経由して通信を行い、アプリケーションプラットフォーム205に対してアプリケーションプログラムの起動、停止、インストール、アンインストールの指示をおこなう。
図3はアプリケーションプラットフォーム205の構成を示す図である。アプリケーションプラットフォーム205はアプリケーションプログラムの起動、停止、インストール、アンインストールといったアプリのライフサイクルの管理をおこなうアプリケーション管理部301と、サービスAPI管理部302とを持つ。サービスAPI管理部302はアプリケーションプラットフォーム上で動作するアプリケーションが公開する機能(すなわちサービス)を他のアプリケーションから使用できるようにするためのサービスAPI部306の生成を管理する。サービスAPI管理部302は、機能を提供するアプリケーションが公開するAPI303とそのアプリケーションの識別子304とから構成されるテーブル305をもつ。テーブル305には、例えば新たなアプリケーションがインストールされたときに、そのアプリケーションのアプリケーション識別子とサービスを特定するためのAPIとが登録される。
そして機能を利用するアプリケーションからの要求に対応するサービスAPI部306を、アプリケーションの識別子304で識別される機能を提供するアプリケーションから取得し、機能を利用するアプリケーションに渡す。サービスAPI部306は機能を使用するアプリケーションの識別子を保存するフィールド307と、一つ以上の機能を提供するアプリケーションが公開しているAPI308から構成される。機能を使用するアプリケーションはサービスAPI部306を取得し、サービスAPI部306に実装されているAPI308を呼び出すことにより機能を提供するアプリケーションの機能を使用する。機能を使用するアプリケーションがサービスAPI部306を呼び出すと、サービスAPI部306は、機能を使用するアプリケーションのアプリケーション識別子307を付加して機能を提供するアプリケーション本体の機能を実現するAPIを呼び出す。このサービスAPIを介したサービスの要求および提供の手順は、図4A、図4Bを参照して後述する。
図5は、本実施形態に係るリソースサービスが他のアプリケーションに提供するAPIの表である。リソースサービスのサービスAPIがこのAPIを実装し、リソースサービスを使用するアプリケーションはこれらのAPIを呼び出しリソースの取得、使用をおこなう。具体的には、APIとして公開された各クラスのオブジェクトの、要求するサービスに応じたメソッドを呼び出す。図5のクラス欄はリソースサービスがアプリケーションに提供するクラスである。「ラップしているJava標準クラス」欄は、RSFileクラス、RSFileInputStreamクラス、RSFileOutpuStreamクラス、RSSocketクラス、RSThreadクラスがそれぞれラップしているJava標準クラス名である。メソッド欄はそれぞれのクラスのメソッドのうちリソースサービス特有の機能が実装されているメソッドである。なおJava標準クラスをラップして定義されているクラスは、リソースサービスにより提供されるリソースオブジェクトであり、図5に示したメソッドは、ラップされたJava標準クラスのメソッドのうち、リソースサービス特有の機能が実装されているメソッドである。説明欄は各クラスやメソッドが提供するリソースサービス特有の機能の説明である。
機能提供アプリケーションが公開するAPIは例えばクラスとメソッドの組み合わせなどで特定される。例えばResourceServiceクラスのgetFileメソッドは、"ResourceService.getFile"などと指定され、当該APIが特定されて呼び出される。したがって、サービスAPI305には、図5に示したクラス名と当該クラスに属するメソッド名との組み合わせが登録されている。
図5に示したAPIは説明欄に記載した通りのサービスを提供する。たとえばResourceServiceクラスはアプリケーションがリソースサービス601に対してリソースの取得要求や解放要求等を行うためのクラスであり、Java標準クラスをラップしていない。ResourceServiceクラスのgetFileメソッドは、ファイルリソースのリソースオブジェクトを取得するためのメソッドであり、RSfileクラスのインスタンス、すなわち確保したリソースのリソースオブジェクトを返す。ファイルオブジェクトはファイルリソースに相当する。getSocket、getThreadメソッドはそれぞれソケットオブジェクトおよびスレッドオブジェクトを取得するためのメソッドであり、それぞれたとえば通信リソースおよびコンピューティングリソースに相当する。
このほかのクラスはリソースオブジェクトのクラスであり、Java標準クラスをラップして定義されている。それぞれのクラスの説明は、当該クラスがラップしているJava標準クラスのメソッドのうちリソースサービス特有の機能が実装されているメソッドである。ラップしているJava標準クラスのメソッドと同じ処理を行うメソッドについては説明は省略した。たとえばRSfileクラスはJava.io.fileすなわちfileクラスをラップしており、deleteメソッドは、fileクラスのdeleteメソッドに加えて、削除したファイルサイズ分のストレージ使用量を、現在の使用量から減算する処理を実行する。このほかのfileクラスのメソッドについては、fileクラスと同様の処理が行われる。その他のクラス及びメソッドについての説明は省くが、上述した例と同様に図5を読めばよい。このため、リソースサービスを用いて生成したリソースオブジェクトは、リソースサービスを用いずに生成したリソース(Java標準のリソースオブジェクト)と同様に扱うことができる。
<サービスAPI登録処理>
図4Aは機能を公開するアプリケーション401がサービスAPI管理部302にAPIを登録する処理を、図4Bは機能を使用するアプリケーションがサービスAPI部を取得する処理をそれぞれ示す図である。まず、図4Aを参照してAPI登録処理について説明する。
機能を公開する、すなわちサービスを提供するアプリケーション401がサービスAPI登録処理を開始する(S402)。機能を公開するアプリケーション401はサービスAPI管理部302に対してサービスAPI情報とアプリケーション識別子とを引数としてサービスAPI登録要求C404を出す(S403)。サービスAPI情報はサービスを特定するための識別名等の情報を含む。サービスAPI管理部302から登録通知R406が返ってくるとS409に遷移し、サービスAPI登録処理を終了する(S409)。エラー(R405)が返ってきたらエラー処理を行い(S408)、サービスAPI登録処理を終了する(S409)。
サービスAPI管理部302はサービスAPI登録要求C404を受けるとサービスAPIおよびアプリケーションの登録処理を開始する(S416)。まず、S416で受信したAPI登録要求C404からサービスAPI情報とアプリケーション識別子とを取得する(S417)。次にテーブル305を検索し、S417で取得したサービスAPI情報がテーブル305に登録済みかを調べる(S418)。登録済みであれば機能を公開するアプリケーション401に対してエラーR405を返し(S419) 、サービスAPI登録処理を終了する(S422)。未登録であればS417で取得したサービスAPI情報とアプリケーション識別子とをテーブル305に登録する(S420)。さらに機能を公開するアプリケーション401に対して登録通知R406を返し(S421)、サービスAPI登録処理を終了する(S422)。本実施例ではリソースサービスがサービスを提供するアプリケーションとして図4Aに示すサービスAPIの登録処理を実行し、リソースサービスのサービスAPIとリソースサービスのアプリケーション識別子の登録をおこなう。
<サービスAPI取得処理>
次に図4Bを参照してサービスAPI部取得処理について説明する。機能を使用するアプリケーション440はサービスAPI部取得処理を開始する(S434)。次に使用したい機能を示すサービスAPI情報とアプリケーション440自身のアプリケーション識別子を引数にサービスAPI管理部302に対してサービスAPI部要求C423を出す(S435)。サービスAPI管理部302からサービスAPI部が取得できたかを調べる(S436)。エラーが返ってサービスAPI部を取得できなかった場合はエラー処理をおこない(S439)、サービスAPI部取得処理を終了する(S438)。サービスAPI部を取得できた場合はサービスAPI部を介してアプリ提供機能すなわち他のアプリケーションにより提供されるサービスを使用した処理を行い(S437)、サービスAPI部取得処理を終了する(S438)。リソースサービスを使用するアプリケーション440では、S437はリソースを取得、使用する処理となる。
サービスAPI管理部302は機能を使用するアプリケーション440からサービスAPI部要求C423を受けるとサービスAPI部生成処理を開始する(S424)。アプリケーションAPI管理部302はサービスAPI部要求C423から、要求されたアプリケーションAPI情報を取得する(S425)。次にS425で取得したアプリケーションAPI情報をキーにテーブル305を検索し、存在しなければサービスAPI部要求C423を発行したアプリケーション440に対してエラーR433を通知し(S432)、サービスAPI部生成処理を終了する(S431)。存在すればアプリケーションAPI情報に対応するアプリケーション識別子を取得する(S427)。次にS427で取得したアプリケーション識別子で識別される、機能を公開しているアプリケーション401に対して機能を使用するアプリケーション440のアプリケーション識別子を引数にサービスAPI部生成要求C410を出す(S428)。サービスAPI部を含むサービスAPI部応答R415を受信すると、機能を使用するアプリケーション440にサービスAPI部R430を提供し(S429)、サービスAPI部取得処理を終了する(S431)。
機能を公開しているアプリケーション401は、サービスAPI管理部302からサービスAPI部生成要求C410を受信したらサービスAPI部の生成処理を開始する(S411)。次にサービスAPI部生成要求C410から機能を使用するアプリケーション440のアプリケーション識別子を取得する(S412)。さらにサービスAPI部を生成し、S412で取得した、機能を使用するアプリケーション501のアプリケーション識別子をアプリケーション識別子保存フィールド307に保存し、サービスAPI部の初期化処理をおこなう(S414)。サービスAPI管理部302に対してサービスAPI部を返し(R414)、サービスAPI部生成処理を終了する(S414)。なお、本実施例ではサービスAPI部はオブジェクトであり、ステップS413におけるサービスAPI部の生成及び初期化は、サービスAPIのインスタンスの生成及び初期化で実現される。したがってステップS437では、機能を使用するアプリケーション440は、生成されたオブジェクトの使用する機能に応じたメソッドを呼び出すことでAPIを通じて供されるサービスを使用する。またステップS413の詳細は図9を参照して後述する。
以上、図4A,図4Bで説明した仕組みはたとえばOSGiプラットフォームで提供され、機能提供アプリケーション(サービスバンドル)の登録、及び機能利用アプリケーション(サービス消費バンドル)によるサービスAPI部の取得はOSGiで提供される機能で実現できる。
<リソースの取得の例>
図6は、リソース管理に係るサービスを提供するプログラムであるリソースサービス601の構成と、リソースサービス601によるサービスを使用してリソースサービス601からリソースを取得するリソースサービス対応アプリケーション607の構成を示す図である。リソースサービス601からリソースを取得するアプリケーション607は使用するリソース量が宣言されているアプリケーション情報608とアプリの機能を実現するプログラム609とから構成される。プログラムはリソースサービス601から取得したリソースを使用した処理を実行する。
リソースサービス601はアプリケーションプラットフォーム205上で動作するアプリケーションである。リソースサービス601は、アプリケーションから使用するリソースの宣言量を取得するアプリ宣言量取得部602、アプリ宣言量取得部602で取得したリソース量とアプリが使用しているリソース量とを、例えばアプリケーション識別子と関連付けるなどしてアプリ毎に記憶するリソース量記憶部603を持つ。さらにアプリ毎にリソースサービスのサービスAPI部604、アプリケーションに対してリソースを提供するかを判断するリソース管理部605、リソースを生成するリソース生成部606を持つ。サービスAPI部604は図3に示すサービスAPI部306に相当し、アプリケーションとの対応付けは、アプリケーション識別子307により実装される。
アプリ宣言量取得部602はリソースサービス対応アプリケーション607からアプリケーション607が使用すると宣言したリソース量の情報を取得する(610)。
リソースサービス対応アプリケーション607はアプリケーションA用のリソースサービスAPI部を呼び出し、リソース取得要求(611)をおこなう。アプリケーションA607に割り当てられるリソースがある場合、リソースサービス601はアプリケーションA607にリソースを返す(612)。無い場合はエラーを返す(613)。
<アプリケーション情報>
図7はリソースを取得するアプリケーション607を構成するアプリケーション情報608の詳細を示す図である。アプリケーション情報608にはアプリケーションの設定情報がキーとバリューのリストとして保存されている。使用リソース情報として使用するディスクサイズの最大値を示す最大ディスクサイズ701、使用するソケットの数の最大値を示す最大ソケット数702、使用するスレッドの数の最大値を示す最大スレッド数703、使用する開いたファイルの数の最大値を示す最大オープンファイル数704が、キーと対応する値のリストとして記述されている。もちろんこれらはリソースの一例であって、他のリソースについての最大値の宣言を含んでもよい。またアプリケーションの名称や識別ID(識別子)なども情報も記述されている。アプリケーション情報608は、たとえばJava(登録商標)ではマニフェストに含まれている。
<リソース量記憶部>
図8はソース量記憶部603の詳細を示す図である。リソース量記憶部603はアプリケーション毎(すなわちアプリケーション名801毎)に、アプリケーションが宣言する宣言リソース量802と現在アプリケーションが使用しているリソース量803とを記憶している。宣言リソース量は、該当するアプリケーションのアプリケーション情報608から取得したリソース情報に含まれた各リソースの最大値である。たとえばアプリケーションAに対しては、ファイルリソースとして20MB、ファイルデスクリプタ(ファイルの識別子に相当する)が20、ソケットリソースが10、スレッドリソースが10という各リソースの最大値が登録されている。さらにリソース管理部603には、リソースサービス601が提供可能な各リソースの最大値が登録されていてもよい。リソースサービス601が提供可能な各リソースの最大値は、あるいはリソース管理部605などに登録されていてもよい。リソースサービス601が提供可能な各リソースの最大値は、たとえばアプリケーションプラットフォーム205が提供できるリソースの限度に応じて、例えばリソースサービス601のインストール時に登録される。
<サービスAPI部初期化処理>
図9はリソースサービス601のサービスAPI部が取得された時に実行されるサービスAPI部初期化処理S413の詳細を示す図であり、図4BのステップS413の詳細を示す。なおリソースサービスのサービスAPIのうち、リソース要求のために呼び出すAPIを特にリソース取得APIと呼ぶことがある。サービスAPI部初期化処理が開始されると(S901)、リソースサービス601のアプリ宣言量取得部602は、サービスAPI部を取得しようとしているアプリケーション440のアプリケーション情報を取得する(S902)。S441で受信したサービスAPI部要求には、リソースサービス601を利用するアプリケーション440のアプリケーション識別子が含まれており、それによりアプリケーション440を特定できる。取得したアプリケーション情報は図7の701〜704のようなキーと値のリストとして取得される。
S903〜S906では、S902で取得したアプリケーション情報に含まれたリストのすべての項目に対してS904〜S906の処理を行い、すべてのアプリケーション情報を対象としてチェックを行ったらループを抜け(S903)、リソースサービス601サービスAPI部初期化処理S413の処理を終了する。ループの内ではアプリケーション情報の名前を一つ取得する(S904)。次に取得したアプリケーション情報に含まれたキーが所定の使用リソース宣言量であるかを判断し(S905)、使用リソース宣言量であればS906に遷移する。S905で使用リソース宣言量でなければS903に遷移する。S906では取得したリソース量をソース量記憶部603に、アプリケーション801毎、かつリソース802毎に保存し(S906)、S903に遷移する。この手順により、サービスを利用するアプリケーションごとに、使用するリソースごとの上限を保存し、設定できる。使用リソース量803は初期化して0に設定しておく。
<リソース取得手順>
図10A、図10Bはアプリケーションがリソース取得要求をしたときにアプリケーション607、リソースサービスのAPI部604、リソースサービスのリソース管理部605の処理を示したものである。
アプリケーションA607がリソースを使用する処理を開始(S1001)する。アプリケーションA607はアプリケーションA用のリソースサービスのAPI部604の提供するAPI308を呼び出して(C1038)、リソース要求をおこなう(S1002)。このときリソースサービスのAPI部604に伝える情報は取得したいリソースの種類と取得したいリソースの量である。
アプリケーションA607はリソース要求に応じたリソースが取得できたかを判断し(S1003)、要求したリソースが取得できればS1004に遷移する。取得できなければS1006に遷移する。アプリケーションA607は、要求したリソースを取得出来たら、取得したリソースを使用する処理を行う(S1004)。S1004が完了したらアプリケーションA用のリソースサービスのAPI部604のリソース解放APIを呼び出し(C1041)、不要になったリソースの解放を要求し(S1005)、リソース使用処理を終了する(S1007)。
このフローチャートでは取得したリソースの使用が終わったらすぐに解放しているが、取得したリソースを別の処理でも使用するのであれば別の処理で解放処理をしてもよい。
リソースの解放要求のときにリソースサービスのAPI部604に伝える情報は解放するリソースの種類と解放するリソースの量である。一方アプリケーションA607は要求したリソースを取得出来なかったらエラー処理(S1006)を行い、リソース使用処理を終了する(S1007)。
アプリケーションA用のリソースサービスのAPI部604は、アプリケーションA607からリソース取得要求(C1038)を受けるとリソース取得処理を開始する(S1008)。リソースサービスのAPI部604はリソース管理部605を呼び出して(C1042)、リソース要求をおこなう(S1009)。このときリソース管理部605に伝える情報はAPIが保持しているアプリケーションの識別子307とアプリケーションから渡された、取得したいリソースの種類と取得したいリソースの量である。
要求に対する応答があればリソースサービスのAPI部604はリソースが取できたかを判断(S1010)し、リソースが取得できればS1011に遷移する。取得できなければS1012に遷移する。リソースサービスのAPI部604は要求したリソースを取得出来たらS1010で取得したリソースをアプリケーションAに返し(R1039)、リソース取得処理を終了する(S1013)。リソースを取得できなければS1012でアプリケーションAに対してエラーを返し(R1040)、リソース取得処理を終了する(S1013)。
リソースサービスのAPI部604はアプリケーションAからリソース解放要求(C1041)がくるとリソース解放処理を開始(S1014)する。ソースサービスのAPI部604はリソース管理部605に対してリソース解放要求(C1045)を行う(S1015)。このときリソース管理部605に伝える情報はAPIが保持しているアプリケーションの識別子526とアプリケーションから渡された、解放するリソースの種類と解放するリソースの量である。次にソースサービスのAPI部604はリソース解放処理を終了する(S1016)。
リソース管理部605はリソースサービスのAPI部604からリソース要求(C1042)がくるとリソース取得処理を開始する(S1017)。まずリソースサービスのAPI部604のリソース要求からリソースを使用するアプリケーション識別子を取得する(S1018)。次に要求リソースの種類を取得する(S1019)。さらに要求されたリソースの量を取得する(S1020)。次にリソース管理部605は、リソース量記憶部603からS1018で取得したアプリケーション識別子で識別されるアプリケーションの、S1019で取得したリソース種類の現在のリソース使用量803を取得する(S1021)。さらにリソース管理部605は、リソース量記憶部603からS1018で取得したアプリケーション識別子で識別されるアプリケーションの、S1019で取得したリソース種類の宣言リソース量802を取得する(S1022)。
次にリソース管理部605は、S1021で取得したリソース使用量とS1020で取得した要求リソース量との合計がS1022で取得した宣言リソース量を超えているかを判定する(S1023)。越えていなければS1024に遷移する。越えていればエラー処理(S1030)に遷移しリソースサービスのAPI部にエラーを通知し(R1044)、リソース取得処理を終了する(S1029)。エラーの主旨は要求リソースを確保できない、というものである。
S1024ではリソース量記憶部603から、S1019で取得したリソース種類の、全アプリケーションによるリソース使用量の合計を取得する(S1024)。次にリソース管理部605は、S1024で取得した合計量とS1020で取得した要求リソース量との合計がアプリケーションプラットフォーム205の提供するリソース量を超えているかを判定する(S1025)。アプリケーションプラットフォーム205の提供するリソース量は例えば予め与えられ、リソース管理部605が保持ししている。越えていたらエラー処理(S1030)に遷移し、リソースサービスのAPI部にエラーを通知し(R1044)、リソース取得処理を終了する(S1029)。越えていなければS1026に遷移する。
S1026でリソース管理部605は、リソース量記憶部603のS1018で取得したアプリケーション識別子で識別されるアプリケーションのS1019で取得したリソース種類のリソースの使用量803に、S1020で取得した要求リソース量を加算する。次にリソース管理部605はリソース生成部606から要求されたリソースを生成するようアプリケーションプラットフォームに要求する(S1027)。リソースが生成されたらリソース管理部605はS1028でリソースサービスのAPI部604に対して要求されたリソースを返して(R1043)、リソース取得処理を終了する(S1029)。リソースを返すとは、たとえば生成したリソースにアクセスするための情報(パス名等)を返すことである。リソースとは、画像形成装置における処理のために利用可能なハードウェアあるいはソフトウェアの要素を指すが、リソースサービスはそのうちの図5に示したようなリソースを管理対象としている。具体的にはストレージのリソースとしてファイル、通信のリソースとしてソケット、コンピューティングリソースとしてスレッド等である。またリソースオブジェクトとは、アプリケーションプラットフォーム上で実行されるアプリケーション(リソースサーバを含む)からみたリソースの抽象化ということができ、たとえば確保したリソースを示す情報を、リソースに対する処理を示すメソッド等とともにカプセル化したものである。あるいはリソースはリソースオブジェクトによりあらわされるとも言いえる。
リソース管理部605は、リソースサービスのAPI部604からリソース解放要求(C1045)がくるとリソース解放処理を開始する(S1031)。リソースサービスのAPI部604のリソース解放要求からリソースを使用していたアプリケーションの識別子を取得する(S1032)。次に解放されるリソースの種類を取得する(S1033)。さらに解放されるリソースの量を取得する(S1034)。次にリソース管理部605はS1033で指定されたリソースを解放する(S1035)。リソース管理部605は、リソースの解放時にはリソースの要求と同様の要領で、アプリケーションプラットフォームに対して取得済みのリソースの解放を要求する。それにより指定されたリソースが解放される。S1036でリソース管理部605はリソース量記憶部603のS1032で取得したアプリケーション識別子で識別されるアプリケーションのS1033で取得したリソース種類のリソースの使用量803からS1035で取得した要求リソース量を減算する。S1037でリソース管理部605はリソース解放処理を終了する。
リソースの要求は、たとえばJavaであれば、要求されたリソースオブジェクト(のインスタンス)を生成すればよい。より具体的には、ステップS1002では、必要なリソースのオブジェクトのインスタンスを、リソースサービスのサービスAPI部を用いて生成させる。リソースオブジェクトのコンストラクタが呼び出されることで、リソース管理部605と、アプリケーションプラットフォームあるいはJavaVM等は、図10Bに示したようにリソースオブジェクトを生成する。生成されるリソースオブジェクトは、図5に示すように、Java標準クラスをラップするよう定義されたオブジェクトである。したがって、得られたリソースの扱いは、通常のJavaにおけるリソースと同様であってよい。たとえば、アプリケーションプラットフォームはリソース生成を要求されると、リソースを確保して確保したリソースを特定するための情報を要求元に返す。もちろんこれは一例である。リソースを特定するための情報がリソース要求のパラメータとして与えられている場合もある。リソースの解放は、たとえば図5のJavaのファイルオブジェクトであればdeleteメソッド、ファイルインプットストリームオブジェクト、ファイルアウトプットストリームオブジェクト、ソケットオブジェクトであればcloseメソッドを呼び出す。スレッドオブジェクトは、特に解放を要求しなくともよい。
<リソースの利用時におけるリソース管理>
図11はファイル書き込みの時のアプリケーション、リソースサービス601の処理を示したものである。なおファイルへの書き込みは、書き込みの都度リソースを消費する。そのため図10A、図10Bに示したようなリソース要求時ではなく、書き込み時にリソースの使用量の総計が所定の上限値を超えていないか判定する必要がある。ファイル書き込み時の使用リソース量の判定および更新を図11の手順で実行する。
アプリケーションがファイル書き込み処理を開始する(S1101)。まずアプリケーションはリソースサービスに対してファイルオープン要求を行う(S1102)。ファイルオープン要求C1108を受けたリソースサービス601は、アプリケーションのファイルディスクプリタ使用量およびファイルディスクプリタ宣言量からファイルがオープン可能であるかを判定する(S1109)。オープン可能であればアプリケーション608にファイルオブジェクトを返す(R1110)。オープン可能でなければアプリケーション608にエラーを返す(R1111)。ファイルリソースの取得手順は図10A、図10Bで説明した通りである。
アプリケーションはリソースサービスからファイルオブジェクトが取得できたかを判定し(S1103)、取得できたらS1104に遷移する。取得できなければS1108に遷移してエラー処理を行ったのちファイル書き込み処理を終了する(S1107)。ファイルオブジェクトが取得できる場合、アプリケーションはリソースサービス601にファイルへのデータ書き込み要求をおこなう(S1104)。アプリケーション608からデータ書き込み要求C1112を受けたリソースサービス601は、アプリケーションのストレージ使用量とストレージ宣言量からファイル書き込みが可能であるかを判定する(S1113)。ファイル書き込み可能であればファイルへのデータの書き込みをおこないアプリケーションにデータ書き込み成功を返す(R1114)。ファイル書き込み不可能であればアプリケーションにエラーを返し(R1115)。
アプリケーションはリソースサービス601でファイル書き込みができたかを判定し(S1105)、書き込みができていればS1106に遷移する。できていなければS1109に遷移してエラー処理を行ったのちファイル書き込み処理を終了(S1107)する。
アプリケーションは書き込むべきデータすべてを書き込んだかを判定する(S1106)。書き込んでいればS1107に遷移しファイル書き込み処理を終了する。書き込んでいなければS1104に遷移して書き込み処理を継続する。図11の手順で、特にステップS1104、S1113によりファイル書き込み時にもファイルリソースの使用量がリソース量記憶部603に反映される。
前述のようにJavaでは、リソースサービスの機能はサービスAPI部を介して提供され、API部は例えば図5に示すクラス及びメソッドで特定される。たとえばステップS1102でファイルリソースを獲得するためには、ResourceServiceクラスのgetFileメソッドを呼び出して、ファイルのリソースオブジェクトすなわちRSFileクラスのインスタンスをリソースサービスに生成させる。これは図10A、図10Bの手順で示されたとおりである。また、ファイルへのデータ書き込み時には、例えば図5のRSFileOutputStreamクラスのインスタンスをまず生成する。図11においては、RSFileOutputStreamクラスのインスタンスの生成は、ステップS1103でYesと判定された直後に、ステップS1102で生成したファイルオブジェクトをパラメータとして行われる。これにより生成されるRSFileOutputStreamクラスのオブジェクトは、生成されたファイルオブジェクトの出力ストリームとして関連付けられる。そして、ステップS1104では、生成したRSFileOutputStreamクラスのオブジェクトのwriteメソッドを呼び出して書き込みを行う。このとき書き込まれるストレージサイズにより、リソース量記憶部603を参照して使用量が上限を超えないかをステップS1113で判定している。上限を超えているか否かの判定は、図10Bと同様に、ファイル書き込みを行うアプリケーション(サービスを利用するアプリケーション)が宣言したストレージ使用量の上限のみならず、全アプリケーションにより使用されているストレージサイズが、画像形成装置100により提供可能なストレージサイズの上限とも比較される。また書き込みを行う際には、リソース量記憶部603のストレージ使用量を更新する。
以上のようにして、本実施形態では、リソースの取得時、解放時、またファイルリソースについては書き込み時に、リソース使用量が上限を超えないか、アプリケーションごとにチェックすることができる。さらに、リソースの管理をリソースサービスという、プラットフォーム上で実行される外付けアプリケーションにより行うことができ、リソース管理の容易性および柔軟性を向上させている。さらに、リソースサービスに適合していないアプリケーションであっても、アプリケーションプラットフォームが提供するリソースを従来通り利用することができる。
[実施例2]
実施例1のリソースサービス601はアプリケーションプラットフォーム205上で動作する一アプリケーションであるため、ユーザがPC209からアプリケーションプラットフォーム205に対してリソースサービス601の停止を指示することができる。リソースサービス601が停止するとリソースサービスがアプリケーションに対して提供している機能も使用できなくなるため、リソースサービスを使ってリソースの取得・利用を行っているアプリケーションは動作できなくなる。実施例2のリソースサービスはリソースサービスが停止されたときにもアプリケーションの動作は継続できるリソースサービスである。
図12は実施例2のリソースサービスのプログラムを保持するJarファイル1201の構造を示している。リソースサービスのJarファイル1201はリソースサービスの設定情報を保持するマニフェスト領域1202、プログラムコードを保持するプログラムファイル領域1203、リソースサービスが使用するデータを保持するデータ領域1204から構成される。さらに、リソースサービスのデータ領域1204にはデータの一つとしてリソースサービスインターフェースサービス(以後RSIサービス)のプログラムを保持するJarファイル1205が保持されている。RSIサービスのJarファイル1205はRSIサービスの設定を保持するマニフェスト領域1206、RSIサービスのプログラムコードを保持するプログラムファイル領域1207から構成される。RSIサービスはリソースサービスからリソース管理機能を除いたアプリケーションである。
図14は実施例1のリソースサービスと実施例2のRSIサービスの機能の比較を示したものである。リソースサービスもRSIサービスもアプリケーションがリソース取得をおこなうためのAPIを提供するサービスAPI部をもつ。
リソースサービスはリソース管理機能を持つがRSIサービスは持たない。
リソースサービスもRSIサービスもリソースの生成を行うリソース生成機能を持つ。
RSIサービスは自身にリソースサービスを登録するリソースサービス登録インターフェースをもつがリソースサービスは持たない。
RSIサービスはリソース管理機能を持たないためリソースサービスにくらべ非常に小さいプログラムサイズである。
RSIサービスはリソース管理機能を持たないため使用するメモリ等のリソースもリソースサービスにくらべ非常に小さい。
リソースサービスはアプリケーショプラットフォームによってインストールされる、一方、RSIサービスはリソースサービスによってインストールされる。
リソースサービスはアプリケーションプラットフォーム205によってアンインストールされるが、RSIサービスはアンインストールされることがない。
<本実施例のリソースサービス起動手順>
図13はアプリケーションプラットフォーム205によって実施例2のリソースサービスが起動された時および、停止された時のフローチャートである。リソースサービスはプリケーションプラットフォーム205から起動指示を受けると起動処理を開始する(S1301)。
リソースサービスはアプリケーションプラットフォーム205にRSIサービスがインストールされているかを調べる(S1302)。インストールされていなければS1303に遷移する。インストールされていればS1306に遷移する。S1303でリソースサービスはリソースサービスのJarファイル1201からRSIサービスのJarファイル1205を取り出す(S1303)。リソースサービスはS1303で取りだしたRSIサービスのJarファイル1205をアプリケーションプラットフォームにインストールする(S1304)。さらにアプリケーションプラットフォームに対してRSIサービスの起動を指示し(S1305)、S1311に遷移する。
S1306でリソースサービスはインストールされているRSIサービスのバージョンを取得する(S1306)。次にリソースサービスのJarファイル1201からRSIサービスのJarファイル1205を取り出す(S1307)。S1307で取得したRSIサービスのJarファイルのマニフェスト領域1206からRSIサービスのバージョンを取得する(S1308)。S1308で取得したRSIサービスのバージョンがS1306で取得したRSIサービスのバージョンよりも新しければS1310に遷移し、新しくなければS1311に遷移する。
S1311でリソースサービスはS1307で取得したRSIサービスのJarファイルを使ってアプリケーションプラットフォーム205にインストールしRSIサービスのアップデートをおこない(S1310)、S1311に遷移する。S1311でリソースサービスは自身の初期化処理を実行する(S1311)。次にRSIサービスに対してリソースサービスの登録処理をおこない(S1312)、リソースサービスの起動処理を終了する(S1313)。
リソースサービスはプリケーションプラットフォーム205から停止指示を受けると停止処理を開始する(S1314)。次にRSIサービスに登録してあるリソースサービスの登録解除処理(S1305)をおこなう。さらにリソースサービス自身の停止処理(S1316)を実行して停止処理を終了する(S1317)。S1314〜S1317のリソースサービス停止処理のなかでRSIサービスの停止処理行わないため、リソースサービスを停止、アンインストールをしてもRSIサービスは停止、アンインストールされない。
<リソースサービスの構成>
図15Aは、本実施例のリソースサービス601、RSIサービス1501が起動している時のシステムの構成を示し、図15Bはリソースサービス601が停止しRSI1501サービスのみが起動しているときのシステムの構成を示したものである。リソースサービス601が起動している場合、RSIサービスはリソースサービスの起動処理のS1313で登録されたリソースサービスの参照1508を持っている。アプリケーション607からRSIサービス1501に対するリソース取得、使用要求1503はリソースサービスの参照1508で識別されるリソースサービス601に対して転送され、リソースサービス601によりリソースの取得、使用が実行される。リソースサービスによるリソースの管理は、実施例1の図10A、図10B、図11とおなじ要領で実行される。
一方、リソースサービス601が起動していない場合はRSIサービス1501がリソースの取得、使用をおこなう。これにより、リソースサービス対応アプリケーションは、リソースサービスが稼働中であるか否かにかかわらず同じサービスAPIでリソースの要求および使用を行うことができる。
<リソース取得処理のシーケンス>
図16はリソースサービス601が起動している時、していない時のリソース取得処理のシーケンスを示したものである。RSIサービス1501は起動時にアプリケーションプラットフォーム205のサービスAPI管理302に対して自身をリソースサービスとして登録している。
アプリケーション607はアプリケーションプラットフォーム205を使用してRSIサービス1501にサービスAPI部取得要求を出す(1601)。RSIサービス1501はリソースサービスのサービスAPI部を生成して、アプリケーション607にリソースサービスのサービスAPI部を返す(1603)。
リソースサービスが起動している場合、アプリケーション607はリソースサービスのサービスAPI部1502に対してリソース取得、使用要求をだす(1604)。リソースサービスのサービスAPI部1502はステップS1604で出された要求をRSIサービス1501に転送する(1605)。
RSIサービス1501は1605の要求をリソースサービス参照(1508)に登録されているリソースサービス601に転送する(1606)。リソースサービス601はリソース管理処理とリソース生成、使用処理をおこない(1607)、RSIサービス1501に返す(1608)。RSIサービス1501はリソースサービスのサービスAPI部1502に処理を返す(1609)。リソースサービスのサービスAPI部1502はアプリケーション607に処理を返す(1610)。
一方リソースサービスが起動していないとリソースサービス参照(1508)にはリソースサービスが登録されていない。その場合にも、アプリケーション607はリソースサービスのサービスAPI部1502に対してリソース取得、使用要求をだす(1611)。リソースサービスのサービスAPI部1502は1611の要求をRSIサービス1501に転送する(1612)。
RSIサービス1501はJavaの標準のリソース生成、使用APIを使用してリソース生成、使用処理をおこない(1613)、リソースサービスのサービスAPI部1502に処理を返す(1614)。リソースサービスのサービスAPI部1502はアプリケーション607に処理を返す(1615)。
以上の構成及び手順により、RSIサービス1501はいったん実行されると停止することなく稼働し、リソースサービスが稼働中であれば要求をリソースサービスへとリダイレクトする。このため、RSIサービスの対応アプリケーションは、リソースサービスが実行中であるか否かにかかわらずRSIサービスのサービスAPIを介してリソースの取得および使用を行うことができる。
[実施例3]
実施例2のリソースサービスではリソースサービスが停止していてもリソースサービス対応アプリケーションが実行可能であった。しかし、後からリソースサービスが起動した場合、リソースサービスはリソースサービスが起動するまでにアプリケーションが取得したリソースの管理をすることができなかった。実施例3のリソースサービスのRSIサービスはRSIサービスが起動していてかつ、リソースサービスが起動していないときに使用リソースの計測のみをおこなうRSIサービスである。
図17は実施例3のリソースサービス601のRSIサービスがもつリソース使用量を記憶するテーブル1701である。アプリケーション識別子1702とそのアプリケーションが使用しているリソース量1703を記憶している。
図18はリソースサービスのAPI部1502からRSIサービス1501に対してリソース要求があった場合の処理を示す図である。RSIサービス1501はリソースサービスのAPI部1502からリソース要求がくるとリソース取得処理を開始する(S1801)。リソースサービスのAPI部1502のリソース要求からリソースを使用するアプリケーションの識別子を取得する(S1802)。次に要求リソースの種類を取得する(S1803)。さらに要求されたリソースの量を取得する(S1804)。次にRSIサービス1501はリソース使用量を記憶するテーブル1701からS1802で取得したアプリケーション識別子で識別されるアプリケーションのS1803で取得したリソース種類のリソースの使用量173を取得する(S1805)。さらにテーブル1701のS1802で取得したアプリケーション識別子で識別されるアプリケーションのS1803で取得したリソース種類のリソースの使用量1703にS1804で取得した要求リソース量を加算、更新する(S1806)。次にRSIサービス1501はJavaの標準APIを使用してリソースサービスのAPI部1502から要求されたリソースを生成する(S1807)。リソースが生成されたらリにRSIサービス1501はS1028でリソースサービスのAPI部1502に対して要求されたリソースを返して(S1808)リソース取得処理を終了する(S1809)。
<リソースサービス起動処理>
図19はRSIサービス1510が起動している状態でリソースサービス601が起動したとき、RSIサービス1501がおこなうリソースサービス登録処理とリソースサービス601のリソース量記憶部603の更新処理のフローチャートである。アプリケーションプラットフォーム206によってリソースサービス601の起動が指示されると、リソースサービス601は起動処理(S1301)を開始する。次に初期化処理(S1902)をおこなう。S1902はS1302〜S1311の処理を含む。次にRSIサービス1501のリソースサービス登録要求(C1902)をおこない(S1312)、リソースサービスの起動処理を終了する(S1313)。
RSIサービス1510はリソースサービス登録要求(C1902)を受け取るとリソースサービス登録処理とリソース量記憶部603の更新処理を開始する(S1903)。まず、リソースサービス601の参照を保存する(S1904)。次にRSIサービス1510が持っているリソース使用量のテーブル1701に登録されているすべてのアプリに対してS1906〜S1912の処理を繰り返す(S1905)。
RSIサービス1510はまずテーブルから一つのレコードを取得しそのレコードのアプリケーション識別子(1702)を取得する(S1906)。次にS1906で取得した識別子のアプリケーションの使用リソース宣言608を取得する(S1907)。次にリソースサービス601のリソース量記憶部603のS1906で取得した識別子のアプリケーションのレコードの宣言リソース量802をS1907で取得した使用リソース宣言608で更新する(S1908)。テーブル1701からS1906で取得した識別子のアプリケーションのリソース使用量1703を取得する(S1909)。S1907で取得した使用リソース宣言値608とS1909で取得したリソース使用量1703の比較を行う(S1910)。使用量のほうが大きい場合エラー処理(S1912)を行いS1905に戻る。使用量が宣言量以下の場合、リソースサービスのリソース記憶部のS1906で取得した識別子のアプリケーションの使用リソース量803をS1909で取得した使用リソース量1703で更新(S1911)してS1905に戻る。
エラー処理S1912では該当するアプリケーションを停止してもよいし、余分に使用しているリソースを強制的に解放してもよい。
S1905でテーブル1701に登録されているすべてのアプリケーションに対して処理が終了したらリソースサービス登録処理とリソース量記憶部603の更新処理を終了(S1913)しリソースサービス601に処理を返す(R1914)。
上記構成及び手順により本実施例では、リソースサービスが稼働していなくともRSIサービスによりアプリケーションごとのリソースの使用量を管理する。さらにリソースサービスが開始あるいは再開された際に、RSIサービスにより管理されたアプリケーションリソース使用量を、アプリケーションごとに宣言されたリソースの上限値と比較し、上限を超えていないか判定する。さらに、リソース量記憶部603を更新することで、リソースサービスが中断していた間のリソースの消費も含めて管理することができる。
204 JavaVM、205 アプリケーションプラットフォーム、601 リソースサービス、602 アプリ宣言量取得部、603 リソース量記憶部、604 リソースサービスAPI部、605 リソース管理部、606 リソース生成部、607 リソースサービス対応アプリ、608 使用リソース宣言、609 リソース使用プログラム

Claims (12)

  1. アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持手段と、
    アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理手段と
    を有する画像形成装置。
  2. 前記保持手段は、さらに、前記それぞれのアプリケーションによるリソース使用量を、前記使用リソース宣言量に対応付けてリソースの種類ごとに管理し、
    前記リソース管理手段は、呼び出された前記リソース取得APIに応じたリソースの種類について、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、
    前記リソース管理手段はまた、前記リソースオブジェクトを引き渡す場合には、前記リソース生成により消費されたリソース量を、前記リソースの使用量に加算することを特徴とする請求項1に記載の画像形成装置。
  3. 前記リソース管理手段は、前記リソース取得APIが呼び出されたことに応じて、前記それぞれのアプリケーションが使用しているリソース量の総計が、前記アプリケーションプラットフォームにより提供できるリソース量の上限を超えているか否かを更に判定し、前記それぞれのアプリケーションが使用しているリソース量の総計が、前記アプリケーションプラットフォームにより提供できるリソース量の上限を超えていると判定された場合には、前記アプリケーションに対してその旨を引き渡すことを特徴とする請求項1または2に記載の画像形成装置。
  4. 前記リソース管理手段はさらに、前記アプリケーションによるリソースの解放処理に応じて、指定されたリソースを解放し、解放したリソースの量を前記保持手段により保持された前記リソースの使用量から減じることを特徴とする請求項2又は3に記載の画像形成装置。
  5. 前記リソース管理手段はさらに、前記アプリケーションによるリソースの使用に応じて、リソースの使用により消費されるリソース量を加えた当該リソースの使用量が、前記使用リソース宣言量を超えていない場合には、前記アプリケーションによるリソースの使用に応じてリソースを使用し、超えている場合にはその旨を前記アプリケーションに引き渡すことを特徴とする請求項1乃至4のいずれか一項に記載の画像形成装置。
  6. 前記リソース管理手段と前記それぞれのアプリケーションとの間のインターフェースサービス手段をさらに有し、
    前記インターフェースサービス手段は、前記リソース管理手段が稼働している場合には前記リソース管理手段に対する参照を登録し、前記リソース管理手段が停止された場合には前記参照の登録を解除し、前記アプリケーションから前記リソース取得APIが呼び出されたことに応じて、前記リソース管理手段に対する参照が登録されていれば、前記アプリケーションからの前記リソース取得APIの呼び出しを前記リソース管理手段へとリダイレクトし、前記リソース管理手段に対する参照の登録が解除されていれば、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すことを特徴とする請求項1乃至5のいずれか一項に記載の画像形成装置。
  7. 前記リソース管理手段はさらに、前記リソース管理手段に対する参照の登録が解除されていれば、前記生成されたリソースオブジェクトで使用されたリソースの使用量の総計をアプリケーションごとに保持する手段を更に有し、
    前記リソース管理手段は、稼働を再開した際には、前記インターフェースサービス手段により保持されたリソースの使用量の総計を加えた現在のリソースの使用量が、前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡すことを特徴とする請求項1乃至6のいずれか一項に記載の画像形成装置。
  8. 前記リソース管理手段および前記インターフェースサービス手段はともにそれぞれのプログラムをプロセッサで実行することで実現され、
    前記リソース管理手段を実現するためのプログラムのインストールに際して、前記インターフェースサービス手段を実現するためのプログラムをさらにインストールするインストール手段を更に有することを特徴とする請求項1乃至7のいずれか一項に記載の画像形成装置。
  9. 前記インストール手段は、前記リソース管理手段を実現するためのプログラムのインストールに際して、前記インターフェースサービス手段を実現するためのより新しいプログラムをインストールすることを特徴とする請求項8に記載の画像形成装置。
  10. 前記リソース管理手段は、ファイルリソース、ソケットリソース、スレッドリソースの少なくともいずれかを含むことを特徴とする請求項1乃至8のいずれか一項に記載の画像形成装置。
  11. アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持手段と、
    アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理手段と
    してコンピュータを機能させるためのプログラム。
  12. アプリケーションプラットフォーム上にインストールされたそれぞれのアプリケーションから使用リソース宣言量を受信し、アプリケーション毎に前記使用リソース宣言量を保持する保持工程と、
    アプリケーションからリソース取得APIが呼び出されたことに応じて、前記アプリケーションが使用しているリソース量が前記使用リソース宣言量を超えているか否かを判定し、前記使用リソース宣言量を超えていると判定された場合は、前記アプリケーションに対してその旨を引き渡し、超えていないと判定された場合は、前記アプリケーションプラットフォームに対してリソース生成を要求し、当該要求に応じて生成されたリソースオブジェクトを引き渡すリソース管理工程と
    を有することを特徴とするリソース管理方法。
JP2014163049A 2014-08-08 2014-08-08 画像形成装置およびリソース管理方法およびプログラム Expired - Fee Related JP6423645B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014163049A JP6423645B2 (ja) 2014-08-08 2014-08-08 画像形成装置およびリソース管理方法およびプログラム
US14/820,715 US9571687B2 (en) 2014-08-08 2015-08-07 Image forming apparatus and resource management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014163049A JP6423645B2 (ja) 2014-08-08 2014-08-08 画像形成装置およびリソース管理方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2016038806A true JP2016038806A (ja) 2016-03-22
JP2016038806A5 JP2016038806A5 (ja) 2017-09-14
JP6423645B2 JP6423645B2 (ja) 2018-11-14

Family

ID=55268378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014163049A Expired - Fee Related JP6423645B2 (ja) 2014-08-08 2014-08-08 画像形成装置およびリソース管理方法およびプログラム

Country Status (2)

Country Link
US (1) US9571687B2 (ja)
JP (1) JP6423645B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6926768B2 (ja) * 2017-07-20 2021-08-25 富士フイルムビジネスイノベーション株式会社 情報処理装置および情報処理システム
KR20190088292A (ko) * 2018-01-18 2019-07-26 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 복수의 플랫폼을 지원하는 화상 형성 장치에서 동일 또는 유사한 서비스를 제공하는 앱들의 제어
JP7455601B2 (ja) * 2020-02-05 2024-03-26 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003125122A (ja) * 2001-10-19 2003-04-25 Ricoh Co Ltd 複合装置
JP2003330732A (ja) * 2002-05-17 2003-11-21 Canon Inc 画像形成装置、制御方法、制御プログラム
JP2007011491A (ja) * 2005-06-28 2007-01-18 Xanavi Informatics Corp 情報端末、計算機資源管理方法、および仮想マシンの実行切り替え方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8937731B2 (en) * 2003-09-01 2015-01-20 Konica Minolta Business Technologies, Inc. Image processing apparatus for receiving a request relating to image processing from an external source and executing the received request
JP2005269439A (ja) 2004-03-19 2005-09-29 Ricoh Co Ltd 画像形成装置、情報処理方法、情報処理プログラム、及び記録媒体
JP4579786B2 (ja) * 2004-09-17 2010-11-10 株式会社リコー 画像処理装置、画像処理方法、および画像処理プログラム
JP5904800B2 (ja) 2012-01-16 2016-04-20 キヤノン株式会社 装置、制御方法、並びにプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003125122A (ja) * 2001-10-19 2003-04-25 Ricoh Co Ltd 複合装置
JP2003330732A (ja) * 2002-05-17 2003-11-21 Canon Inc 画像形成装置、制御方法、制御プログラム
JP2007011491A (ja) * 2005-06-28 2007-01-18 Xanavi Informatics Corp 情報端末、計算機資源管理方法、および仮想マシンの実行切り替え方法

Also Published As

Publication number Publication date
JP6423645B2 (ja) 2018-11-14
US9571687B2 (en) 2017-02-14
US20160044201A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
EP2107719B1 (en) System and method for remote application configuration management on multifunction peripherals
US7805707B2 (en) System and method for preparing runtime checks
KR101366402B1 (ko) 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법
WO2018099292A1 (zh) 一种进程管理方法及装置
US20150220308A1 (en) Model-based development
KR20130069555A (ko) 가상 애플리케이션 확장 포인트
JP2011123842A (ja) 画像形成装置、機能追加方法、及びプログラム
JP2014170515A (ja) 機器、情報記録プログラム、及び情報記録方法
JP6423645B2 (ja) 画像形成装置およびリソース管理方法およびプログラム
JP7195796B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP6388405B2 (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
JP2009146387A (ja) 情報処理装置、情報処理方法及びプログラム
CN111290740B (zh) 应用程序的开发方法、装置、计算机设备和存储介质
JP2009037589A (ja) プログラム判定装置、プログラム判定方法及びプログラム
JP5013999B2 (ja) 画像形成装置、プログラム制御方法、及び制御プログラム
US10545704B2 (en) Image forming apparatus and control method to update an application in an image forming apparatus
JP2015197845A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP6103978B2 (ja) 配信装置、デバイス装置、配信装置の制御方法およびコンピュータプログラム
Kaegi et al. Modular java web applications
Lawall et al. Tarantula: Killing driver bugs before they hatch
JP2009020863A (ja) 画像形成装置、情報処理装置、障害解析支援方法、及び障害解析支援プログラム
JP5798973B2 (ja) 処理状態が遷移する複数のプログラムを実行する装置及び方法
JP5263358B2 (ja) 情報処理装置、プログラム制御方法、及び制御プログラム
JP2011060236A (ja) 情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境
CN114020487A (zh) 中间件的处理方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170804

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181019

R151 Written notification of patent or utility model registration

Ref document number: 6423645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees