JP6403559B2 - 情報処理装置およびその制御方法、並びにプログラム - Google Patents

情報処理装置およびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP6403559B2
JP6403559B2 JP2014248420A JP2014248420A JP6403559B2 JP 6403559 B2 JP6403559 B2 JP 6403559B2 JP 2014248420 A JP2014248420 A JP 2014248420A JP 2014248420 A JP2014248420 A JP 2014248420A JP 6403559 B2 JP6403559 B2 JP 6403559B2
Authority
JP
Japan
Prior art keywords
bundle
fragment
information processing
fragment bundle
safe mode
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.)
Active
Application number
JP2014248420A
Other languages
English (en)
Other versions
JP2016110461A (ja
Inventor
仁 道貝
仁 道貝
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 JP2014248420A priority Critical patent/JP6403559B2/ja
Priority to US14/960,522 priority patent/US9563416B2/en
Publication of JP2016110461A publication Critical patent/JP2016110461A/ja
Application granted granted Critical
Publication of JP6403559B2 publication Critical patent/JP6403559B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
近年、画像形成装置においては、Java(登録商標)環境に代表されるようなアプリケーション(以降、「アプリ」)動作環境が提供されている。画像形成装置の機能やユーザビィリティの向上を図るために、Java(登録商標)環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、所望の機能を実現できる。アプリプラットフォームとしては、組み込み機器向けのJava(登録商標)アプリプラットフォームである、OSGi(Open Services Gateway Initiative)がある(非特許文献1)。OSGiでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール/開始/停止/更新/アンインストールからなるライフサイクルを管理するための仕様を定義している。
従来、パーソナルコンピュータ(PC)などで稼動するオペレーティングシステム(OS)では、アプリやドライバなどの設定の誤りによって、システム自体がクラッシュしたり、挙動が不安定になったりすることがある。例えば、同一のハードウェア資源を使用する複数のドライバがインストールされた場合、起動の際にハードウェア資源をドライバ同士で競合することにより、このような事態に陥る可能性がある。また、この状態を解消したくてもシステム自体が起動できずシステムを復旧出来ない事態に陥ることもある。
上記のような事態に陥るのを防ぐために、OSは、通常の動作モード(以降、「通常モード」と呼ぶ)とは別に、必要最低限のドライバ、システムサービスなどで構成されたシステムを立ち上げるモード(以降、「セーフモード」と呼ぶ)を備えている。セーフモードで起動することにより、不具合を起こしているドライバを削除したり、ドライバやアプリの設定を変更したりでき、システムクラッシュや動作不安定の要因を回避できる。
一方、画像形成装置のような組込み機器においても、ユーザがアプリをインストールすることにより、アプリ間の資源の競合、サービスの登録や利用順序などが要因で、動作不安定な状態に陥る場合がある。その復旧手段として、セーフモードで起動する仕組みが提案されている(特許文献1)。しかしながら、OSGiのバンドルの種類には、ホストバンドルとフラグメントバンドルという仕組みがあり、これらのアプリを取り扱う場合には、以下に述べるようなフラグメントバンドルの制限を考慮する必要がある。フラグメントバンドルとは、ホストバンドルのクラスローダ空間にバンドル自身を追加(アタッチ)する形式のバンドルである。フラグメントバンドルは単体で動作することはなく、ホストバンドルが開始状態となることで、フラグメントバンドルも開始状態にすることができる。また、フラグメントバンドルを停止状態にするためには、ホストバンドルを停止状態にする、あるいはフラグメントバンドルをアンインストールすることが必要となる。この仕様はOSGiの規約として求められており、開始状態にあるホストバンドルに対して、停止状態のフラグメントバンドルをインストールすることは出来ない。
特開2010−009553号公報
OSGi Alliance、2005年10月、"OSGi Service Platform Release4"、[online]、[平成26年11月27日検索]、インターネット<URL:http://www.osgi.org/Download/Release4V40>
上記のような仕様において、ホストバンドル自体に問題が無かったとしてもフラグメントバンドルに問題があった場合、ホストバンドルの開始に失敗し、正常にシステムを起動出来ず、システムが復旧出来ない事態に陥るという課題があった。例えば、システムにプレインストールされたセーフモード起動で開始するホストバンドルに対して、ユーザによって問題があるフラグメントバンドルがインストールされるようなケースが挙げられる。
上記のような課題を鑑み、本願発明は、問題のあるフラグメントバンドルがインストールされた場合でもセーフモードにて安全にシステムを起動できるようにすることを目的とする。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、通常の動作モードと、前記通常の動作モードよりもバンドルの機能を制限して動作するセーフモードとを備える情報処理装置であって、ホストバンドルをインストールし、前記ホストバンドルの機能を拡張するために前記ホストバンドルに追加されるフラグメントバンドルを仮インストールとして無効化して第一のメモリ領域に格納するインストール手段と、前記仮インストールされたフラグメントバンドルを、前記情報処理装置が前記セーフモードで起動した際に有効化するか無効化するかを定義したリストを保持する保持手段とを有し、前記インストール手段は、前記情報処理装置が前記セーフモードで起動した際に、前記仮インストールされたフラグメントバンドルのうち、前記リストに有効化することが定義されたフラグメントバンドルを有効化するために第二のメモリ領域へ移動させる。
本発明によれば、問題のあるフラグメントバンドルがインストールされていた場合でも、ユーザの利便性を低下させずに、セーフモード起動でシステムを安全に起動することが可能となる。
画像形成装置のハードウェア構成例を示す図。 画像形成装置のソフトウェアモジュール階層図。 アプリのインストールする流れを示す図。 各バンドルの構成及び関係を説明するための図。 アプリ管理baseおよびインストール画面の構成例を示す図。 フラグメントバンドルの仮インストール状態を説明するための図。 フラグメントバンドルの有効化/無効化を説明するための図。 サービス起動順リストの構成例を示す図。 セーフモード起動時のホストバンドルの開始処理のフローチャート。 第一の実施形態に係るサービス起動順リストの構成例を示す図。 第一の実施形態に係るセーフモード起動時の処理のフローチャート。 第一の実施形態に係るセーフモード起動時の処理を説明するためのシーケンス図。 第二の実施形態に係るセーフモード有効無効管理ファイルの構成例を示す図。 第二の実施形態に係るセーフモード起動時の処理のフローチャート。 第二の実施形態に係る通常モード起動時の処理のフローチャート。 第三の実施形態に係るマニフェストファイルの構成例を示す図。 第三の実施形態に係るラグメントバンドルのファイルの構成例を示す図。 第三の実施形態に係るセーフモード起動時の処理のフローチャート。 第四の実施形態に係るセーフモード起動時の処理のフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。まず、本明細書にて利用する用語の定義を行う。
「ホストバンドル」とは、フラグメントバンドルの追加対象となるバンドルである。なお、「バンドル」とは、Java(登録商標)モジュールのことを指し、本明細書においては、アプリと同義であるとして用いる。
「フラグメントバンドル」とは、単独では動作せず、ホストバンドルのクラスローダ空間に自分自身を追加するバンドルである。
ホストバンドルへフラグメントバンドルを追加すること、つまりホストバンドルへアタッチすることを、「フラグメントバンドルのインストール」と呼ぶ。更にこの状態を「フラグメントバンドルが有効化されている」と呼ぶ。
ホストバンドルに追加状態にあるフラグメントバンドルを削除することを、「フラグメントバンドルのアンインストール」と呼ぶ。
ホストバンドルにアタッチされていない状態でフラグメントバンドルをインストールすることを、「フラグメントバンドルの仮インストール」と呼ぶ。更にこの状態を「フラグメントバンドルが無効化されている」と呼ぶ。
「一般アプリ」とは、システムにプレイントールされたバンドルではなく、ユーザによってインストールされたバンドルを指す。
「システムアプリ」とは、システムにプレイントールされたバンドルを指す。
<第一の実施形態>
図1〜図7を用いて、以下に示す各実施形態に共通のフラグメントバンドルのインストール、有効化/無効化について説明する。また、図8、図9を用いて、セーフモードの基本形であるホストバンドルの開始について説明する。
[システム構成]
図1は、情報処理装置としての画像形成装置130のハードウェア構成例を示す図である。画像形成装置130は、印刷機能やスキャン機能、ネットワーク通信機能などを備える。コントローラ100は、画像形成装置130のコントローラである。コントローラ100は、スキャナ部113やプリンタ部114と電気的に接続され、一方でLAN116を介して外部機器と接続される。CPU101は、ROM102に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御する。また、CPU101は、コントローラ100内部で行われる各種処理についても統括的に制御する。
ROM102は、読み出し専用の不揮発記憶領域であり、画像形成装置130のブートプログラムなどを格納する。RAM103は、CPU101が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。RAM103は、記憶した内容を電源off後も保持可能なFRAMおよびSRAM、電源off後に記憶内容が消去されるDRAMなどにより構成される。HDD104は、不揮発記憶領域であり、システムアプリなどを格納する。図3で説明するインストールするアプリを含むファームウェアは、HDD104に格納される。
操作部I/F105は、システムバス119と操作部118を接続するインタフェース部である。具体的には、操作部I/F105は、操作部118に表示するデータをシステムバス119から受け取って表示すると共に、操作部118からの入力情報をシステムバス119へ出力する。画像形成装置130に対するユーザの指示や情報提示は、操作部118を介して行われる。ネットワークI/F106は、LAN116、WAN117、及びシステムバス119に接続し、外部との情報の入出力を行う。スキャナI/F108は、スキャナ部113から受け取った画像データに対して、補正、加工、及び編集を行う。
画像形成部109は、画像データの方向変換、画像圧縮、伸張部などを行う。プリンタI/F110は、画像形成部109から送られた画像データを受け取り、印刷動作を行うプリンタ部114に出力する。USBインタフェース120は、種々の周辺機器を画像形成装置130に接続する汎用インタフェースであり、USB(Universal Serial bus)への接続制御を行う。ここでは、USBインタフェース120には、フラッシュメモリ121が接続される。
図2は、画像形成装置130のソフトウェアモジュール階層200の概念図である。なお、図2以降に示す各ソフトウェアはROM102、もしくは、HDD104に保存され、CPU101にて実行される。また、実行時に使用する各種情報は、RAM103もしくはHDD104に保持され、ソフトウェアによる機能間での各種情報のやりとりが行われる。さらに、外部機器との通信は、ネットワークI/F106を用いて行われる。
次に各ソフトウェアの説明をする。画像形成装置130は、OSプラットフォーム201を有し、OSプラットフォーム201上にソフトウェアプラットフォーム202が構成されている。ソフトウェアプラットフォーム202は、Java(登録商標)の仮想マシンであるJavaVM203のランタイム環境として構成され、インタプリタとしてのJavaVM203、フレームワーク群204、およびライブラリ205を備えて構成される。ライブラリ205は、標準のAPI(Application Programming Interface)ライブラリを含んで構成される。フレームワーク群204は、OSGi206を含んで構成される。OSGi206は、単一のJavaVM203上に複数のアプリを動作させる。更に、OSGi拡張部211は、OSGi206に対し必要に応じて機能を拡張可能であることを示す。OSGi206は、アプリのライフサイクルの管理やアプリ間通信機能などを提供する。OSGi206上には、複数のシステムサービスがプリインストールされている。システムサービスとしては、複数のアプリ群を管理し、新たなアプリの追加、更新、削除をするためのアプリ管理サービス208がある。アプリ管理サービス208は、インストール制御サービス207を利用して、アプリの追加、更新、削除を行う。画像形成装置130の起動時に、OSGi206は、HDD104に保存されたサービス起動順リストに従い、ログインアプリ209、インストール制御サービス207、およびアプリ管理サービス208などのサービスを順次起動していく。本願発明に係るサービス起動順リストについては後述する。
ログインアプリ209は、ログインユーザを管理する。ログインアプリ209は、ログイン中に任意のアプリから任意のタイミングでログイン情報の問い合わせの可能性を考慮して、停止できない特性を有する。仮にログインアプリ209が停止していた場合、ログイン情報の取得ができなくなるため、例えば、ログイン情報に関連付けられたデータを利用するアプリがあった場合、データの取得に失敗し、その動作に支障が生じる。ここで、ログイン情報とは、現在、画像形成装置130にログインしているユーザのログイン名やメールアドレスなどの情報を指す。ログインアプリ209は、上記のような特性を持つため、画像形成装置130が起動中において、少なくとも1つが動作する。
一般アプリ210は、画像形成装置130において各種機能をユーザに提供する。一般アプリ210の例としては、画像の加工や圧縮アプリ、印刷制限などの部門管理を行うアプリなどがある。一般アプリ210は、アプリ管理サービス208の管理下で動作する。アプリ管理サービス208は、管理対象として追加されたアプリのバージョン情報を含むアプリ情報や、ライセンス情報などを保持する。さらに、アプリ管理サービス208は、画像形成装置130内のアプリのアンインストール指示に応答し、一般アプリ210を管理対象から外す。一般アプリ210、およびログインアプリ209は、図4で述べるようなホストバンドルとフラグメントバンドルという形態で、提供することが可能である。
図3は、ユーザが、PC300から画像形成装置130へ、アプリをインストールする際の流れを示す図である。
図5のインストール画面530で示すWEBページで構成されたアプリのインストールUI301がPC300のWEBブラウザ(不図示)に表示される。ユーザは、インストールUI301からインストールしたいアプリを指定し、インストールの指示を行う。アプリ管理サービス208は、インストールUI301で指定されたアプリのインストール指示を受信し、それをインストール制御サービス207に渡す。インストール制御サービス207は、受け付けた指示に基づき、アプリファイルを取得し、OSGi206にインストールを依頼する。OSGi206は、取得したアプリファイルを用いて、アプリのインストールを行う。インストールされたアプリは、アプリ管理サービス208によって管理される。
図4は、各バンドルの構成及び関係を説明するための図である。ここでは、ホストバンドル400に対して、2つの言語ローカライズリソース(JP、CN)を有するフラグメントバンドル401、402をインストールする例を示している。ホストバンドルにフラグメントバンドルをインストールするためには、OSGi206の規約上、以下のマニフェストファイル、及びバンドルパーミッションの指定が必要となる。
・ホストバンドルのマニフェストファイル403
Bundle−ManifestVersionに“2”を指定
Bundle−SymbolicNameには、フレームワーク内で一意な名前を付与
・フラグメントバンドルのマニフェストファイル405
Bundle−ManifestVersionに“2”を指定
Fragment−Hostには、ホストバンドルのマニフェストファイル403に記載された<ホストのバンドルシンボリック名>を指定する。本値が一致することでホストバンドルとフラグメントバンドルが同一アプリの構成要素であることを示す。
・ホストバンドルのパーミッション404
BundlePermission [バンドルシンボリック名,HOST]
・フラグメントバンドルのパーミッション406
BundlePermission [バンドルシンボリック名,FRAGMENT]
上記条件を満たす状態で、フラグメントバンドルをインストールすると、OSGi206がフラグメントバンドルのマニフェスト情報に基づいて、対応するホストバンドルを特定し、ホストバンドルのクラスパスにフラグメントバンドルのクラスパスの追加を行う。「クラスパス」とは、Javaアプリ実行する際に、JavaVM203がどの場所からクラスファイルを読み込めばよいかを、指定するための情報である。クラスファイルは、JavaVM203上で実行可能なJavaバイトコードを含む。更に、ホストバンドルのクラスローダ(不図示)によって、フラグメントバンドル内の全てのクラスとリソースがロードされる。「クラスローダ」とは、クラスのロードやリソースの検索を担当するオブジェクトであり、全てのクラスはクラスローダによってJavaVM203にロードされ、アプリから利用可能となる。このホストバンドルのクラスローダによるロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加した上でロードする必要がある。よって、ホストバンドルが停止していない場合は、フラグメントバンドルのインストールに失敗する。フラグメントバンドルがインストールされた後は、ホストバンドルの一部として利用可能となる。
本例では、フラグメントバンドル401、402として日本語リソース、中国語リソースが本体であるホストバンドル400にインストールされ、その後、ホストバンドル400は、これらの言語リソースを利用して、UI表示の言語切り替えが可能となる。つまり、ホストバンドル400のUI上の標準の表示は英語であるが、新たな言語リソースをインストールし、UI上でリソース切替え指定をすることで、日本語や中国語を表示するようにホストバンドル400の機能を拡張することができる。
ホストバンドルがログインアプリの場合の例を挙げる。この場合、ホストバンドルが認証に関する基本的な処理を担い、フラグメントバンドルが、例えばICカードがかざされた際にそのICカードが保持する情報によりログインするといったUIの機能を補う、といった構成が可能となる。
[アプリ管理]
図5〜図7を用いて、アプリ管理サービス208が提供するアプリ管理画面における、ホストバンドル、およびフラグメントバンドルの管理方法について説明する。また、フラグメントバンドルの仮インストールとフラグメントバンドルの有効化/無効化について説明する。
図5は、アプリ管理サービス208における、一般アプリの管理画面500とインストール画面530の構成例を示す図である。ここでは、一般アプリの管理画面で説明するが、ログインアプリの管理画面についても同様の画面とする。
まず、一般アプリの管理画面500について説明する。アプリケーション名501は、管理されている一般アプリ名を表示する。図5に示す例の場合、アプリケーションA505とアプリケーションB506の2つが管理されている。更に、アプリケーションA505をホストバンドルとして、フラグメントバンドルA507、およびフラグメントバンドルB508が管理されている。また、各フラグメントバンドルが関連付けられているホストバンドルが分かるように表示される。ここでは、フラグメントバンドルA507およびフラグメントバンドルB508がアプリケーションA505と関連付けて表示されている。
インストール日502は、各アプリがインストールされた日付を示す。アプリケーションID503は、各アプリに一意に割り振られたアプリケーションID(識別情報)を表示する。状態504は、各アプリの状態を示す。アプリが開始状態であれば「開始」、停止状態であれば「停止」と表示する。また、対象がフラグメントバンドルの場合に、状態504では、フラグメントバンドルがホストバンドルにインストールされている場合は「有効」と表示し、図6で示す仮インストール状態の場合は「無効」と表示する。開始ボタン516、停止ボタン513は、アプリの開始/停止を切り替える指示ボタンである。開始状態のアプリに対しては停止ボタンが表示され、停止状態のアプリに対しては開始ボタンが表示される。有効化ボタン515、無効化ボタン514は、フラグメントバンドルの有効/無効を切り替える指示ボタンである。開始状態のアプリ(本例では、「アプリケーションA505」)の停止ボタン513が押下されると、その状態504は「停止」に変更される。一方、停止状態のアプリ(本例では、「アプリケーションB506」)の開始ボタン516が押下されると、その状態504は「開始」に変更される。有効状態のアプリ(本例では、「フラグメントバンドルA507」)の無効化ボタン514が押下されると、その状態504は「無効」に変更される。一方、無効状態のアプリ(本例では、「フラグメントバンドルB508」)の有効化ボタン515が押下されると、その状態504は「有効」に変更される。
アンインストールボタン517〜520は、各アプリをアンインストールするための指示ボタンである。フラグメントバンドルのアンインストールはフラグメントバンドルのみがアンインストール対象となる。例えば、フラグメントバンドルA507のアンインストールボタン518が押下された場合、フラグメントバンドルA507だけがアンインストールされる。一方、ホストバンドルであるアプリケーションA505のアンインストールボタン517が押下された場合、アプリケーションA505に加え、関連付けられたフラグメントバンドルA507とフラグメントバンドルB508も同時にアンインストールされる。
次に、インストール画面530について説明する。参照ボタン533が押下されると、ファイルパスを選択する画面(不図示)が表示される。その選択画面でアプリファイルが指定されると、アプリケーションファイルのパス531にアプリファイルへのパスが入力される。アプリは、セキュリティやビジネス上の観点からインストール処理において、アプリを復号するためのライセンスファイルが必要となる場合がある。その場合に、参照ボタン534が押下されると、ファイルパスを選択する画面(不図示)が表示される。その選択画面でライセンスファイルが指定されると、ライセンスファイルのパス532にライセンスファイルへのパスが入力される。インストールボタン535が押下されると、アプリケーションファイルのパス531で指定したアプリのインストールが開始される。フラグメントバンドルがインストールに指定された場合、フラグメントバンドルは、一旦、仮インストールされる。
図6は、フラグメントバンドルの仮インストール状態を説明するための図である。ホストバンドルである一般アプリA600に、フラグメントバンドルであるフラグメントバンドルX601を仮インストールする場合を示す。
インストール制御サービス207は、同時に指定されたライセンスファイルを用いてフラグメントバンドルX601を復号化し、インストール作業フォルダ602に配置する。その後、インストール制御サービス207は、復号化されたフラグメントバンドルX605のマニフェストファイルに記載されているホストバンドル情報に基づき、関連付けられるホストバンドルが一般アプリA600であることを特定する。その上で、インストール制御サービス207は、フラグメントバンドルX606をメモリ領域である仮インストールフォルダ604に配置する。仮インストールフォルダ604に配置されているフラグメントバンドルは、仮インストール状態であり、OSGi206の管理下にはない。また607で示すように、ホストバンドルである一般アプリA600のユニークなアプリIDをフォルダ名とするフォルダの配下に、フラグメントバンドルX606を配置する。
図7は、図6で仮インストールされたフラグメントバンドルX606の有効化/無効化を説明するための図である。ユーザの有効化指示701により、インストール制御サービス207は、無効状態で仮インストールされているフラグメントバンドルX606の有効化処理を行う。インストール制御サービス207は、フラグメントバンドルX606を有効化、つまりホストバンドル(ここでは、一般アプリA600)にインストールすることにより、メモリ領域であるアプリフォルダ603に移動させてインストールする。この状態では、OSGi206の管理下にあり、一般アプリA600とフラグメントバンドルX606の関連性をOSGi206が保持している。なお、フラグメントバンドルX606が有効化された後は、フラグメントバンドルX606は、一般アプリA600の一部として利用可能となる。この状態では、一般アプリA600を開始することによりフラグメントバンドルX606も開始している状態となる。
一方、ユーザの無効化指示702により、インストール制御サービス207は、有効状態でインストールされているフラグメントバンドルX700の無効化処理を行う。無効化処理により、フラグメントバンドルX700は、再び仮インストールフォルダ604に移動させることで、無効状態として配置される。この状態では、OSGi206の管理下にないため、一般アプリA600とフラグメントバンドルX606の関連性をOSGi拡張部211が保持している。なお、フラグメントバンドルX700が無効化された後は、フラグメントバンドルX700は、一般アプリA600の一部としての利用が不可となる。つまり、この状態になると、一般アプリA600を開始したとしても、フラグメントバンドルX606は停止している状態となる。なお、本明細書において、便宜上、仮インストールフォルダ604を「第一のメモリ領域」と称し、アプリフォルダ603を「第二のメモリ領域」とも記載する。
図8は、サービス起動順リスト800の内容例を示す。項目801は、アプリを特定するための名称である。なお、名称の代わりに、アプリを一意に特定するためのユニークなアプリID(識別情報)などを指定してもよい。項目802は、アプリの初期状態が開始/停止を指定する設定である。開始/停止については、ホストバンドルが対象となる。項目803は、アプリのスタートレベルを示し、この数値の若い順番にOSGi206は、ファームに配置されたバンドルをインストールし、項目802の設定に従った初期状態へと制御する。項目804は、セーフモード起動時のアプリの状態を開始/停止で指定する設定であり、“on”が指定された場合はアプリは開始され、“off”が指定された場合はアプリは停止される。開始/停止については、ホストバンドルが対象となり、フラグメントバンドルは指定の対象外である。また、ユーザがインストールする一般アプリは、セーフモード起動時の設定が“off”として扱われる。
図9は、セーフモード起動において、ホストバンドルを開始する処理を説明するためのフローチャートである。本処理は、CPU101がHDD104等に格納されたプログラムを読み出して実行することにより実現される。
セーフモード起動処理が開始すると、S901にて、OSGi206は、サービス起動順リスト800を読み込み、リストの先頭行から順に処理を開始する。S902にて、OSGi206は、バンドルの種類を取得する。S903にて、OSGi206は、S902で取得したバンドルの種類がフラグメントバンドルに該当するか否かを確認する。フラグメントバンドルに該当する場合は(S903にてYES)S906へ進み、フラグメントバンドルに該当しない場合、すなわちホストバンドルである場合は(S903にてNO)S903に進む。S904にて、OSGi拡張部211は、着目しているバンドルの項目804が“on”であるか否か(すなわち、safemode=onか否か)を確認する。safemode=offの場合は(S904にてNO)S906へ進み、safemode=onの場合は(S904にてYES)S905に進む。S905にて、OSGi206は、対象のバンドル(つまり、ホストバンドル)を開始する。S906にて、OSGi206は、リストの最終行であるか否かを確認する。最終行でない場合は(S906にてNO)、S902に戻り、次の行(次のバンドル)を処理対象として処理を繰り返す。サービス起動順リストの全てのバンドルに対して処理が完了した場合(S906にてYES)、セーフモード起動の処理を終了する。
以上、ホストバンドルを対象としたセーフモード起動について説明した。次にフラグメントバンドルを含んだセーフモード起動における実施形態を示す。
図10は、サービス起動順リスト1000の内容例を示す。サービス起動順リスト1000の中の項目1001〜1004は、図8で示した項目801〜804と同じであるため説明を省略する。項目1005は、フラグメントバンドルを特定するための名称である。なお、名称の代わりに、フラグメントバンドルを一意に特定するためのユニークなアプリIDなどを指定してもよい。項目1006は、フラグメントバンドルの初期状態を有効/無効で指定する設定である。項目1007は、セーフモード起動時のフラグメントバンドルの状態を有効/無効で指定する設定であり、“on”が指定された場合はフラグメントバンドルは有効化され、“off”が指定された場合はフラグメントバンドルは無効化される。また、ユーザがインストールする一般アプリは、セーフモード起動時の設定が“off”として扱われる。
図11は、ホストバンドルとフラグメントバンドルを含むセーフモード起動時の処理を説明するためのフローチャートである。
セーフモード起動処理が開始すると、S1101にて、OSGi206は、サービス起動順リスト1000を読み込み、リストの先頭行から処理を開始する。S1102にて、OSGi拡張部211は、バンドルの種類を取得する。S1103にて、OSGi拡張部211は、S1102で取得したバンドルの種類がフラグメントバンドルに該当するか否かを確認する。フラグメントバンドルに該当しない場合は(S1103にてNO)S1110へ進み、フラグメントバンドルに該当する場合は(S1103にてYES)S1104に進む。
S1104にて、OSGi拡張部211は、フラグメントバンドルの有効化/無効化状態を取得する。S1105にて、OSGi拡張部211は、項目1007が“on”であるか否か(すなわち、safemode=onか否か)を確認する。safemode=offの場合は(S1105にてNO)S1106に進み、safemode=onの場合は(S1105にてYES)S1108に進む。S1106にて、OSGi拡張部211は、S1104で取得したフラグメントバンドルの状態が有効化されているか否かを確認する。具体的には、フラグメントバンドルが仮インストールフォルダ604に格納されている場合には無効化されていると判定され、フラグメントバンドルがアプリフォルダ603に格納されている場合には無効化されていると判定される。有効化されていない場合は(S1106にてNO)S1110へ進み、有効化されている場合は(S1106にてYES)S1107へ進む。S1107にて、OSGi拡張部211は、無効化処理を行う。その後、S1110へ進む。
S1108にて、OSGi拡張部211は、S1104で取得したフラグメントバンドルの状態が無効化されているか否かを確認する。無効化されていない場合は(S1108にてNO)S1110へ進み、無効化されている場合は(S1108にてYES)S1109へ進む。S1109にて、OSGi拡張部211は、有効化処理を行う。その後、S1110へ進む。
S1110にて、OSGi拡張部211は、リストの最終行であるか否かを確認する。最終行でない場合は(S1110にてNO)、S1102に戻り、次の行(次のバンドル)を処理対象として処理を繰り返す。サービス起動順リストの全てのバンドルに対して処理が完了した場合(S1110にてYES)、S1111に進む。S1111の処理については、図9で示したS901〜S906までと同じ説明であるため説明を省略する。そして、セーフモード起動の処理を終了する。
図12は、画像形成装置130をセーフモードで起動した場合の、フラグメントバンドルを仮インストールするまでの各サービスの処理の流れ、および、データの流れを示す図である。
S1200にて、ユーザ1250がセーフモード起動で画像形成装置130の電源をONすると、S1201のセーフモード起動処理が開始する。S1202にて、画像形成装置130は、OSGi206のフレームワーク起動処理を呼び出す。S1203にて、OSGi拡張部211は、サービス起動順リスト1000を読み込む。S1204にて、OSGi拡張部211は、バンドルの種類を取得する。バンドルの種類がフラグメントバンドルの場合、S1205にて、OSGi拡張部211は、バンドルの状態の情報を取得する。項目1007が“on”で、かつ、フラグメントバンドルの状態が無効化状態である場合は、S1206にて、OSGi拡張部211は、フラグメントバンドルのインストールを行う。S1207にて、OSGi拡張部211は、仮インストールフォルダ604に配置されたアプリファイル1251をアプリフォルダ603にアプリファイル1252としてコピーする。S1208にて、OSGi拡張部211は、仮インストールフォルダ604に配置されたアプリファイル1251を削除する。以上の流れにより、無効化状態のフラグメントバンドルは有効化状態になる。
一方、項目1007が“off”で、かつ、フラグメントバンドルの状態が有効化状態である場合は、S1209にて、OSGi拡張部211は、ファイル退避指示を行う。S1210にて、OSGi拡張部211は、アプリフォルダ603に配置されたアプリファイル1253を、アプリファイル1254として仮インストールフォルダ604にコピーする。S1211にて、OSGi206は、アンインストール処理を行い、アプリフォルダ603に配置されたアプリファイル1253を削除する。以上の流れにより、有効化状態のフラグメントバンドルは無効化状態になる。
以上、本実施形態により、セーフモード起動時において、問題を含む可能性のあるフラグメントバンドルを無効化することで、システムを安全に起動するとともに、必要なフラグメントバンドルを有効化することで利便性を高めることが可能となる。
<第二の実施形態>
本実施形態では、セーフモード起動時にフラグメントバンドルを無効化あるいは有効化した後、再度、通常の動作モード(通常モード)で画像形成装置を起動した場合を考える。セーフモード起動時にフラグメントバンドルを利用できなくした場合、システムによって利用を止められたフラグメントバンドルは、次回の通常モード起動時においても利用できなくなるという課題がある。これに対し、例えば、ユーザがインストールして利用を開始したフラグメントバンドルがセーフモード起動時に利用を止められた場合でも、次回通常モード起動時には利用を再開したいという要望があると考えられる。
図13は、本実施形態に係るセーフモード有効無効管理ファイル1300の内容例を示す。項目1301は、フラグメントバンドルを特定するための名称である。なお、名称の代わりに、アプリを一意に特定するためのユニークなアプリIDを指定してもよい。項目1302は、フラグメントバンドルの元の状態(セーフモード起動前の状態)を記録するものであり、“effective”は元の状態が有効状態であったことを示し、“invalid”は元の状態が無効状態であったことを示す。上記のセーフモード起動時に記録した内容に基づいて、次回通常モード起動時に、フラグメントバンドルをどの状態に戻せばよいかについて判定を行う。
なお、セーフモード起動中に、管理画面500上でフラグメントバンドルの有効化ボタン515/無効化ボタン514が押下された場合には、OSGi拡張部211は、セーフモード有効無効管理ファイルから操作対象のフラグメントバンドルの情報を削除する。これは、セーフモード起動中に行われたユーザ操作を優先するために行うものである。また、管理画面500上でアンインストールボタン518、519が押下された場合も、OSGi拡張部211は、セーフモード有効無効管理ファイル1300から操作対象のフラグメントバンドルの情報を削除する。更に、ホストバンドルのアンインストールボタン517、520が押下された場合も同様である。言い換えると、セーフモード有効無効管理ファイル1300から情報が削除されることにより、次回の通常モードでの起動時には、サービス起動順リスト1000にて指定された状態で各バンドルは起動されることとなる。
[処理フロー]
図14は、本実施形態に係るセーフモード起動時の処理のフローチャートである。なお、S1401〜1407、S1409〜1410、およびS1412〜1413の処理それぞれについては、第一実施形態の図11で示したS1101〜1107、S1108〜1111と同じであるため、説明は省略する。つまり、ここでは、S1408、S1411の処理が新たに追加されている。
S1408にて、OSGi拡張部211は、セーフモード有効無効管理ファイル1300に無効化したフラグメントバンドルの名称、および元の状態を示す“effective”を記録する。
一方、S1411にて、OSGi拡張部211は、セーフモード有効無効管理ファイル1300に有効化したフラグメントバンドルの名称、および元の状態を示す“invalid”を記録する。
図15は、本実施形態に係る通常モード起動時の処理のフローチャートである。
通常モード起動処理が開始すると、S1501にて、OSGi拡張部211は、セーフモード有効無効管理ファイル1300を読み込み、リストの先頭行から処理を開始する。S1502にて、OSGi拡張部211は、項目1301に該当するフラグメントバンドルの有効化/無効化状態を取得する。S1503にて、OSGi拡張部211は、項目1302の値を確認し、“invalid”か否かを判定する。original_status=invalidの場合は(S1503にてYES)S1504に進み、original_status=effectiveの場合は(S1503にてNO)S1506に進む。
S1504にて、OSGi拡張部211は、S1502で取得したフラグメントバンドルの状態が有効化されているか否かを確認する。フラグメントバンドルが有効化されていない場合は(S1504にてNO)S1508へ進み、フラグメントバンドルが有効化されている場合は(S1504にてYES)S1505に進む。S1505にて、OSGi拡張部211は、無効化処理を行う。その後、S1508へ進む。
S1506にて、OSGi拡張部211は、S1502で取得したフラグメントバンドルの状態が無効化されているか否かを確認する。フラグメントバンドルが無効化されていない場合は(S1506にてNO)S1508へ進み、無効化されている場合は(S1506にてYES)S1507へ進む。S1507にて、OSGi拡張部211は、有効化処理を行う。その後、S1508へ進む。
S1508にて、OSGi拡張部211は、リストの最終行であるか否かを確認する。最終行でない場合は(S1508にてNO)、S1502に戻り、セーフモード有効無効管理ファイル1300の次の行を処理対象として処理を繰り返す。セーフモード有効無効管理ファイル1300の全てのフラグメントバンドルに対して処理が完了した場合(S1508にてYES)、S1509へ進む。
S1509にて、OSGi拡張部211は、セーフモード有効無効管理ファイル1300を削除する。S1510にて、OSGi206は、サービス起動順リスト1000を読み込み、リストの先頭行から処理を開始する。S1511にて、OSGi206は、バンドルの種類を取得する。S1512にて、OSGi206は、S1511で取得したバンドルの種類がフラグメントバンドルに該当するか否かを確認する。フラグメントバンドルに該当する場合は(S1512にてYES)S1514へ進み、フラグメントバンドルに該当しない場合は(S1512にてNO)S1513へ進む。S1513にて、OSGi206は、バンドルを開始する。S1514にて、OSGi206は、リストの最終行であるか否かを確認する。最終行でない場合は(S1514にてNO)、S1511に戻り、サービス起動順リスト1000の次の行を処理対象として処理を繰り返す。最終行である場合、すなわち、サービス起動順リスト1000の全てのバンドルに対して処理が完了した場合(S1514にてYES)、通常モード起動の処理を終了する。
以上、本実施形態により、セーフモード起動時にフラグメントバンドルを無効化あるいは有効化したとしても、その後、通常モードで起動した際にはセーフモード起動前の状態に戻すことが可能となる。
<第三の実施形態>
本実施形態では、ユーザによってインストールされたフラグメントバンドルを、セーフモード起動時に有効化する場合について考える。セーフモード起動において、ユーザがインストールしたフラグメントバンドルを全て無効化した場合、有効化したいフラグメントバンドルがあった場合でも利用出来なくなるため、使い勝手が低下するという課題がある。例えば、セーフモード起動で開始するシステムアプリであるホストバンドルに対して、ユーザインターフェースの表示言語をローカライズするフラグメントバンドルが無効化された場合、ユーザの操作性が低下することが考えられる。
図16は、本実施形態に係るアプリのマニフェストファイル1600の内容例を示す。項目1601は、ユーザがインストールするフラグメントバンドルについて、セーフモード起動時の状態を有効/無効で指定する設定である。有効化する場合は“on”、無効化する場合は“off”を指定する。項目1601を省略した場合は、“off”が指定されたものとして扱う。また、システムアプリについて項目1601が指定されていたとしても、サービス起動順リスト800の項目804の指定が“on”であれば、項目804の指定を優先する。
図17は、アプリのファイル構成例を示し、ここではJarファイル内の構成を示す。ファイル1701は、アプリのマニフェストファイルである。ファイル1702は設定ファイルである。ファイル1703は画像ファイルである。ファイル1704は、HTML(Hyper Text Markup Language)ファイルである。ファイル1705は、JavaScript(登録商標)で記述されたスクリプトファイルである。ファイル1706は、JavaVM203上で実行可能なJava(登録商標)バイトコードを含むクラスファイルである。つまり、クラスファイルは、実行する処理が定義されたバイトコードを含むプログラムファイルである。一方、画像ファイルなどは、処理に用いられるリソースファイルである。なお、図17のファイル構成はあくまで1つの例であり、JavaArchiveのファイルフォーマットとしての要件を満たせばよく、ファイルの構成について特に制限するものではない。また、本実施形態では、所定の形式のファイルとして、クラスファイルを対象とするが、これに限定するものではない。
[処理フロー]
図18は、本実施形態に係るセーフモード起動時の処理のフローチャートである。
セーフモード起動処理が開始されると、S1801にて、OSGi拡張部211は、サービス起動順リスト1000を読み込み、リストの先頭行から処理を開始する。S1802にて、OSGi拡張部211は、バンドルの種類を取得する。S1803にて、OSGi拡張部211は、S1802で取得したバンドルの種類がフラグメントバンドルに該当するか否かを確認する。フラグメントバンドルに該当しない場合は(S1803にてNO)S1813へ進み、フラグメントバンドルに該当する場合は(S1803にてYES)S1804に進む。
S1804にて、OSGi拡張部211は、サービス起動順リスト800の項目804の指定が“on”であるか否かを確認する。safemode=offの場合は(S1804にてNO)S1805に進み、safemode=onの場合は(S1804にてYES)S1811に進む。
S1805にて、OSGi拡張部211は、フラグメントバンドルの有効化/無効化状態を取得する。S1806にて、OSGi拡張部211は、フラグメントバンドルについての情報を取得する。具体的には、ファイル1701の項目1601と、ファイル1702〜1706にJava(登録商標)のバイトコードを含むクラスファイルが存在するか否かに関する情報を取得する。S1807にて、OSGi拡張部211は、S1806で取得した項目1601が“on”か否かを確認する。safemode=offの場合は(S1807にてNO)S1809へ進み、safemode=onの場合は(S1807にてYES)S1808へ進む。
S1808にて、OSGi拡張部211は、S1806で取得したファイルにJava(登録商標)のバイトコードを含むクラスファイルが存在するか否かを確認する。存在する場合は(S1808にてYES)S1809に進み、存在しない場合は(S1808にてNO)S1811に進む。ここでクラスファイル(所定の形式のファイル)が存在するか否かをチェックする理由としては、ホストバンドルのクラスローダによって問題のあるクラスファイルが読み込まれることで、後述のホストバンドルの開始に失敗することを回避するためである。つまり、クラスファイル以外のファイルから構成されている場合(例えば、リソースファイルのみ)にはフラグメントバンドルをインストールしてもホストバンドルの開始に失敗することが避けられる。
S1809〜S1814の処理それぞれについては、第一の実施形態にて示した図11のS1106〜S1111と同じであるため、説明を省略する。
以上、本実施形態により、セーフモード起動時において、ユーザがインストールしたフラグメントバンドルを有効化したとしても、システムを安全に起動しつつ、ユーザの利便性が低下することを防止することが可能となる。
<第四の実施形態>
本実施形態では、ユーザによってインストールされたフラグメントバンドルを有効化した際、そのフラグメントバンドルに問題があった場合について考える。第三の実施形態では、JavaVM上で実行可能なJava(登録商標)のバイトコードを含むクラスファイルが存在する場合は有効化しない。しかしながら、Java(登録商標)のバイトコードを含むクラスファイルは存在するが、セーフモード起動に影響を与えないことが分かっている場合、ユーザは有効化したいとの要望がある。そこで、本実施形態では、問題の生じないフラグメントバンドルおよびそのホストファイルは有効化する。その一方で、問題の生じるフラグメントバンドルについては無効化した上で、そのホストバンドルを有効化するように制御する。
[処理フロー]
図19は、本実施形態に係るセーフモード起動時の処理のフローチャートである。
まず、図19(A)において、セーフモード起動処理が開始されると、S1901にて、OSGi拡張部211は、サービス起動順リスト1000を読み込み、リストの先頭行から処理を開始する。S1902にて、OSGi拡張部211は、バンドルの種類を取得する。S1903にて、OSGi拡張部211は、S1902で取得したバンドルの種類がフラグメントバンドルに該当するか否かを確認する。フラグメントバンドルに該当しない場合は(S1903にてNO)S1912へ進み、フラグメントバンドルに該当する場合は(S1903にてYES)S1904に進む。
S1904にて、OSGi拡張部211は、フラグメントバンドルの有効化/無効化状態を取得する。S1905にて、OSGi拡張部211は、フラグメントバンドルのマニフェストファイル1600の項目1601を取得する。S1906にて、OSGi拡張部211は、サービス起動順リスト800の項目804の指定が“on”であるか否かを確認する。safemode=offの場合は(S1906にてNO)S1907に進み、safemode=onの場合は(S1906にてYES)S1910に進む。
S1907にて、OSGi拡張部211は、S1905で取得した項目1601が“off”であるか否かを確認する。safemode=offの場合は(S1907にてNO)S1908に進み、safemode=onの場合は(S1907にてYES)S1910に進む。
S1908〜S1912の処理それぞれについては、第一の実施形態に示した図11のS1106〜S1110と同じであるため、説明を省略する。S1913のステップとして、図19(B)を用いて詳細に説明する。
図19(B)において、ホストバンドルの開始処理が開始されると、S1951にて、OSGi拡張部211は、サービス起動順リスト800を読み込み、リストの先頭行から処理を開始する。なお、S1951〜S1955の処理それぞれについては、第一の実施形態にて示した図9のS901〜S905と同じであるため、説明を省略する。
S1956にて、OSGi拡張部211は、S1955で行ったバンドルの開始が成功したか否かを確認する。成功した場合は(S1956にてYES)S1964に進み、失敗した場合は(S1956にてNO)S1957に進む。S1957にて、OSGi拡張部211は、開始に失敗したホストバンドルに関係するフラグメントバンドルの情報を取得する。S1958にて、OSGi拡張部211は、S1957で取得したフラグメントバンドルが存在するか否かを確認する。存在しない場合は(S1958にてNO)S1964に進み、存在する場合は(S1958にてYES)S1959に進む。
S1959にて、OSGi拡張部211は、開始に失敗したホストバンドルに関係するフラグメントバンドルのリスト(不図示)を取得し、リストの先頭行から処理を開始する。S1960にて、OSGi拡張部211は、フラグメントバンドルの有効化/無効化状態を取得する。S1961にて、OSGi拡張部211は、S1960で取得したフラグメントバンドルの状態が有効化されているか否かを確認する。フラグメントバンドルが有効化されていない場合は(S1961にてNO)S1963へ進み、有効化されている場合は(S1961にてYES)S1962に進む。S1962にて、OSGi拡張部211は、無効化処理を行う。その後、S1963へ進む。
S1963にて、OSGi拡張部211は、リストの最終行であるか否かを確認する。最終行でない場合は(S1963にてNO)、S1960に戻り、次の行(次のフラグメントバンドル)を処理対象として処理を繰り返す。最終行である場合、すなわち、開始に失敗したホストバンドルに関係する全てのフラグメントバンドルに対して無効化の処理が完了した場合(S1963にてYES)、S1955に進む。そして、S1955にて、OSGi拡張部211は、開始が失敗したホストバンドルに対して、再度開始を試みる。
S1964にて、OSGi206は、サービス起動順リストの最終行であるか否かを確認する。最終行でない場合は(S1964にてNO)S1952に戻り、次の行を処理対象として処理を繰り返す。最終行である場合、すなわち、サービス起動順リストの全てのバンドルに対して処理が完了した場合(S1964にてYES)、ホストバンドルの開始処理を終了し、図19(A)の処理に戻る。
以上、本実施形態により、セーフモード起動時において、ユーザがインストールしたフラグメントバンドルに問題があった場合でも、ユーザの利便性を低下させずに、システムを安全に起動することが可能となる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101…CPU、130…画像形成装置、201…OSプラットフォーム、202…ソフトウェアプラットフォーム、204…フレームワーク群、211…OSGi拡張部、208…アプリ管理サービス

Claims (10)

  1. 通常の動作モードと、前記通常の動作モードよりもバンドルの機能を制限して動作するセーフモードとを備える情報処理装置であって、
    ホストバンドルをインストールし、前記ホストバンドルの機能を拡張するために前記ホストバンドルに追加されるフラグメントバンドルを仮インストールとして無効化して第一のメモリ領域に格納するインストール手段と、
    前記仮インストールされたフラグメントバンドルを、前記情報処理装置が前記セーフモードで起動した際に有効化するか無効化するかを定義したリストを保持する保持手段と
    を有し、
    前記インストール手段は、前記情報処理装置が前記セーフモードで起動した際に、前記仮インストールされたフラグメントバンドルのうち、前記リストに有効化することが定義されたフラグメントバンドルを有効化するために第二のメモリ領域へ移動させることを特徴とする情報処理装置。
  2. 前記セーフモードにて起動した際に、前記リストに基づいて、フラグメントバンドルの有効化もしくは無効化の状態を切り替えた場合、当該フラグメントバンドルの切り替え前の状態を記録する記録手段を更に有し、
    前記セーフモードの動作の後に、前記情報処理装置が前記通常の動作モードで起動した場合、前記インストール手段は、前記記録手段にて記録した切り替え前の状態にて、前記フラグメントバンドルを有効化もしくは無効化することを特徴とする請求項1に記載の情報処理装置。
  3. 前記フラグメントバンドルを有効化もしくは無効化する指示をユーザから受け付ける受け付け手段を更に有し、
    前記セーフモードで動作している際に、前記受け付け手段にて前記フラグメントバンドルの有効化もしくは無効化する指示を受け付けた場合、前記インストール手段は、前記記録手段にて記録した状態に関わらず、前記情報処理装置が前記通常の動作モードで起動した際には、前記受け付け手段にて受け付けた指示の状態にて前記フラグメントバンドルを有効化もしくは無効化することを特徴とする請求項2に記載の情報処理装置。
  4. 前記リストにおいて、ユーザによって新たに追加されたフラグメントバンドルは、前記情報処理装置が前記セーフモードで起動した際には無効化するとして扱われることを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記フラグメントバンドルに所定の形式のファイルが含まれているか否かを判定する判定手段を更に有し、
    前記インストール手段は、前記情報処理装置が前記セーフモードで起動した際に、前記判定手段により前記所定の形式のファイルが含まれていると判定されたフラグメントバンドルは無効化し、前記判定手段により前記所定の形式のファイルが含まれていないと判定されたフラグメントバンドルは有効化することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  6. 前記所定の形式のファイルは、処理が定義されたバイトコードを含むクラスファイルであることを特徴とする請求項5に記載の情報処理装置。
  7. 前記判定手段は、前記フラグメントバンドルがリソースファイルのみから構成されている場合には、前記所定の形式のファイルが含まれていないと判定することを特徴とする請求項5または6に記載の情報処理装置。
  8. 前記インストール手段は、前記情報処理装置が前記セーフモードで起動した際に、前記リストに基づいてフラグメントバンドルを有効化した後、当該フラグメントバンドルが追加されているホストバンドルの開始に失敗した場合、当該フラグメントバンドルを前記第一のメモリ領域に移動して無効化した上で、再度、当該ホストバンドルを開始させることを特徴とする請求項1乃至7のいずれか一項に記載の情報処理装置。
  9. 通常の動作モードと、前記通常の動作モードよりもバンドルの機能を制限して動作するセーフモードとを備える情報処理装置の制御方法であって、
    ホストバンドルをインストールし、前記ホストバンドルの機能を拡張するために前記ホストバンドルに追加されるフラグメントバンドルを仮インストールとして無効化して第一のメモリ領域に格納するインストール工程を有し、
    前記インストール工程において、前記情報処理装置が前記セーフモードで起動した際に、前記仮インストールされたフラグメントバンドルのうち、前記情報処理装置が前記セーフモードで起動した際に有効化するか無効化するかを定義したリストにて有効化することが定義されたフラグメントバンドルを有効化するために第二のメモリ領域へ移動させることを特徴とする情報処理装置の制御方法。
  10. 通常の動作モードと、前記通常の動作モードよりもバンドルの機能を制限して動作するセーフモードとを備えるコンピュータを、
    ホストバンドルをインストールし、前記ホストバンドルの機能を拡張するために前記ホストバンドルに追加されるフラグメントバンドルを仮インストールとして無効化して第一のメモリ領域に格納するインストール手段、
    前記仮インストールされたフラグメントバンドルを、前記コンピュータが前記セーフモードで起動した際に有効化するか無効化するかを定義したリストを保持する保持手段
    として機能させ、
    前記インストール手段は、前記コンピュータが前記セーフモードで起動した際に、前記仮インストールされたフラグメントバンドルのうち、前記リストに有効化することが定義されたフラグメントバンドルを有効化するために第二のメモリ領域へ移動させることを特徴とするプログラム。
JP2014248420A 2014-12-08 2014-12-08 情報処理装置およびその制御方法、並びにプログラム Active JP6403559B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014248420A JP6403559B2 (ja) 2014-12-08 2014-12-08 情報処理装置およびその制御方法、並びにプログラム
US14/960,522 US9563416B2 (en) 2014-12-08 2015-12-07 Information processing apparatus, method of controlling the same and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014248420A JP6403559B2 (ja) 2014-12-08 2014-12-08 情報処理装置およびその制御方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2016110461A JP2016110461A (ja) 2016-06-20
JP6403559B2 true JP6403559B2 (ja) 2018-10-10

Family

ID=56094401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014248420A Active JP6403559B2 (ja) 2014-12-08 2014-12-08 情報処理装置およびその制御方法、並びにプログラム

Country Status (2)

Country Link
US (1) US9563416B2 (ja)
JP (1) JP6403559B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6935291B2 (ja) 2017-09-29 2021-09-15 キヤノン株式会社 画像形成装置及びその制御方法
CN108829401B (zh) * 2018-05-21 2021-02-09 全球能源互联网研究院有限公司 监测模式切换方法、装置、终端及可读存储介质
US11226807B1 (en) 2020-07-31 2022-01-18 Rapid7, Inc. Self-dependent upgrade of Java runtime environments
CN114217870A (zh) * 2021-12-10 2022-03-22 北京欧珀通信有限公司 安装包的加载方法及装置、电子设备、存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334679A (ja) * 2003-05-09 2004-11-25 Canon Inc 情報処理装置、情報処理装置のプログラム実行方式、情報処理装置のプログラム実行方式を記録した記憶媒体
WO2009154227A1 (ja) * 2008-06-20 2009-12-23 キヤノン株式会社 プラグインソフトウェアプログラムおよび機能拡張方法および機能拡張装置
JP2010009553A (ja) * 2008-06-30 2010-01-14 Ricoh Co Ltd 情報処理装置、情報処理方法、及び情報処理プログラム
JP5460150B2 (ja) * 2009-07-06 2014-04-02 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP5538970B2 (ja) * 2010-03-25 2014-07-02 キヤノン株式会社 情報処理装置、データ処理方法、プログラム
JP5773787B2 (ja) * 2011-07-21 2015-09-02 キヤノン株式会社 情報処理装置およびその制御方法およびプログラム
US9454349B2 (en) * 2011-12-20 2016-09-27 Microsoft Technology Licensing, Llc User interface placeholders for application extensions
JP6057740B2 (ja) * 2013-01-24 2017-01-11 キヤノン株式会社 画像形成装置、情報処理方法及びプログラム
US8930067B1 (en) * 2014-05-05 2015-01-06 Nmtc, Inc. System and method for a subscription-based diagnostic software service
JP6368151B2 (ja) * 2014-06-05 2018-08-01 キヤノン株式会社 情報処理装置、アプリケーションの管理方法、およびプログラム

Also Published As

Publication number Publication date
JP2016110461A (ja) 2016-06-20
US9563416B2 (en) 2017-02-07
US20160162274A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
JP6388405B2 (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
US8627343B2 (en) Information processing apparatus and data output managing system
JP5960005B2 (ja) 画像形成装置、アプリケーションのプレインストール方法、およびプログラム
JP6403559B2 (ja) 情報処理装置およびその制御方法、並びにプログラム
KR101603910B1 (ko) 장치, 제어 방법, 및 기억매체
US10558405B2 (en) Information processing apparatus and driver customizing method
JP6147139B2 (ja) 情報処理装置、その制御方法、及びコンピュータプログラム
JP6368151B2 (ja) 情報処理装置、アプリケーションの管理方法、およびプログラム
CN106250068B (zh) 图像形成装置以及应用的删除方法
US11372598B2 (en) Application and information processing apparatus
EP3462363B1 (en) Image forming apparatus and control method therefor
JP5178319B2 (ja) アプリケーションプラットフォーム
US9940334B2 (en) Image forming apparatus and control method thereof
US20110090532A1 (en) Image forming apparatus and program operating method
JP6057740B2 (ja) 画像形成装置、情報処理方法及びプログラム
JP2019087922A (ja) 画像処理装置および画像処理装置の制御方法
JP2017162106A (ja) 情報処理装置及びデバイスドライバのインストール方法
JP2017033380A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180731

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180911

R151 Written notification of patent or utility model registration

Ref document number: 6403559

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151