(57)【要約】【課題】  ソフトウェアの動作が不安定となる可能性を低減するとともにリソースの使用量が増加するのを抑制するのに好適なリソース管理システムを提供する。【解決手段】  ネットワークプリンタ１００は、ＪＡＶＡ（登録商標）ソフトウェア全体が使用するリソースの量を制限する。また、リソース管理対象となる各個別機能モジュール１３０ごとに、リソース制限情報４００を取得し、取得したリソース制限情報４００に基づいて、その個別機能モジュール１３０が使用するメモリ量、並びに共通機能モジュール１２０がその個別機能モジュール１３０の実行に使用するメモリ量および起動するクラス数を制限する。【選択図】  図２
2006209735.tif 000002
【特許請求の範囲】
【請求項１】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理システムであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とするリソース管理システム。
【請求項２】
請求項１において、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理システム。
【請求項３】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理システムであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とするリソース管理システム。
【請求項４】
請求項３において、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理システム。
【請求項５】
請求項１ないし４のいずれか１項において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とするリソース管理システム。
【請求項６】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とするプリンタ。
【請求項７】
請求項６において、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするプリンタ。
【請求項８】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とするプリンタ。
【請求項９】
請求項８において、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするプリンタ。
【請求項１０】
請求項６ないし９のいずれか１項において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とするプリンタ。
【請求項１１】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタ用ネットワークカードであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とするプリンタ用ネットワークカード。
【請求項１２】
請求項１１において、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするプリンタ用ネットワークカード。
【請求項１３】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタ用ネットワークカードであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とするプリンタ用ネットワークカード。
【請求項１４】
請求項１３において、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするプリンタ用ネットワークカード。
【請求項１５】
請求項１１ないし１４のいずれか１項において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とするプリンタ用ネットワークカード。
【請求項１６】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理プログラムであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とするリソース管理プログラム。
【請求項１７】
請求項１６において、
前記第２リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理プログラム。
【請求項１８】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理プログラムであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とするリソース管理プログラム。
【請求項１９】
請求項１８において、
前記リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理プログラム。
【請求項２０】
請求項１６ないし１９のいずれか１項において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とするリソース管理プログラム。
【請求項２１】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとを含むことを特徴とするリソース管理方法。
【請求項２２】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
演算手段が、前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、
前記演算手段が、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、
前記演算手段が、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとを含むことを特徴とするリソース管理方法。
【請求項２３】
請求項２１および２２のいずれか１項において、
前記第２リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理方法。
【請求項２４】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとを含むことを特徴とするリソース管理方法。
【請求項２５】
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
演算手段が、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、
前記演算手段が、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとを含むことを特徴とするリソース管理方法。
【請求項２６】
請求項２４および２５のいずれか１項において、
前記リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とするリソース管理方法。
【請求項２７】
請求項２１ないし２６のいずれか１項において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とするリソース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソースを管理するシステム、プリンタ、ネットワークカードおよびプログラム、並びに方法に係り、特に、ソフトウェアの動作が不安定となる可能性を低減するとともにリソースの使用量が増加するのを抑制するのに好適なリソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法に関する。
【背景技術】
【０００２】
従来、ハードウェア等のリソースを管理する技術としては、例えば、特許文献１記載のリソース管理システム、および特許文献２記載の画像形成装置が知られている。
特許文献１記載の発明は、ソフトウェアが情報機器で実行するときに利用するリソースに対して動作可能な範囲を設定する制限設定部と、制限設定部で設定した動作可能な範囲内で動作していることを検証する動作範囲検証部とを有して構成されている。動作範囲検証部は、ソフトウェアからリソース利用要求があったときに、設定してある動作可能な範囲と要求されたリソースの量とを比較し、動作可能な範囲外のときにはそのソフトウェアの実行を中止させる。
【０００３】
特許文献２記載の発明は、第１実行環境と、第２実行環境を備えた画像形成装置において、第２実行環境が使用するメモリ等のリソースを管理するリソース管理部を有して構成されている。リソース管理部は、第２実行環境が使用できるリソースを制限する。
【特許文献１】特開２００４−９４７８２号公報
【特許文献２】特開２００３−３３０７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、ＪＡＶＡ（登録商標）アプリケーションの実行環境は、ＪＶＭ（Java（登録商標） Virtual Machine）と呼ばれるアプリケーションをＯＳ（Operating System）上で実行し、複数のＪＡＶＡ（登録商標）クラスからなるＪＡＶＡ（登録商標）クラスセットをＪＶＭ上で実行するという３つの実行環境からなっている。
図１８は、ＪＡＶＡ（登録商標）アプリケーションの実行環境を説明するための図である。
【０００５】
このような環境に対して特許文献１，２記載の発明を適用すると、図１８（ａ）に示すように、ＯＳのリソースのうちＪＶＭが使用するリソースの量を制限することができる。
ＪＶＭ上では、複数のＪＡＶＡ（登録商標）クラスセットが並列に実行される場合がある。この場合、ＪＶＭが使用するリソースの量を制限することができても、ＪＶＭ上では、ＪＡＶＡ（登録商標）クラスセットがその制限の範囲において自由にリソースを使用することができる。そのため、あるＪＡＶＡ（登録商標）クラスセットが、ＪＶＭが使用可能な上限値近くまでリソースを使用すると、他のＪＡＶＡ（登録商標）クラスセットが実行できず、動作が不安定になるという問題が生じる。
【０００６】
ＪＡＶＡ（登録商標）クラスセットは、ＪＶＭをその実行に必要とするため、ＯＳ上で直接実行することができない。そのため、特許文献１，２記載の発明を適用して各ＪＡＶＡ（登録商標）クラスセットが使用するリソースの量を制限しようとすると、図１８（ｂ）に示すように、１つのＪＡＶＡ（登録商標）クラスセットにつきＪＶＭをそれぞれ実行するしかない。しかしながら、このような実行方法では、ＪＡＶＡ（登録商標）クラスセットの増加に伴ってＪＶＭも増加し、全体としてリソースの使用量が増大し、現実的ではない。
【０００７】
また、ＪＡＶＡ（登録商標）クラスセット自体が使用するリソースの量のほか、ＪＶＭがそのＪＡＶＡ（登録商標）クラスセットの実行に使用するリソースの量が大きい場合にも上記同様の問題が生じる。例えば、多数のインスタンスを同時に生成するようなＪＡＶＡ（登録商標）クラスセットにあっては、ＪＶＭがインスタンスの生成のために多くのリソースの量を使用する。
【０００８】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、ソフトウェアの動作が不安定となる可能性を低減するとともにリソースの使用量が増加するのを抑制するのに好適なリソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
〔形態１〕  上記目的を達成するために、形態１のリソース管理システムは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理システムであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とする。
【００１０】
このような構成であれば、第１リソース制限手段により、第１機能モジュールおよび複数の第２機能モジュールの全体が使用するリソースの量が制限される。また、リソース制限情報取得手段により、リソース制限情報が取得され、第２リソース制限手段により、取得されたリソース制限情報に基づいて、複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量が制限される。
【００１１】
これにより、第１機能モジュールおよび複数の第２機能モジュールの全体でリソースの量を制限することができるとともに第２機能モジュール単位でもリソースの量を制限することができるので、従来に比して、リソース不足等の原因によりソフトウェアの動作が不安定となる可能性を低減することができるという効果が得られる。また、第２機能モジュール単位でリソースの量を制限するために複数の第１機能モジュールを実行しなくてもすむので、従来に比して、リソースの使用量が増加するのを抑制することができるという効果も得られる。
【００１２】
ここで、リソースとは、ソフトウェアが使用可能な資源をいい、ハードウェア資源に限らず、ソフトウェア資源その他の資源が含まれる。また、機能モジュールを動作させるために必要となる実行環境が提供している資源をいう。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１３】
また、リソースの量としては、例えば、機能モジュールが使用するメモリ量、または起動可能な機能モジュールの数が含まれる。また、例えば、機能モジュールを利用するアプリケーションが確保するリソースの量（メモリ量、機能モジュール数）が含まれる。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１４】
また、リソースの制限条件としては、例えば、リソースの上限値を設定することができる。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
また、リソースを使用することとしては、例えば、リソースを確保することが含まれる。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１５】
また、リソースを管理することとしては、例えば、リソースを制限することが含まれる。また、リソースを制限することとしては、例えば、ある特定の絶対量を超えないように、絶対量を超えるリソース確保を行わないことが含まれる。より具体的には、リソース使用動作を捕捉し、使用しているリソース量を測定し、リソース量を積算し、リソース制限値と積算値とを比較し、ソースの使用許可の判定し、許可できない場合にリソース確保しない、許可できる場合にはリソース確保を行うという一連の処理が含まれる。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１６】
また、リソース制限情報取得手段は、リソース制限情報を取得するようになっていればどのような構成であってもよく、例えば、入力装置等からリソース制限情報を入力するようになっていてもよいし、外部の装置等からリソース制限情報を獲得または受信するようになっていてもよいし、記憶装置や記憶媒体等からリソース制限情報を読み出すようになっていてもよいし、ソフトウェアその他のデータからリソース制限情報を抽出するようになっていてもよい。したがって、取得には、少なくとも入力、獲得、受信、読出および抽出が含まれる。以下、形態３のリソース管理システム、形態６および８のプリンタ、並びに形態１１および１３のプリンタ用ネットワークカードにおいて同じである。
【００１７】
また、リソース制限情報を取得することとしては、例えば、設定ファイルからリソース制限の絶対値を取得することが含まれる。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１８】
また、機能モジュールとは、１つの機能を実現するために必要なプログラムをいう。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
また、第２機能モジュールの実行に第１機能モジュールを必要とするとは、例えば、第２機能モジュールの実行にあたって第１機能モジュールを呼び出すこと、または第２機能モジュールの実行にあたって第１機能モジュールを利用することをいう。以下、形態３のリソース管理システム、形態６および８のプリンタ、形態１１および１３のプリンタ用ネットワークカード、形態１６および１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００１９】
また、本システムは、単一の装置、端末その他の機器として実現するようにしてもよいし、複数の装置、端末その他の機器を通信可能に接続したネットワークシステムとして実現するようにしてもよい。後者の場合、各構成要素は、それぞれ通信可能に接続されていれば、複数の機器等のうちいずれに属していてもよい。以下、形態３のリソース管理システムにおいて同じである。
【００２０】
〔形態２〕  さらに、形態２のリソース管理システムは、形態１のリソース管理システムにおいて、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
【００２１】
このような構成であれば、第２リソース制限手段により、第２機能モジュールが使用するリソースの量、および第１機能モジュールがその第２機能モジュールの実行に使用するリソースの量が制限される。
これにより、第１機能モジュールが使用するリソースの量を第２機能モジュール単位で制限することができるので、リソース不足等の原因によりソフトウェアの動作が不安定となる可能性をさらに低減することができるという効果が得られる。
【００２２】
〔形態３〕  さらに、形態３のリソース管理システムは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理システムであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とする。
【００２３】
このような構成であれば、リソース制限情報取得手段により、リソース制限情報が取得され、リソース制限手段により、取得されたリソース制限情報に基づいて、第１機能モジュールが第２機能モジュールの実行に使用するリソースの量が制限される。
これにより、第１機能モジュールが使用するリソースの量を第２機能モジュール単位で制限することができるので、従来に比して、リソース不足等の原因によりソフトウェアの動作が不安定となる可能性を低減することができるという効果が得られる。また、第２機能モジュール単位でリソースの量を制限するために複数の第１機能モジュールを実行しなくてもすむので、従来に比して、リソースの使用量が増加するのを抑制することができるという効果も得られる。
【００２４】
〔形態４〕  さらに、形態４のリソース管理システムは、形態３のリソース管理システムにおいて、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、リソース制限手段により、第２機能モジュールが使用するリソースの量、および第１機能モジュールがその第２機能モジュールの実行に使用するリソースの量が制限される。
【００２５】
〔形態５〕  さらに、形態５のリソース管理システムは、形態１ないし４のいずれか１のリソース管理システムにおいて、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とする。
このような構成であれば、ＪＡＶＡ（登録商標）クラスが使用するリソースの量、または実行制御アプリケーションがＪＡＶＡ（登録商標）クラスの実行に使用するリソースの量が制限される。
これにより、ＪＡＶＡ（登録商標）アプリケーションの実行環境においてリソース不足等の原因によりソフトウェアの動作が不安定となる可能性を低減することができるという効果が得られる。
【００２６】
ここで、ＪＡＶＡ（登録商標）クラスとは、ＪＡＶＡ（登録商標）言語におけるデータとその操作手順であるメソッド（関数）をまとめたプログラムをいう。また、ＪＡＶＡ（登録商標）とは、仮想マシンを利用した実行環境であり、ＯＳ上で動作する仮想マシンと呼ばれるあらゆるカテゴリに適用されるものである。以下、形態１０のプリンタ、形態１５のプリンタ用ネットワークカード、形態２０のリソース管理プログラム、および形態２７のリソース管理方法において同じである。
また、アプリケーションとは、複数のＪＡＶＡ（登録商標）クラスからなる特定の機能を提供するプログラムをいう。以下、形態１０のプリンタ、形態１５のプリンタ用ネットワークカード、形態２０のリソース管理プログラム、および形態２７のリソース管理方法において同じである。
【００２７】
〔形態６〕  一方、上記目的を達成するために、形態６のプリンタは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とする。
このような構成であれば、形態１のリソース管理システムと同等の作用および効果が得られる。
【００２８】
〔形態７〕  さらに、形態７のプリンタは、形態６のプリンタにおいて、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、形態２のリソース管理システムと同等の作用および効果が得られる。
【００２９】
〔形態８〕  さらに、形態８のプリンタは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とする。
このような構成であれば、形態３のリソース管理システムと同等の作用および効果が得られる。
【００３０】
〔形態９〕  さらに、形態９のプリンタは、形態８のプリンタにおいて、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、形態４のリソース管理システムと同等の作用および効果が得られる。
【００３１】
〔形態１０〕  さらに、形態１０のプリンタは、形態６ないし９のいずれか１のプリンタにおいて、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とする。
このような構成であれば、形態５のリソース管理システムと同等の作用および効果が得られる。
【００３２】
〔形態１１〕  一方、上記目的を達成するために、形態１１のプリンタ用ネットワークカードは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタ用ネットワークカードであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限手段と、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限手段とを備えることを特徴とする。
このような構成であれば、プリンタ用ネットワークカードをプリンタに装着すると、形態１のリソース管理システムと同等の作用および効果が得られる。
【００３３】
〔形態１２〕  さらに、形態１２のプリンタ用ネットワークカードは、形態１１のプリンタ用ネットワークカードにおいて、
前記第２リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、プリンタ用ネットワークカードをプリンタに装着すると、形態２のリソース管理システムと同等の作用および効果が得られる。
【００３４】
〔形態１３〕  さらに、形態１３のプリンタ用ネットワークカードは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するプリンタ用ネットワークカードであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得手段と、前記リソース制限情報取得手段で取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限手段とを備えることを特徴とする。
このような構成であれば、プリンタ用ネットワークカードをプリンタに装着すると、形態３のリソース管理システムと同等の作用および効果が得られる。
【００３５】
〔形態１４〕  さらに、形態１４のプリンタ用ネットワークカードは、形態１３のプリンタ用ネットワークカードにおいて、
前記リソース制限手段により制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、プリンタ用ネットワークカードをプリンタに装着すると、形態４のリソース管理システムと同等の作用および効果が得られる。
【００３６】
〔形態１５〕  さらに、形態１５のプリンタ用ネットワークカードは、形態１１ないし１４のいずれか１のプリンタ用ネットワークカードにおいて、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とする。
このような構成であれば、プリンタ用ネットワークカードをプリンタに装着すると、形態５のリソース管理システムと同等の作用および効果が得られる。
【００３７】
〔形態１６〕  一方、上記目的を達成するために、形態１６のリソース管理プログラムは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理プログラムであって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする。
【００３８】
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態１のリソース管理システムと同等の作用および効果が得られる。
ここで、リソース制限情報取得ステップは、リソース制限情報を取得すればどのような形態であってもよく、例えば、入力装置等からリソース制限情報を入力してもよいし、外部の装置等からリソース制限情報を獲得または受信してもよいし、記憶装置や記憶媒体等からリソース制限情報を読み出してもよいし、ソフトウェアその他のデータからリソース制限情報を抽出してもよい。したがって、取得には、少なくとも入力、獲得、受信、読出および抽出が含まれる。以下、形態１８のリソース管理プログラム、並びに形態２１、２２、２４および２５のリソース管理方法において同じである。
【００３９】
〔形態１７〕  さらに、形態１７のリソース管理プログラムは、形態１６のリソース管理プログラムにおいて、
前記第２リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態２のリソース管理システムと同等の作用および効果が得られる。
【００４０】
〔形態１８〕  さらに、形態１８のリソース管理プログラムは、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理プログラムであって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態３のリソース管理システムと同等の作用および効果が得られる。
【００４１】
〔形態１９〕  さらに、形態１９のリソース管理プログラムは、形態１８のリソース管理プログラムにおいて、
前記リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態４のリソース管理システムと同等の作用および効果が得られる。
【００４２】
〔形態２０〕  さらに、形態２０のリソース管理プログラムは、形態１６ないし１９のいずれか１のリソース管理プログラムにおいて、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とする。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態５のリソース管理システムと同等の作用および効果が得られる。
【００４３】
〔形態２１〕  一方、上記目的を達成するために、形態２１のリソース管理方法は、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとを含むことを特徴とする。
これにより、形態１のリソース管理システムと同等の効果が得られる。
【００４４】
〔形態２２〕  さらに、形態２２のリソース管理方法は、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
演算手段が、前記第１機能モジュールおよび前記複数の第２機能モジュールの全体が使用するリソースの量を制限する第１リソース制限ステップと、
前記演算手段が、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、
前記演算手段が、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記複数の第２機能モジュールのうち少なくとも１つが使用するリソースの量を制限する第２リソース制限ステップとを含むことを特徴とする。
これにより、形態１のリソース管理システムと同等の効果が得られる。
【００４５】
〔形態２３〕  さらに、形態２３のリソース管理方法は、形態２１および２２のいずれか１のリソース管理方法において、
前記第２リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
これにより、形態２のリソース管理システムと同等の効果が得られる。
【００４６】
〔形態２４〕  さらに、形態２４のリソース管理方法は、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとを含むことを特徴とする。
これにより、形態３のリソース管理システムと同等の効果が得られる。
【００４７】
〔形態２５〕  さらに、形態２５のリソース管理方法は、
第１機能モジュールと、その実行に前記第１機能モジュールを必要とする複数の第２機能モジュールとが使用するリソースを管理するリソース管理方法であって、
演算手段が、リソースの制限条件を示すリソース制限情報を取得するリソース制限情報取得ステップと、
前記演算手段が、前記リソース制限情報取得ステップで取得したリソース制限情報に基づいて、前記第１機能モジュールが前記第２機能モジュールの実行に使用するリソースの量を制限するリソース制限ステップとを含むことを特徴とする。
これにより、形態３のリソース管理システムと同等の効果が得られる。
【００４８】
〔形態２６〕  さらに、形態２６のリソース管理方法は、形態２４および２５のいずれか１のリソース管理方法において、
前記リソース制限ステップで制限されるリソース量は、前記第２機能モジュールが使用するリソースの量、および前記第１機能モジュールが当該第２機能モジュールの実行に使用するリソースの量であることを特徴とする。
これにより、形態４のリソース管理システムと同等の効果が得られる。
【００４９】
〔形態２７〕  さらに、形態２７のリソース管理方法は、形態２１ないし２６のいずれか１のリソース管理方法において、
前記第２機能モジュールは、１または複数のＪＡＶＡ（登録商標）クラスからなり、
前記第１機能モジュールは、前記ＪＡＶＡ（登録商標）クラスの実行を制御する実行制御アプリケーションであることを特徴とする。
これにより、形態５のリソース管理システムと同等の効果が得られる。
【発明を実施するための最良の形態】
【００５０】
以下、本発明の第１の実施の形態を図面を参照しながら説明する。図１ないし図１７は、本発明に係るリソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法の第１の実施の形態を示す図である。
本実施の形態は、本発明に係るリソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法を、図２に示すように、ＪＡＶＡ（登録商標）アプリケーションの実行環境においてＪＡＶＡ（登録商標）クラスセットが使用するリソースを管理する場合について適用したものである。
【００５１】
まず、本発明を適用するネットワークプリンタ１００の機能概要を説明する。
図１は、ＪＡＶＡ（登録商標）ソフトウェアの構成を示す図である。
ＪＡＶＡ（登録商標）アプリケーションの実行環境では、ＪＡＶＡ（登録商標）クラスセットの実行を制御するＪＡＶＡ（登録商標）クラスおよびＪＶＭからなる共通機能モジュールをＯＳ上で実行し、ＪＡＶＡ（登録商標）クラスセットである個別機能モジュールを共通機能モジュール上で実行する。ここで、ＪＡＶＡ（登録商標）ソフトウェアは、共通機能モジュールおよび個別機能モジュールから構成される。
【００５２】
共通機能モジュールは、図１に示すように、複数の個別機能モジュールを実行可能となっている。図１の例では、共通機能モジュールａ上で２つの個別機能モジュールｂ，ｃが実行されている場合を示している。ここで、個別機能モジュールｂが使用するリソースの量をｘ１、共通機能モジュールａが個別機能モジュールｂの実行に使用するリソースの量をｘ２、個別機能モジュールｂが使用可能なリソースの上限値をＸmaxとした場合、本実施の形態では、ｘ１＋ｘ２≦Ｘmaxとなるようにリソースの量を制限する。
【００５３】
図２は、ネットワークプリンタ１００の機能概要を示す機能ブロック図である。
ネットワークプリンタ１００は、図２に示すように、ＯＳ１１０と、共通機能モジュール１２０と、複数の個別機能モジュール１３０とを有して構成されている。
ＯＳ１１０は、ＪＡＶＡ（登録商標）ソフトウェアが使用するリソースの量を測定するリソース測定部１０と、ＪＡＶＡ（登録商標）ソフトウェア全体が使用するリソースの量を制限するリソース制限部１２とを有して構成されている。
【００５４】
リソース制限部１２は、リソース測定部１０で測定したリソースの量が、ＪＡＶＡ（登録商標）ソフトウェアに割り当てられた所定の上限値未満となるように、ＪＡＶＡ（登録商標）ソフトウェアが使用するリソースを制限する。
共通機能モジュール１２０は、個別機能モジュール１３０の実行を管理する個別機能モジュール管理部１４と、個別機能モジュール管理部１４および個別機能モジュール１３０が使用するリソースの量を測定するリソース測定部１６と、個別機能モジュール１３０が使用可能なリソースの上限値を取得する上限値取得部１８と、個別機能モジュール管理部１４および個別機能モジュール１３０が使用するリソースの量を制限するリソース制限部２０とを有して構成されている。
【００５５】
リソース測定部１６は、各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するリソースの量、および個別機能モジュール管理部１４がその個別機能モジュール１３０の実行に使用するリソースの量を測定する。
リソース制限部２０は、リソース測定部１６で測定したリソースの量が、上限値取得部１８で取得した上限値未満となるように、個別機能モジュール１３０が使用するリソースの量、および個別機能モジュール管理部１４がその個別機能モジュール１３０の実行に使用するリソースの量を制限する。
【００５６】
次に、ネットワークプリンタ１００の構成を詳細に説明する。
図３は、ネットワークプリンタ１００のハードウェア構成を示すブロック図である。
ネットワークプリンタ１００は、図３に示すように、制御プログラムに基づいて演算およびシステム全体を制御するＣＰＵ３０と、所定領域にあらかじめＣＰＵ３０の制御プログラム等を格納しているＲＯＭ３２と、ＲＯＭ３２等から読み出したデータやＣＰＵ３０の演算過程で必要な演算結果を格納するためのＲＡＭ３４と、外部装置に対してデータの入出力を媒介するＩ／Ｆ３８とで構成されており、これらは、データを転送するための信号線であるバス３９で相互にかつデータ授受可能に接続されている。
【００５７】
Ｉ／Ｆ３８には、外部装置として、ヒューマンインターフェースとしてデータの入力および表示が可能なタッチパネル等からなる操作パネル４０と、データやテーブル等をファイルとして格納する記憶装置４２と、印刷ヘッド、ヘッド駆動部その他の印刷に必要な機構からなるプリンタエンジン４４と、ネットワーク１９９に接続するための信号線とが接続されている。
【００５８】
次に、記憶装置４２のデータ構造を詳細に説明する。
記憶装置４２は、共通機能モジュール１２０および複数の個別機能モジュール１３０を記憶している。
個別機能モジュール１３０は、リソースの上限値を格納したリソース制限情報を含んで構成されている。
【００５９】
図４は、リソース制限情報４００のデータ構造を示す図である。
リソース制限情報４００は、図４に示すように、個別機能モジュール１３０および共通機能モジュール１２０がその個別機能モジュール１３０の実行に使用可能なメモリ（ＲＡＭ３４）の上限値を格納したフィールド４０２と、個別機能モジュール１３０および共通機能モジュール１２０がその個別機能モジュール１３０の実行に起動可能なクラス数を格納したフィールド４０４とを含んで構成されている。
【００６０】
個別機能モジュール１３０は、さらに、個別機能モジュール１３０に関するモジュール情報を含んで構成されている。
図５は、モジュール情報４２０のデータ構造を示す図である。
モジュール情報４２０は、図５に示すように、個別機能モジュール１３０が使用するリソースの量を制限する対象（以下、リソース管理対象という。）とするか否かを格納したフィールド４２２と、個別機能モジュール１３０が実行可能なネットワークプリンタ１００の機種を格納したフィールド４２４と、電子署名情報を格納したフィールド４２６とを含んで構成されている。
【００６１】
図５の例では、フィールド４２２には「有効」が格納されている。これは、個別機能モジュール１３０をリソース管理対象として管理することを示している。さらに、フィールド４２４には「TypeA」が、フィールド４２６には「Ｘ社」がそれぞれ格納されている。これは、個別機能モジュール１３０が実行可能な機種が「TypeA」であり、Ｘ社の電子署名を受けていることを示している。
【００６２】
記憶装置４２は、さらに、共通機能モジュール１２０の実行環境を示す実行環境情報を登録した実行環境情報登録テーブルを記憶している。
図６は、実行環境情報登録テーブル４４０のデータ構造を示す図である。
実行環境情報登録テーブル４４０は、図６に示すように、個別機能モジュール１３０の起動可能な個数の上限値を登録したフィールド４４２と、実行すべき個別機能モジュール１３０の名称を登録したフィールド４４４と、削除すべき個別機能モジュール１３０の名称を登録したフィールド４４６と、自己ネットワークプリンタ１００の機種を登録したフィールド４４８と、対応可能な電子署名情報を登録したフィールド４５０とを含んで構成されている。
【００６３】
図６の例では、フィールド４４２には「５」が、フィールド４４４には「個別機能モジュールｂ，ｄ」が、フィールド４４６には「個別機能モジュールｃ」がそれぞれ登録されている。これは、個別機能モジュール１３０を最大５個まで起動することができ、共通機能モジュール１２０の起動時に、個別機能モジュールｂ，ｄを実行し、個別機能モジュールｃを削除すべきことを示している。さらに、フィールド４４８には「TypeA」が、フィールド４５０には「Ｘ社」がそれぞれ登録されている。これは、自己の機種が「TypeA」であり、Ｘ社の電子署名情報を含む個別機能モジュール１３０を実行できることを示している。
【００６４】
記憶装置４２は、さらに、リソース管理対象となる各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するリソースの量を管理するリソース管理テーブルを記憶する。リソース管理テーブルは、個別機能モジュール１３０がリソース管理対象である場合にその起動に伴って生成される。
図７は、リソース管理テーブル４６０のデータ構造を示す図である。
【００６５】
リソース管理テーブル４６０には、図７に示すように、リソースの種別ごとに１つのレコードが登録されている。各レコードは、リソースの名称を登録するフィールド４６２と、個別機能モジュール１３０が使用可能なリソースの上限値を登録するフィールド４６４と、個別機能モジュール１３０が現在使用しているリソースの量を登録するフィールド４６６とを含んで登録されている。
【００６６】
図７の例では、第１段目のレコードには、リソースの名称として「メモリ」が、上限値として「1000000」が、現在値として「512345」がそれぞれ登録されている。これは、個別機能モジュール１３０が使用可能なメモリの上限値が1000000[byte]であり、現在メモリを512345[byte]使用していることを示している。また、第２段目のレコードには、リソースの名称として「クラス数」が、上限値として「100」が、現在値として「20」がそれぞれ登録されている。これは、個別機能モジュール１３０が起動可能なクラス数の上限値が100個であり、現在クラスを20個起動していることを示している。
【００６７】
記憶装置４２は、さらに、個別機能モジュール１３０が受信するイベントを処理するイベントリスナを登録するイベントリスナテーブル４８０を記憶している。
図８は、イベントリスナテーブル４８０のデータ構造を示す図である。
イベントリスナテーブル４８０には、図８に示すように、個別機能モジュール１３０が登録するイベントリスナごとにレコードが登録される。各レコードは、イベントリスナの名称を登録するフィールド４８２を含んで登録されている。
【００６８】
図３に戻り、ＣＰＵ３０は、マイクロプロセッシングユニット等からなり、ＲＯＭ３２の所定領域に格納されている所定のプログラムを起動させ、そのプログラムに従って、図９、図１３、図１４および図１６のフローチャートに示す個別機能モジュール制御処理、クラス読込処理、イベントリスナ制御処理およびインスタンス削除処理を共通機能モジュール１２０の処理としてそれぞれ時分割で実行する。
【００６９】
初めに、個別機能モジュール制御処理を図９を参照しながら詳細に説明する。
図９は、個別機能モジュール制御処理を示すフローチャートである。
個別機能モジュール制御処理は、個別機能モジュール１３０の削除および実行を制御する処理であって、ＣＰＵ３０において実行されると、図９に示すように、まず、ステップＳ１００に移行する。
【００７０】
ステップＳ１００では、実行すべき個別機能モジュール１３０の名称および削除すべき個別機能モジュール１３０の名称を実行環境情報登録テーブル４４０から取得し、ステップＳ１０２に移行して、削除すべき個別機能モジュール１３０が存在するか否かを判定し、削除すべき個別機能モジュール１３０が存在すると判定したとき(Yes)は、ステップＳ１０４に移行する。
【００７１】
ステップＳ１０４では、取得した名称に基づいて該当の個別機能モジュール１３０を記憶装置４２から削除し、ステップＳ１０６に移行して、該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、該当の個別機能モジュール１３０がリソース管理対象であると判定したとき(Yes)は、ステップＳ１０８に移行する。
【００７２】
ステップＳ１０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０を記憶装置４２から削除し、ステップＳ１１０に移行して、現在起動中のモジュール数を示す変数の値から「１」を減算し、ステップＳ１０２に移行する。
一方、ステップＳ１０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ１０２に移行する。
【００７３】
一方、ステップＳ１０２で、削除すべき個別機能モジュール１３０が存在しないと判定したとき(No)は、ステップＳ１１２に移行して、実行すべき個別機能モジュール１３０が存在するか否かを判定し、実行すべき個別機能モジュール１３０が存在すると判定したとき(Yes)は、ステップＳ１１４に移行する。
ステップＳ１１４では、現在起動中のモジュール数を示す変数の値が所定の上限値未満であるか否かを判定し、所定の上限値未満であると判定したとき(Yes)は、ステップＳ１１６に移行する。
【００７４】
ステップＳ１１６では、取得した名称に基づいて該当の個別機能モジュール１３０を記憶装置４２から読み込み、ステップＳ１１８に移行して、読み込んだ個別機能モジュール１３０の実行可否を判定する実行可否判定処理を実行し、ステップＳ１２０に移行する。
ステップＳ１２０では、実行可否判定処理から個別機能モジュール１３０の実行を許可することを示す戻り値が返却されたか否かを判定し、実行を許可することを示す戻り値が返却されたと判定したとき(Yes)は、ステップＳ１２２に移行する。
【００７５】
ステップＳ１２２では、該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、該当の個別機能モジュール１３０がリソース管理対象であると判定したとき(Yes)は、ステップＳ１２４に移行する。
ステップＳ１２４では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０を生成し、該当の個別機能モジュール１３０に含まれるリソース制限情報４００から上限値を取得し、取得した上限値を、生成したリソース管理テーブル４６０に登録し、ステップＳ１２６に移行して、現在起動中のモジュール数を示す変数の値に「１」を加算し、ステップＳ１２８に移行する。
【００７６】
ステップＳ１２８では、生成したリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ１３０に移行して、該当の個別機能モジュール１３０を起動するモジュール起動処理を実行し、ステップＳ１３２に移行して、リソース確保先の参照ポインタをクリアし、ステップＳ１１２に移行する。
一方、ステップＳ１２２で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ１３４に移行して、ステップＳ１３０と同様のモジュール起動処理を実行し、ステップＳ１１２に移行する。
【００７７】
一方、ステップＳ１２０で、実行可否判定処理から個別機能モジュール１３０の実行を許可しないことを示す戻り値が返却されたと判定したとき(No)は、ステップＳ１１２に移行する。
一方、ステップＳ１１４で、現在起動中のモジュール数を示す変数の値が所定の上限値以上であると判定したとき(No)、およびステップＳ１１２で、実行すべき個別機能モジュール１３０が存在しないと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
【００７８】
次に、ステップＳ１１８の実行可否判定処理を図１０を参照しながら詳細に説明する。
図１０は、実行可否判定処理を示すフローチャートである。
実行可否判定処理は、ステップＳ１１８において実行されると、図１０に示すように、まず、ステップＳ２００に移行する。
ステップＳ２００では、個別機能モジュール１３０に含まれるモジュール情報４２０から機種情報を取得し、ステップＳ２０２に移行して、取得した機種情報と実行環境情報登録テーブル４４０の機種情報が一致しているか否かを判定し、それら機種情報が一致していると判定したとき(Yes)は、ステップＳ２０４に移行する。
【００７９】
ステップＳ２０４では、個別機能モジュール１３０に含まれるモジュール情報４２０から電子署名情報を取得し、ステップＳ２０６に移行して、実行環境情報登録テーブル４４０に基づいて、取得した電子署名情報が対応可能なものであるか否かを判定し、対応可能な電子署名情報であると判定したとき(Yes)は、ステップＳ２０８に移行する。
ステップＳ２０８では、個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ２１０に移行する。
【００８０】
ステップＳ２１０では、個別機能モジュール１３０に含まれるリソース制限情報４００から上限値を取得し、ステップＳ２１２に移行して、上限値の取得に成功したか否かを判定し、上限値の取得に成功したと判定したとき(Yes)は、ステップＳ２１４に移行する。
ステップＳ２１４では、取得した上限値が、共通機能モジュール１２０が使用可能なメモリ残量未満であるか否かを判定し、全メモリ残量未満であると判定したとき(Yes)は、ステップＳ２１６に移行して、個別機能モジュール１３０の実行を許可することを示す戻り値を返却し、一連の処理を終了して元の処理に復帰させる。
【００８１】
一方、ステップＳ２０８で、個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ２１６に移行する。
一方、ステップＳ２１４で、取得した上限値が全メモリ残量以上であると判定したとき(No)、ステップＳ２１２で、上限値の取得に失敗したと判定したとき(No)、ステップＳ２０６で、対応可能な電子署名情報でないと判定したとき(No)、およびステップＳ２０２で、機種情報が一致しないと判定したとき(No)はいずれも、ステップＳ２１８に移行して、個別機能モジュール１３０の実行を許可しないことを示す戻り値を返却し、一連の処理を終了して元の処理に復帰させる。
【００８２】
次に、ステップＳ１３０，Ｓ１３４のモジュール起動処理を図１１を参照しながら詳細に説明する。
図１１は、モジュール起動処理を示すフローチャートである。
モジュール起動処理は、ステップＳ１３０，Ｓ１３４において実行されると、図１１に示すように、まず、ステップＳ３００に移行する。
【００８３】
ステップＳ３００では、個別機能モジュール１３０からクラスを読み込むべきクラス読込命令を出力し、ステップＳ３０２に移行して、クラスの読込に成功したか否かを判定し、クラスの読込に成功したと判定したとき(Yes)は、ステップＳ３０４に移行する。
ステップＳ３０４では、リソース確保先の参照ポインタが設定されているか否かを判定し、リソース確保先の参照ポインタが設定されていると判定したとき(Yes)は、ステップＳ３０６に移行する。
【００８４】
ステップＳ３０６では、読み込んだクラスの実行に必要なメモリ量を算出し、算出したメモリ量を、リソース確保先の参照ポインタが指し示すリソース管理テーブル４６０（以下、参照リソース管理テーブル４６０という。）の使用メモリ量に加算し、ステップＳ３０８に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ３１０に移行する。
【００８５】
ステップＳ３１０では、読み込んだクラスのインスタンスをメモリ上に生成し、ステップＳ３１２に移行して、リソース確保先の参照ポインタの値を示すリソース確保先参照情報を、生成したインスタンスに保存し、ステップＳ３１４に移行する。
ステップＳ３１４では、インスタンスの生成に成功したか否かを判定し、インスタンスの生成に成功したと判定したとき(Yes)は、ステップＳ３１６に移行して、読み込んだクラスの機能を呼び出すクラス機能呼出処理を実行し、ステップＳ３１８に移行して、個別機能モジュール１３０のイベントリスナを登録するイベントリスナ登録処理を実行し、一連の処理を終了して元の処理に復帰させる。
【００８６】
一方、ステップＳ３０８で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ３２０に移行して、参照リソース管理テーブル４６０の使用メモリ量から、ステップＳ３０６で算出したメモリ量を減算し、ステップＳ３２２に移行して、エラーを通知し、ステップＳ３１４に移行する。
一方、ステップＳ３０４で、リソース確保先の参照ポインタが設定されていないと判定したとき(No)は、ステップＳ３２４に移行して、読み込んだクラスのインスタンスをメモリ上に生成し、ステップＳ３１４に移行する。
【００８７】
一方、ステップＳ３１４で、インスタンスの生成に失敗したと判定したとき(No)、およびステップＳ３０２で、クラスの読込に失敗したと判定したとき(No)はいずれも、ステップＳ３１８に移行する。
次に、ステップＳ３１８のイベントリスナ登録処理を図１２を参照しながら詳細に説明する。
【００８８】
図１２は、イベントリスナ登録処理を示すフローチャートである。
イベントリスナ登録処理は、ステップＳ３１８において実行されると、図１２に示すように、まず、ステップＳ４００に移行する。
ステップＳ４００では、個別機能モジュール１３０からイベントリスナクラスを読み込むべきクラス読込命令を出力し、ステップＳ４０２に移行して、イベントリスナクラスの読込に成功したか否かを判定し、イベントリスナクラスの読込に成功したと判定したとき(Yes)は、ステップＳ４０４に移行する。
【００８９】
ステップＳ４０４では、リソース確保先の参照ポインタが設定されているか否かを判定し、リソース確保先の参照ポインタが設定されていると判定したとき(Yes)は、ステップＳ４０６に移行する。
ステップＳ４０６では、読み込んだイベントリスナクラスの実行に必要なメモリ量を算出し、算出したメモリ量を参照リソース管理テーブル４６０の使用メモリ量に加算し、ステップＳ４０８に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ４１０に移行する。
【００９０】
ステップＳ４１０では、読み込んだイベントリスナクラスのインスタンスをメモリ上に生成し、ステップＳ４１２に移行して、リソース確保先の参照ポインタの値を示すリソース確保先参照情報を、生成したインスタンスに保存し、ステップＳ４１４に移行する。
ステップＳ４１４では、インスタンスの生成に成功したか否かを判定し、インスタンスの生成に成功したと判定したとき(Yes)は、ステップＳ４１６に移行して、生成したインスタンスのイベントリスナをイベントリスナ実行リストに登録し、一連の処理を終了して元の処理に復帰させる。
【００９１】
一方、ステップＳ４０８で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ４１８に移行して、参照リソース管理テーブル４６０の使用メモリ量から、ステップＳ４０６で算出したメモリ量を減算し、ステップＳ４２０に移行して、エラーを通知し、ステップＳ４１４に移行する。
一方、ステップＳ４０４で、リソース確保先の参照ポインタが設定されていないと判定したとき(No)は、ステップＳ４２２に移行して、読み込んだイベントリスナクラスのインスタンスをメモリ上に生成し、ステップＳ４１４に移行する。
【００９２】
一方、ステップＳ４１４で、インスタンスの生成に失敗したと判定したとき(No)、およびステップＳ４０２で、イベントリスナクラスの読込に失敗したと判定したとき(No)はいずれも、一連の処理を終了して元の処理に復帰させる。
次に、クラス読込処理を図１３を参照しながら詳細に説明する。
図１３は、クラス読込処理を示すフローチャートである。
【００９３】
クラス読込処理は、クラス読込命令に応じてクラスを読み込む処理であって、ＣＰＵ３０において実行されると、図１３に示すように、まず、ステップＳ５００に移行する。
ステップＳ５００では、クラス読込命令を取得したか否かを判定し、クラス読込命令を取得したと判定したとき(Yes)は、ステップＳ５０２に移行するが、そうでないと判定したとき(No)は、クラス読込命令を取得するまでステップＳ５００で待機する。
【００９４】
ステップＳ５０２では、クラス読込命令に係るクラスがキャッシュテーブルに登録されているか否かを判定し、キャッシュテーブルに登録されていないと判定したとき(No)は、ステップＳ５０４に移行する。
ステップＳ５０４では、クラス読込命令に係るクラスが属する個別機能モジュール１３０を特定し、ステップＳ５０６に移行して、特定した該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ５０８に移行する。
【００９５】
ステップＳ５０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ５１０に移行する。
ステップＳ５１０では、参照リソース管理テーブル４６０の起動クラス数に「１」を加算し、ステップＳ５１２に移行して、加算した合計のクラス数が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ５１４に移行する。
【００９６】
ステップＳ５１４では、クラス読込命令に係るクラスを個別機能モジュール１３０から読み込み、ステップＳ５１６に移行して、読み込んだクラスをキャッシュテーブルに登録し、ステップＳ５１８に移行して、リソース確保先の参照ポインタをクリアし、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ５１２で、合計のクラス数が上限値以上であると判定したとき(No)は、ステップＳ５２０に移行して、参照リソース管理テーブル４６０の起動クラス数から「１」を減算し、ステップＳ５２２に移行して、エラーを通知し、ステップＳ５１８に移行する。
【００９７】
一方、ステップＳ５０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ５２４に移行して、クラス読込命令に係るクラスを個別機能モジュール１３０から読み込み、ステップＳ５２６に移行して、読み込んだクラスをキャッシュテーブルに登録し、一連の処理を終了して元の処理に復帰させる。
一方、ステップＳ５０２で、クラス読込命令に係るクラスがキャッシュテーブルに登録されていると判定したとき(Yes)は、一連の処理を終了して元の処理に復帰させる。
【００９８】
次に、イベントリスナ制御処理を図１４を参照しながら詳細に説明する。
図１４は、イベントリスナ制御処理を示すフローチャートである。
イベントリスナ制御処理は、イベントリスナの実行を制御する処理であって、ＣＰＵ３０において実行されると、図１４に示すように、まず、ステップＳ６００に移行する。
ステップＳ６００では、イベントリスナ実行リストを取得し、ステップＳ６０２に移行して、取得したイベントリスナ実行リストに基づいて、実行すべきイベントリスナが存在するか否かを判定し、実行すべきイベントリスナが存在すると判定したとき(Yes)は、ステップＳ６０４に移行する。
【００９９】
ステップＳ６０４では、該当のイベントリスナの生成元となった個別機能モジュール１３０を特定し、ステップＳ６０６に移行して、特定した該当の個別機能モジュール１３０に含まれるモジュール情報４２０に基づいて、該当の個別機能モジュール１３０がリソース管理対象であるか否かを判定し、リソース管理対象であると判定したとき(Yes)は、ステップＳ６０８に移行する。
【０１００】
ステップＳ６０８では、該当の個別機能モジュール１３０に対応するリソース管理テーブル４６０のアドレスをリソース確保先の参照ポインタに設定し、ステップＳ６１０に移行して、該当のイベントリスナを実行するイベントリスナ実行処理を実行し、ステップＳ６１２に移行して、リソース確保先の参照ポインタをクリアし、ステップＳ６１４に移行する。
【０１０１】
ステップＳ６１４では、該当のイベントリスナをイベントリスナ実行リストから削除し、ステップＳ６０２に移行する。
一方、ステップＳ６０６で、該当の個別機能モジュール１３０がリソース管理対象でないと判定したとき(No)は、ステップＳ６１６に移行して、該当のイベントリスナを実行し、ステップＳ６１４に移行する。
【０１０２】
一方、ステップＳ６０２で、実行すべきイベントリスナが存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、ステップＳ６１０のイベントリスナ実行処理を図１５を参照しながら詳細に説明する。
図１５は、イベントリスナ実行処理を示すフローチャートである。
【０１０３】
イベントリスナ実行処理は、ステップＳ６１０において実行されると、図１５に示すように、まず、ステップＳ７００に移行する。
ステップＳ７００では、イベントリスナに含まれる命令リストの先頭にプログラムポインタを移動し、ステップＳ７０２に移行して、プログラムポインタが指し示すアドレスに実行すべき命令が存在するか否かを判定し、実行すべき命令が存在すると判定したとき(Yes)は、ステップＳ７０４に移行する。
【０１０４】
ステップＳ７０４では、命令の実行に必要なメモリ量を算出し、算出したメモリ量を参照リソース管理テーブル４６０の使用メモリ量に加算し、ステップＳ７０６に移行して、加算した合計のメモリ量が、参照リソース管理テーブル４６０の上限値未満であるか否かを判定し、上限値未満であると判定したとき(Yes)は、ステップＳ７０８に移行する。
ステップＳ７０８では、メモリを確保し、ステップＳ７１０に移行して、プログラムポインタが指し示すアドレスの命令を実行し、ステップＳ７１２に移行して、イベントリスナに含まれる命令リストの次にプログラムポインタを移動し、ステップＳ７０２に移行する。
【０１０５】
一方、ステップＳ７０６で、合計のメモリ量が上限値以上であると判定したとき(No)は、ステップＳ７１４に移行して、参照リソース管理テーブル４６０の使用メモリ量から、ステップＳ７０４で算出したメモリ量を減算し、ステップＳ７１６に移行して、エラーを通知し、ステップＳ７１２に移行する。
一方、ステップＳ７０２で、実行すべき命令が存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
【０１０６】
次に、インスタンス削除処理を図１６を参照しながら詳細に説明する。
図１６は、インスタンス削除処理を示すフローチャートである。
インスタンス削除処理は、インスタンスを削除する処理であって、ＣＰＵ３０において実行されると、図１６に示すように、まず、ステップＳ８００に移行する。
ステップＳ８００では、削除すべきインスタンスを登録したインスタンス削除リストを取得し、ステップＳ８０２に移行して、取得したインスタンス削除リストに基づいて、削除すべきインスタンスが存在するか否かを判定し、削除すべきインスタンスが存在すると判定したとき(Yes)は、ステップＳ８０４に移行する。
【０１０７】
ステップＳ８０４では、該当のインスタンスからリソース確保先参照情報を取得し、ステップＳ８０５に移行して、リソース確保先参照情報の取得に成功したか否かを判定し、リソース確保先参照情報の取得に成功したと判定したとき(Yes)は、ステップＳ８０６に移行する。
ステップＳ８０６では、取得したリソース確保先参照情報に基づいてリソース確保先の参照ポインタを設定し、ステップＳ８０８に移行して、該当のインスタンスを削除し、ステップＳ８１０に移行して、該当のインスタンスの実行に必要なメモリ量を参照リソース管理テーブル４６０の使用メモリ量から減算し、ステップＳ８１２に移行する。
【０１０８】
ステップＳ８１２では、リソース確保先の参照ポインタをクリアし、ステップＳ８１４に移行して、該当のインスタンスをインスタンス削除リストから削除し、ステップＳ８０２に移行する。
一方、ステップＳ８０５で、リソース確保先参照情報の取得に失敗したと判定したとき(No)は、ステップＳ８１６に移行して、該当のインスタンスを削除し、ステップＳ８１４に移行する。
【０１０９】
一方、ステップＳ８０２で、削除すべきインスタンスが存在しないと判定したとき(No)は、一連の処理を終了して元の処理に復帰させる。
次に、本実施の形態の動作を説明する。
初めに、リソース管理対象となる個別機能モジュール１３０を実行する場合を説明する。
【０１１０】
ネットワークプリンタ１００では、共通機能モジュール１２０の実行により個別機能モジュール制御処理が実行される。個別機能モジュール制御処理では、ステップＳ１０２〜Ｓ１１０を経て、削除すべき個別機能モジュール１３０が存在する場合は、その個別機能モジュール１３０が削除される。次いで、ステップＳ１１４を経て、現在起動中のモジュール数が所定の上限値未満であると判定されると、ステップＳ１１６，Ｓ１１８を経て、該当の個別機能モジュール１３０が読み込まれ、読み込まれた個別機能モジュール１３０の実行可否が判定される。実行可否判定処理では、個別機能モジュール１３０について、一致する機種情報および対応可能な電子署名情報を有し、かつ、使用可能なメモリの上限値が全メモリ残量未満である場合に実行が許可される。
【０１１１】
個別機能モジュール１３０の実行が許可されると、ステップＳ１２４〜Ｓ１２８を経て、リソース管理テーブル４６０が生成され、現在起動中のモジュール数が「１」加算され、個別機能モジュール１３０が起動する。モジュール起動処理では、ステップＳ５１０，Ｓ３０６を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が加算される。このとき、起動クラス数および使用メモリ量のいずれかが上限値以上となると、ステップＳ５２２またはステップＳ３２２を経て、エラーが通知され、クラスの読込またはインスタンスの生成が中止される。
【０１１２】
これに対し、起動クラス数および使用メモリ量のいずれも上限値未満である場合は、ステップＳ５１４，Ｓ３１０，Ｓ３１８を経て、個別機能モジュール１３０のクラスが読み込まれ、読み込まれたクラスのインスタンスが生成され、個別機能モジュール１３０のイベントリスナが登録される。イベントリスナ登録処理では、ステップＳ５１０，Ｓ４０６を経て、個別機能モジュール１３０の起動クラス数および使用メモリ量が加算される。このとき、起動クラス数および使用メモリ量のいずれかが上限値以上となると、ステップＳ５２２またはステップＳ４２０を経て、エラーが通知され、イベントリスナクラスの読込またはインスタンスの生成が中止される。
【０１１３】
これに対し、起動クラス数および使用メモリ量のいずれも上限値未満である場合は、ステップＳ５１４，Ｓ４１０，Ｓ４１６を経て、イベントリスナクラスが読み込まれ、イベントリスナクラスのインスタンスが生成され、生成されたインスタンスのイベントリスナがイベントリスナ実行リストに登録される。
一方、ネットワークプリンタ１００では、共通機能モジュール１２０の実行によりイベントリスナ制御処理が実行される。イベントリスナ制御処理では、ステップＳ７０４を経て、実行すべきイベントリスナの生成元となった個別機能モジュール１３０の使用メモリ量が加算される。このとき、使用メモリ量が上限値以上となると、ステップＳ７１６を経て、エラーが通知され、イベントリスナの実行が中止される。
【０１１４】
これに対し、使用メモリ量が上限値未満である場合は、ステップＳ７１０を経て、イベントリスナに含まれる命令が実行される。
一方、ネットワークプリンタ１００では、共通機能モジュール１２０の実行によりインスタンス削除処理が実行される。インスタンス削除処理では、削除すべきインスタンスが存在する場合は、ステップＳ８０８，Ｓ８１０を経て、そのインスタンスが削除され、そのイベントリスナの生成元となった個別機能モジュール１３０の使用メモリ量が減算される。
【０１１５】
次に、リソース管理対象でない個別機能モジュール１３０を実行する場合を説明する。
ネットワークプリンタ１００では、個別機能モジュール制御処理が実行されると、ステップＳ１１６，Ｓ１１８を経て、該当の個別機能モジュール１３０が読み込まれ、読み込まれた個別機能モジュール１３０の実行可否が判定される。
個別機能モジュール１３０の実行が許可されると、ステップＳ１３４を経て、個別機能モジュール１３０が起動する。モジュール起動処理では、ステップＳ５２４，Ｓ３２４，Ｓ３１８を経て、個別機能モジュール１３０のクラスが読み込まれ、読み込まれたクラスのインスタンスが生成され、個別機能モジュール１３０のイベントリスナが登録される。イベントリスナ登録処理では、ステップＳ５２４，Ｓ４２２，Ｓ４１６を経て、イベントリスナクラスが読み込まれ、イベントリスナクラスのインスタンスが生成され、生成されたインスタンスのイベントリスナがイベントリスナ実行リストに登録される。
【０１１６】
一方、ネットワークプリンタ１００では、イベントリスナ制御処理が実行されると、ステップＳ６１６を経て、実行すべきイベントリスナに含まれる命令が実行される。
一方、ネットワークプリンタ１００では、インスタンス削除処理が実行されると、削除すべきインスタンスが存在する場合は、ステップＳ８１６を経て、そのインスタンスが削除される。
【０１１７】
図１７は、リソース管理対象となる個別機能モジュールｂ，ｃを並列に実行した場合を示すタイムチャートである。
図１７において、実線は、個別機能モジュールｂのスレッド、および共通機能モジュール１２０のスレッドのうち個別機能モジュールｂの実行に用いられるものを示している。また、一点鎖線は、個別機能モジュールｃのスレッド、および共通機能モジュール１２０のスレッドのうち個別機能モジュールｃの実行に用いられるものを示している。
【０１１８】
個別機能モジュールｂが実行されると、共通機能モジュール１２０のＡＭスレッド（起動処理部）が実行され、個別機能モジュールｂが起動してそのスレッドが実行される。また、共通機能モジュール１２０のＡＭスレッドが実行され、個別機能モジュールｂのイベントリスナが生成される。そして、個別機能モジュールｂに対応するイベントが発生すると、共通機能モジュール１２０のＡＭスレッド（イベント処理部）が実行され、個別機能モジュールｂのクラスが読み込まれ、読み込まれたインスタンスが生成される。個別機能モジュールｂが不要となった場合は、共通機能モジュール１２０のインスタンス削除スレッドが実行され、個別機能モジュールｂのインスタンスが削除される。この一連の処理において、共通機能モジュール１２０および個別機能モジュールｂのスレッドの実行に伴って増減する起動クラス数および使用メモリ量は、個別機能モジュールｂが使用するリソースの量として管理され、個別機能モジュールｂに設定された所定の上限値未満となるように制限される。
【０１１９】
この動作は、個別機能モジュールｃについても同様である。ただし、その一連の処理において、共通機能モジュール１２０および個別機能モジュールｃのスレッドの実行に伴って増減する起動クラス数および使用メモリ量は、個別機能モジュールｃが使用するリソースの量として管理され、個別機能モジュールｃに設定された所定の上限値未満となるように制限される。
【０１２０】
本実施の形態におけるクラスリソース（クラスの数やサイズ）は、クラスを提供している機能モジュールに割り当てる。そのため、機能モジュールｂの持つクラスを読み込んで利用した場合には、利用しているスレッドが機能モジュールｂであっても機能モジュールｃであっても機能モジュールｂがクラスリソースを消費したことになる。そのため、図１７では、個別機能モジュールｂのクラスロードのスレッドにおけるリソース消費は、機能モジュールｂの区域を示す太実線しかない。また、個別機能モジュールｃのクラスロードのスレッドにおけるリソース消費は、機能モジュールｃの区域を示す太破線しかない。
【０１２１】
したがって、ステップＳ５０４において特定する機能モジュールは、クラスを読み込む個別機能モジュールでなく、クラスを提供している個別機能モジュールであり、その後の処理では、特定した個別機能モジュールに対してリソース割当を行う。
このように、ある個別機能モジュール１３０のスレッドにて消費したリソースは、共通機能モジュール、自身の個別機能モジュール１３０および他の個別機能モジュール１３０のいずれかに割り当てられる。
【０１２２】
このようにして、本実施の形態では、ＪＡＶＡ（登録商標）ソフトウェア全体が使用するリソースの量を制限し、個別機能モジュール１３０からリソース制限情報４００を取得し、取得したリソース制限情報４００に基づいて、個別機能モジュール１３０が使用するメモリ量を制限するようになっている。
これにより、ＪＡＶＡ（登録商標）ソフトウェア全体でリソースの量を制限することができるとともに個別機能モジュール１３０単位でメモリ量を制限することができるので、従来に比して、ＪＡＶＡ（登録商標）アプリケーションの実行環境においてリソース不足等の原因によりソフトウェアの動作が不安定となる可能性を低減することができる。また、個別機能モジュール１３０単位でメモリ量を制限するために複数の共通機能モジュール１２０を実行しなくてもすむので、従来に比して、リソースの使用量が増加するのを抑制することができる。
【０１２３】
さらに、本実施の形態では、リソース管理対象となる各個別機能モジュール１３０ごとに、その個別機能モジュール１３０が使用するメモリ量、並びに共通機能モジュール１２０がその個別機能モジュール１３０の実行に使用するメモリ量および起動するクラス数を制限するようになっている。
これにより、共通機能モジュール１２０が使用するメモリ量および起動するクラス数を個別機能モジュール１３０単位で制限することができるので、ＪＡＶＡ（登録商標）アプリケーションの実行環境においてリソース不足等の原因によりソフトウェアの動作が不安定となる可能性をさらに低減することができる。
【０１２４】
上記第１の実施の形態において、リソース制限部１２は、形態１または６の第１リソース制限手段に対応し、上限値取得部１８およびステップＳ１２４は、形態１、３、６または８のリソース制限情報取得手段に対応し、ステップＳ１２４は、形態１６、１８、２１、２２、２４または２５のリソース制限情報取得ステップに対応している。また、リソース制限部２０およびステップＳ２１４，Ｓ２１８，Ｓ１２０，Ｓ３０６，Ｓ３０８，Ｓ４０６，Ｓ４０８，Ｓ５１０，Ｓ５１２，Ｓ７０４，Ｓ７０６は、形態１、２、６若しくは７の第２リソース制限手段、または形態３、４、８若しくは９のリソース制限手段に対応している。
【０１２５】
また、上記第１の実施の形態において、ステップＳ２１４，Ｓ２１８，Ｓ１２０，Ｓ３０６，Ｓ３０８，Ｓ４０６，Ｓ４０８，Ｓ５１０，Ｓ５１２，Ｓ７０４，Ｓ７０６は、形態１６、１７、２１ないし２３の第２リソース制限ステップ、または形態１６、１８、１９、２１、２２、２４ないし２６のリソース制限ステップに対応している。また、共通機能モジュール１２０は、形態１ないし１０、１６ないし２７の第１機能モジュールに対応し、個別機能モジュール１３０は、形態１ないし１０、１６ないし２７の第２機能モジュールに対応している。
【０１２６】
次に、本発明の第２の実施の形態を説明する。
本実施の形態が上記第１の実施の形態と異なるのは、共通機能モジュール１２０が個別機能モジュール１３０の実行に使用するリソースの量のみを制限する点にある。
この場合、図１２のイベントリスナ登録処理において、ステップＳ４０４、Ｓ４０６、Ｓ４０８、Ｓ４１０、Ｓ４１２、Ｓ４１８、Ｓ４２０の処理を行わない。
【０１２７】
図１２のイベントリスナ登録処理は、個別機能モジュール１３０が実行するスレッドであり、具体的にはイベントリスナの登録を行う。個別機能モジュール１３０が使用するリソースではなく、個別機能モジュール１３０を実行することにより、共通機能モジュール１２０が使用するリソースのみを測定することだけなので、上記各ステップの処理が不要となる。
【０１２８】
図１２のイベントリスナ登録処理は、図１１におけるイベントリスナ登録処理（Ｓ３１８）に対応するが、図１２以外に個別機能モジュール１３０が実行されることによりリソース確保を行う部分は、クラス機能呼出処理（Ｓ３１６）になる。クラス機能呼出処理は、図１５のイベントリスナ実行処理と同じ要領で構成することができる。図１５のように構成した場合、本実施の形態では、ステップＳ７０４、Ｓ７０６、Ｓ７０８、Ｓ７１４、Ｓ７１６に相当する処理を行わない。
【０１２９】
これにより、共通機能モジュール１２０が使用するリソースの量を個別機能モジュール１３０単位で制限することができるので、従来に比して、リソース不足等の原因によりソフトウェアの動作が不安定となる可能性を低減することができる。また、個別機能モジュール１３０単位でリソースの量を制限するために複数の共通機能モジュール１２０を実行しなくてもすむので、従来に比して、リソースの使用量が増加するのを抑制することができる。
【０１３０】
上記第２の実施の形態において、上限値取得部１８およびステップＳ１２４は、形態３または８のリソース制限情報取得手段に対応し、ステップＳ１２４は、形態１８、２４または２５のリソース制限情報取得ステップに対応し、リソース制限部２０およびステップＳ２１４，Ｓ２１８，Ｓ１２０，Ｓ３０６，Ｓ３０８，Ｓ５１０，Ｓ５１２，Ｓ７０４，Ｓ７０６は、形態３、４、８または９のリソース制限手段に対応している。また、ステップＳ２１４，Ｓ２１８，Ｓ１２０，Ｓ３０６，Ｓ３０８，Ｓ５１０，Ｓ５１２，Ｓ７０４，Ｓ７０６は、形態１８、１９、２４ないし２６のリソース制限ステップに対応し、共通機能モジュール１２０は、形態３ないし５、８ないし１０、１８ないし２０、２４ないし２７の第１機能モジュールに対応している。
【０１３１】
また、上記第２の実施の形態において、個別機能モジュール１３０は、形態３ないし５、８ないし１０、１８ないし２０、２４ないし２７の第２機能モジュールに対応している。
なお、上記第１および第２の実施の形態においては、リソース測定部１０、リソース制限部１２、リソース測定部１６、上限値取得部１８およびリソース制限部２０からなる機能をネットワークプリンタ１００の内部機能として実現するように構成したが、これに限らず、ネットワークプリンタ１００に装着するネットワークカードの機能として実現するように構成することもできる。
【０１３２】
この場合において、リソース制限部１２は、形態１１の第１リソース制限手段に対応し、上限値取得部１８およびステップＳ１２４は、形態１１または１３のリソース制限情報取得手段に対応し、リソース制限部２０およびステップＳ２１４，Ｓ２１８，Ｓ１２０，Ｓ３０６，Ｓ３０８，Ｓ４０６，Ｓ４０８，Ｓ５１０，Ｓ５１２，Ｓ７０４，Ｓ７０６は、形態１１若しくは１２の第２リソース制限手段、または形態１３若しくは１４のリソース制限手段に対応している。また、共通機能モジュール１２０は、形態１１ないし１５の第１機能モジュールに対応し、個別機能モジュール１３０は、形態１１ないし１５の第２機能モジュールに対応している。
【０１３３】
また、上記第１および第２の実施の形態においては、リソースの量として使用メモリ量および起動クラス数を制限するように構成したが、これに限らず、ソケット接続数、ファイル接続数、ファイル数、ファイル容量、クラスサイズ、ＺＩＰメモリ容量、ＣＰＵ利用量、ソケット通信量およびファイル読み書き量を制限するように構成することもできる。
また、上記第１および第２の実施の形態において、図９ないし図１６のフローチャートに示す処理を実行するにあたってはいずれも、ＲＯＭ３２にあらかじめ格納されている制御プログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムをＲＡＭ３４に読み込んで実行するようにしてもよい。
【０１３４】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ等の半導体記憶媒体、ＦＤ、ＨＤ等の磁気記憶型記憶媒体、ＣＤ、ＣＤＶ、ＬＤ、ＤＶＤ等の光学的読取方式記憶媒体、ＭＯ等の磁気記憶型／光学的読取方式記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【０１３５】
また、上記第１および第２の実施の形態においては、本発明に係るリソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法を、図２に示すように、ＪＡＶＡ（登録商標）アプリケーションの実行環境において、ＪＡＶＡ（登録商標）クラスセットが使用するリソースを管理する場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。ネットワークプリンタ１００に代えて、例えば、プロジェクタ、スキャナ、電子ペーパ、ホームゲートウェイ、パソコン、ＰＤＡ（Personal Digital Assistant）、ネットワークストレージ、オーディオ機器、携帯電話、ＰＨＳ（登録商標）（Personal Handyphone System）、ウォッチ型ＰＤＡ、ＳＴＢ（Set Top Box）、ＰＯＳ（Point Of Sale）端末、ＦＡＸ機、電話（ＩＰ電話等も含む。）、デジタルＴＶ、その他のデバイスに適用することができる。
【図面の簡単な説明】
【０１３６】
【図１】ＪＡＶＡ（登録商標）ソフトウェアの構成を示す図である。
【図２】ネットワークプリンタ１００の機能概要を示す機能ブロック図である。
【図３】ネットワークプリンタ１００のハードウェア構成を示すブロック図である。
【図４】リソース制限情報４００のデータ構造を示す図である。
【図５】モジュール情報４２０のデータ構造を示す図である。
【図６】実行環境情報登録テーブル４４０のデータ構造を示す図である。
【図７】リソース管理テーブル４６０のデータ構造を示す図である。
【図８】イベントリスナテーブル４８０のデータ構造を示す図である。
【図９】個別機能モジュール制御処理を示すフローチャートである。
【図１０】実行可否判定処理を示すフローチャートである。
【図１１】モジュール起動処理を示すフローチャートである。
【図１２】イベントリスナ登録処理を示すフローチャートである。
【図１３】クラス読込処理を示すフローチャートである。
【図１４】イベントリスナ制御処理を示すフローチャートである。
【図１５】イベントリスナ実行処理を示すフローチャートである。
【図１６】インスタンス削除処理を示すフローチャートである。
【図１７】リソース管理対象となる個別機能モジュールｂ，ｃを並列に実行した場合を示すタイムチャートである。
【図１８】ＪＡＶＡ（登録商標）アプリケーションの実行環境を説明するための図である。
【符号の説明】
【０１３７】
１００…ネットワークプリンタ，  １１０…ＯＳ，  １２０…共通機能モジュール，  １３０…個別機能モジュール，  １０，１６…リソース測定部，  １２，２０…リソース制限部，  １４…個別機能モジュール管理部，  １８…上限値取得部，  ３０…ＣＰＵ，  ３２…ＲＯＭ，  ３４…ＲＡＭ，  ３８…Ｉ／Ｆ，  ４０…操作パネル，  ４２…記憶装置，  ４４…プリンタエンジン，  ４００…リソース制限情報，  ４２０…モジュール情報，  ４４０…実行環境情報登録テーブル，  ４６０…リソース管理テーブル，  ４８０…イベントリスナテーブル
【図１】
2006209735.tif 000003
【図２】
2006209735.tif 000004
【図３】
2006209735.tif 000005
【図４】
2006209735.tif 000006
【図５】
2006209735.tif 000007
【図６】
2006209735.tif 000008
【図７】
2006209735.tif 000009
【図８】
2006209735.tif 000010
【図９】
2006209735.tif 000011
【図１０】
2006209735.tif 000012
【図１１】
2006209735.tif 000013
【図１２】
2006209735.tif 000014
【図１３】
2006209735.tif 000015
【図１４】
2006209735.tif 000016
【図１５】
2006209735.tif 000017
【図１６】
2006209735.tif 000018
【図１７】
2006209735.tif 000019
【図１８】
2006209735.tif 000020