(57)【要約】【課題】複数のソフトウェア・モジュールからなるソフトウェア・システムを起動する際に、起動時間を短くする。また、ソフトウェア・モジュールの起動失敗の影響を受けないソフトウェア・システムの起動方法を実現する。【解決手段】プログラム・モジュールの依存関係である、サービスの登録・検索において、システム起動時にのみ、サービスの検索時に未登録サービスが登録されるまで待つ。また、サービスを提供していないプログラム・モジュールの起動に失敗しても、システム全体としては起動が成功するように構成する。【選択図】図１
2007323331.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラム・モジュールからなるソフトウェア・システムにおいて、
プログラム・モジュールをソフトウェア・システムの起動後にソフトウェア・システムにインストールするインストール手段と、
前記インストール手段によってインストールされたプログラム・モジュールを個々に指定し起動するプログラム・モジュール起動手段と、
前記プログラム・モジュール起動手段によって起動されたプログラム・モジュールを個々に指定し停止するプログラム・モジュール停止手段と、
ソフトウェア・システムの起動時に各プログラム・モジュールを前記プログラム・モジュール起動手段によって並列に起動するシステム起動手段と、
プログラム・モジュールが持つ機能を他のモジュールに使用可能にする機能アクセス手段と、
前記機能アクセス手段を他のプログラム・モジュールに公開するために登録するサービス登録手段と、
前記サービス登録手段によって登録された機能アクセス手段を検索するサービス検索手段と、
前記サービス検索手段によって検索された機能アクセス手段を取得するサービス取得手段と、
を有し、
前記サービス検索手段は、通常時には予め定められている前記機能アクセス手段が前記サービス登録手段によって登録されていない場合は検索に失敗し、ソフトウェア・システムの起動時には前記サービス登録手段によって予め定められている前記機能アクセス手段が登録されるまで待つことを特徴とするソフトウェア・システム。
【請求項２】
プログラム・モジュールの属性をプログラム・モジュールに設定するモジュール属性付与手段と、
前記モジュール属性付与手段により設定されたプログラム・モジュールの属性を参照するモジュール属性参照手段と、
を有し、
前記機能アクセス手段を他のプログラム・モジュールに対して提供することを示す提供サービス属性と、他のプログラム・モジュールが提供する機能アクセス手段を使用することを示す使用サービス属性とが定義されており、
前記システム起動手段は、ソフトウェア・システム起動時に、プログラム・モジュールの起動に予め決められた時間以上の処理時間がかかった場合に、そのプログラム・モジュールが提供サービス属性を持つか否かによってソフトウェア・システムの起動処理を正常終了するか異常終了するかを決定することを特徴とする請求項１に記載のソフトウェア・システム。
【請求項３】
プログラム・モジュールをソフトウェア・システムの起動後にソフトウェア・システムにインストールするインストール工程と、
前記プログラム・モジュールを個々に指定し起動するプログラム・モジュール起動工程と、
前記プログラム・モジュールを個々に指定し停止するプログラム・モジュール停止工程と、
ソフトウェア・システムの起動時に各プログラム・モジュールを前記プログラム・モジュール起動工程によって並列に起動するシステム起動工程と、
プログラム・モジュールが持つ機能を他のモジュールに使用可能にする機能アクセス工程と、
前記機能を他のプログラム・モジュールに公開するために登録するサービス登録工程と、
前記機能を検索するサービス検索工程と、
前記機能を取得するサービス取得工程と、
を有し、
前記サービス検索工程において、通常時には予め定められている前記機能が前記サービス登録工程において登録されていない場合は検索に失敗し、ソフトウェア・システムの起動時には前記サービス登録工程において予め定められている前記機能が登録されるまで待つことを特徴とするソフトウェア登録方法。
【請求項４】
コンピュータに、
プログラム・モジュールをソフトウェア・システムの起動後にソフトウェア・システムにインストールするインストール手順と、
前記プログラム・モジュールを個々に指定し起動するプログラム・モジュール起動手順と、
前記プログラム・モジュールを個々に指定し停止するプログラム・モジュール停止手順と、
ソフトウェア・システムの起動時に各プログラム・モジュールを前記プログラム・モジュール起動手順によって並列に起動するシステム起動手順と、
プログラム・モジュールが持つ機能を他のモジュールに使用可能にする機能アクセス手順と、
前記機能を他のプログラム・モジュールに公開するために登録するサービス登録手順と、
前記機能を検索するサービス検索手順と、
前記機能を取得するサービス取得手順と、
を実行させるソフトウェア登録用のプログラムであって、
前記サービス検索手順において、通常時には予め定められている前記機能が前記サービス登録手順において登録されていない場合は検索に失敗し、ソフトウェア・システムの起動時には前記サービス登録手順において予め定められている前記機能が登録されるまで待機させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラム・モジュールからなるソフトウェア・システム等において、各プログラム・モジュールの起動処理を制御するシステム等に関する。例えば、各プログラム・モジュールがお互いに依存関係を持つとき、安全にかつ迅速にソフトウェア・システムを起動させることが可能なシステム等に関する。
【背景技術】
【０００２】
従来、複数のプログラム・モジュールから構成されるソフトウェア・システムにおいて、システムの起動時にそれらのプログラム・モジュール間をどのような順番で起動していくかを制御するための起動順序制御手段を有するものがある。このような技術は、例えば、特許文献１、特許文献２、特許文献３、非特許文献１等に記載されている。
【０００３】
起動順序の制御は、主に、あるプログラム・モジュールが他のプログラム・モジュールの提供している機能を使用する際に、機能を提供するプログラム・モジュールが先に起動されている必要があるために行われている。つまり、機能を提供するプログラム・モジュールが先に起動されていなければ、機能を利用するプログラム・モジュールの起動が失敗してしまうという依存関係を満足させる必要があるのである。
【０００４】
依存関係の例として、オブジェクト指向システムにおけるサービス提供システムを挙げることができる。例えば、非特許文献１に記載されているＯＳＧｉサービス・プラットフォームでは、次のようにしてサービスを提供している。
【０００５】
サービス提供は以下のような手順で行われる。
ある機能にアクセスするための方法を記述したインタフェース記述を定義する。
サービスを提供する側では、このインタフェース記述に基づくインタフェースを実装したサービス・オブジェクトをシステムに１つだけ存在するサービス・レジストリに登録する。
インタフェース記述によって記述されたサービスはこのサービス・オブジェクトを経由して利用者側に提供される。
サービスを利用する側ではサービス・インタフェース記述をキーにしてサービス・レジストリを検索し、登録されているサービス・オブジェクトを探し出してサービス・レジストリからサービス・オブジェクトを取得する。
【０００６】
このようにしてあるモジュールの持つ機能を他のモジュールが利用できるようにしている。
【０００７】
これらの依存関係を考慮し、起動する順番を決定してシーケンシャルに起動していく方法が一般的である。この方法では、起動順が対象となるプログラム・モジュールより前になっている全てのプログラム・モジュールが起動されていないと、対象モジュールが起動できずに、起動時間が長くなってしまうという問題を有している。
【０００８】
この問題に対処するために、依存関係を考慮し、依存しているものをグルーピング化してグループの中で起動順序を決定し、グループ間では起動処理が並行に行えるようにして起動時間を短くしようとする方法がとられている。
【０００９】
【特許文献１】特開平１０−２９３６９３号公報
【特許文献２】特開２００１−３２５２４０号公報
【特許文献３】特許３２７８８８５号公報
【非特許文献１】「OSGi Service Platform Release 3」、Open Service Gateway Initiative、２００３年３月
【発明の開示】
【発明が解決しようとする課題】
【００１０】
更に起動時間を短くするため、グルーピングを行わず全てのプログラム・モジュールを並列に起動しようとする場合に起動処理が失敗することもある。つまり、サービスを提供するモジュールが他のモジュールに提供するサービスをサービス・レジストリに登録する前にサービスを使用するモジュールがサービス提供を要求すると、サービスが登録されていないため、サービスを利用できなくなってしまうのである。
【００１１】
また、依存関係を持つグループ内において、依存するモジュールの起動が何らかの原因で終了せずに後続するモジュールの起動が行えず、グループの起動終了に時間がかかるという問題もある。
【００１２】
更に、モジュールの初期化に失敗したことにより、グループの初期化及びシステム全体の初期化に失敗するという問題点もある。
【課題を解決するための手段】
【００１３】
本発明は上記課題を解決するために為されたもので、プログラム・モジュールをソフトウェア・システムの起動後にソフトウェア・システムにインストールするインストール工程と、前記プログラム・モジュールを個々に指定し起動するプログラム・モジュール起動工程と、前記プログラム・モジュールを個々に指定し停止するプログラム・モジュール停止工程と、ソフトウェア・システムの起動時に各プログラム・モジュールを前記プログラム・モジュール起動工程によって並列に起動するシステム起動工程と、プログラム・モジュールが持つ機能を他のモジュールに使用可能にする機能アクセス工程と、前記機能を他のプログラム・モジュールに公開するために登録するサービス登録工程と、前記機能を検索するサービス検索工程と、前記機能を取得するサービス取得工程と、を有し、前記サービス検索工程において、通常時には予め定められている（所望の）前記機能が前記サービス登録工程において登録されていない場合は検索に失敗し、ソフトウェア・システムの起動時には前記サービス登録工程において予め定められている（所望の）前記機能が登録されるまで待つことを特徴とするソフトウェア登録方法等、を提供する。
【発明の効果】
【００１４】
本発明によれば、システム起動時に全てのプログラム・モジュールを並列に起動しても、プログラム・モジュールの起動に失敗することがなくなり、迅速にかつ安全に起動するソフトウェア・システムを構築することができる。
【００１５】
また、プログラム・モジュールの起動時の異常による影響で、ソフトウェア・システム全体が起動しないことを防ぐことができ、堅牢でプログラム・モジュールの異常に対する耐性を持ったソフトウェア・システムを構築することができる。
【発明を実施するための最良の形態】
【００１６】
図を用いて本発明の実施例について説明する。
【００１７】
図１は本発明を実施するシステム上で稼動するソフトウェアの構成を示したもので、非特許文献１に記載されているＯＳＧｉサービス・プラットフォームで規定されているものである。
同図において、１０１０はハードウェアやソフトウェアを制御するためのオペレーティングシステムである。また、１０２０はオペレーティングシステム１０１０上で稼動しJava(登録商標)言語から生成された中間言語であるバイト・コードを解釈実行するためのJava(登録商標)仮想マシンである。なお、「Java(登録商標)」はSun Microsystems, Inc.社の登録商標である。また、１０３０はJava(登録商標)言語で記述され各種アプリケーション・プログラムを一つのJava(登録商標)仮想マシン１０２０の上で実行可能にするためのフレームワークである。また、１０４０はフレームワーク１０３０上で動作するアプリケーションのフレームワーク上の管理単位であるバンドルである。バンドル１０４０はアプリケーションを構成するJava(登録商標)言語によって記述されたプログラムやそのプログラムが使用する画像データや各種ファイルデータなどを内包している。フレームワーク１０３０はバンドル１０４０を各々独立してフレームワークに対してインストール／アンインストールする機能、インストールされているバンドルを新しいものに更新する機能、インストールされているバンドルを起動／停止する機能を有する。
【００１８】
図２は、フレームワーク１０３０を構成する主なJava(登録商標)言語のクラスの構成を記述した図である。
同図において、２０１０はフレームワーク１０３０の主な機能を実現しているフレームワーク実装クラスである。また、２０１５はフレームワーク実装クラスが実装している機能をフレームワーク以外からアクセスするためのインタフェースを定義しているBunleContextインタフェースである。
【００１９】
また、２０２０は他のバンドル１０４０からバンドル１０４０に対してアクセスするためのインタフェースを規定しているBundleインタフェースである。また、２０２５はフレームワーク１０３０上でバンドル１０４０を管理するために生成されるバンドル制御実装クラスである。
【００２０】
また、２０３０はバンドル１０４０を起動／停止する際にフレームワーク１０３０が呼び出すメソッドを規定したインタフェースであるBundleActivatorインタフェースである。
【００２１】
また、２０３５はバンドル１０４０内でBundleActivatorインタフェース２０３０を実装しているバンドル実装である。また、２０４０はバンドル１０４０が他のバンドル１０４０に対して提供しているサービスをフレームワーク１０３０上で管理するためのサービス制御実装である。
【００２２】
また、２０４５はバンドル１０４０内でバンドル１０４０が提供するサービスを実際に実装しているサービス実装である。また、２０５０はサービス登録データにアクセスするためのインタフェースであるServiceRegistrationインタフェースである。
【００２３】
また、２０５５はサービスを使用する際にサービスのデータにアクセスするためのインタフェースであるServiceReferenceインタフェースである。
【００２４】
図３はバンドル１０４０をインストールする際に用いられるＪａｒファイルの構造と、バンドルを構成するファイル（バンドル・ファイルと呼ぶ）の際にマニフェスト・ヘッダに設定されるバンドルの属性を示したものである。ここで、Ｊａｒファイルはアーカイブファイルであり、マニフェスト・ヘッダはＪａｒファイルのヘッダである。ただし、これらのバンドル属性は必ずしも指定する必要はなく、順番も規定されているものではない。
同図において、３０１０はバンドル１０４０の名前を記述しているバンドル名であり、３０２０はバンドル１０４０が参照する他のバンドル１０４０が提供するJava(登録商標)パッケージのパッケージ名のリストである静的参照パッケージである。
【００２５】
また、３０３０はバンドル１０４０が他のバンドルに対して提供しているJava(登録商標)パッケージ名のリストである提供パッケージである。
【００２６】
また、３０４０は静的参照パッケージ３０２０同様バンドル１０４０が参照するJava(登録商標)パッケージ名のリストである。但し、静的参照パッケージ３０２０がバンドル１０４０の起動時に参照関係の解決が必要なのに対し、３０４０は実際に必要となるときに参照関係が解決できれば良い動的参照パッケージである。
【００２７】
また、３０５０は他のバンドル１０４０が提供しているサービスのうちどのサービスを使用するかを宣言する参照サービスである。また、３０６０は他のバンドル１０４０に提供可能なサービスを宣言する提供サービスであり、３０７０はBundleActivatorインタフェース２０３０を実装しているクラスの名前を宣言するBundleActivator実装クラス名である。
【００２８】
以下、システムの停止時に参照されるデータが生成されるインストール処理、バンドルの起動／停止処理、システムの再起動処理について説明する。
【００２９】
「インストール処理」
先ず、バンドル１０４０がフレームワーク１０３０にインストールされる際の処理について図４を参照しながら説明する。
【００３０】
システムのオペレータがバンドル・ファイルの格納されている場所をＵＲＬ（Uniform Resource Locators）を使用して指定する。そして、指定された場所に格納されているバンドル・ファイルをフレームワーク１０３０にインストールすることをフレームワーク実装２０１０に指示する。
【００３１】
フレームワーク実装２０１０は指定された格納場所からバンドル・ファイルを読み込み、読み込んだバンドル・ファイルのデータをフレームワーク内で参照しやすいように設けられたキャッシュに格納する。
【００３２】
読み込まれたバンドル・ファイルのマニフェスト（Ｊａｒファイルの属性などを定義するヘッダ）から提供パッケージ・ヘッダ３０３０と静的参照パッケージ・ヘッダ３０２０を読み出す。各バンドル１０４０が提供しているJava(登録商標)パッケージは、提供しているバンドル１０４０のバンドルＩＤとともにフレームワーク実装２０１０の持つ提供パッケージ・レジストリに格納されている。
【００３３】
静的参照パッケージ・ヘッダ３０２０に記述されている参照パッケージがこの提供パッケージ・レジストリにすでに登録されているか、又は自身の提供パッケージ・ヘッダ３０３０に記述されている場合は処理を続行する。
【００３４】
そうでない場合は、インストール処理が失敗したことを示す例外を発生させ処理を停止する。
【００３５】
バンドル制御実装２０２５のオブジェクトを生成し、バンドル・ファイルのマニフェストの情報によって初期化を行う。
【００３６】
マニフェストの内容はバンドル制御実装２０２５によって管理され、各マニフェスト・ヘッダのエントリを表す文字列をキーにして参照可能となっている。
【００３７】
また、バンドルにはバンドルを一意に特定するためのバンドルＩＤが付与される。
【００３８】
図８に示される構造をもったバンドル・リストがフレームワーク実装によって生成されている。
【００３９】
新たにインストールされたバンドルに関するエントリをバンドルＩＤ、キャッシュ内の格納位置等の情報によって作成し、バンドル・リストの最後に追加する。このバンドル・リストは、ハードディスク等の不揮発なメモリに格納される。
【００４０】
バンドル制御実装２０２５にインストールされたことを示すＩＮＳＴＡＬＬＥＤ状態を設定する。
この状態をバンドル・リストからバンドルＩＤをキーにして対象となるバンドルに対するバンドル・リスト・エントリを検索し、そのエントリに登録されている状態をＩＮＳＴＡＬＬＥＤに変更する。
【００４１】
このようにしてバンドル１０４０がフレームワーク１０３０にインストールされる。
【００４２】
「バンドルの起動／停止処理」
次に、バンドル１０４０が起動／停止されるときの処理について図５を参照しながら説明する。
【００４３】
オペレータからバンドルＩＤを指定して指定されたバンドルＩＤに対応するバンドルを起動するよう指示されたフレームワーク実装２０１０は、バンドルＩＤからそのバンドルＩＤに対応するバンドル制御実装２０２５を検出する。
【００４４】
バンドル制御実装２０２５に対してBundleActivator実装クラス名ヘッダ３０７０を表す文字列をキーとして指定し、BundleActivator実装クラス名３０７０のデータを取得する。
【００４５】
BundleActivator実装クラス名３０７０が定義されている場合は、このBundleActivator実装クラス名３０７０が示すクラスをロードし、オブジェクト生成を行う。
【００４６】
生成されたBundleActivatorオブジェクトはバンドル制御実装２０２５に記憶される。
【００４７】
生成されたBundleActivatorオブジェクトに対してstartメソッドを呼び出し、バンドル１０４０毎に定義されたバンドルの初期化ルーチンを実行する。
【００４８】
この初期化ルーチンの中で、バンドル１０４０が提供するサービスをフレームワーク実装２０１０に登録して登録されたサービスを表すServiceRegistrationオブジェクトを取得する。また、フレームワーク実装２０１０に登録されているサービスからバンドル１０４０が使用するサービスを検索し、検索したサービスを表すServiceReferenceオブジェクトを取得しサービス・オブジェクトを取得することもある。
【００４９】
ここで、通常のバンドル起動時等に行われるサービス・オブジェクト取得処理について、図８に示すアクティビティ図を参照しながら説明する。通常の起動処理においては、サービスを検索した結果、ServiceReferenceオブジェクトが取得できないとき、即ちサービスが見つからないときには、その後の起動処理を行うことができないため、例外を発生し起動処理が失敗したことを通知する。
【００５０】
起動が成功すると、バンドル１０４０が起動されていることを示す状態であるACTIVE状態にバンドル制御実装が設定される。
【００５１】
また、このACTIVE状態はバンドル・リストの対応するエントリの状態フィールドにも設定されて永続的に記憶される。
【００５２】
更に、フレームワーク実装２０１０は、図７に示すバンドル起動順リストを保持しており、このリストもバンドル・リスト同様永続的に記憶される。このバンドル起動順リストの最後に起動したバンドルのバンドルＩＤを追加する。
【００５３】
次に、停止処理について説明する。オペレータからバンドルＩＤを指定して指定されたバンドルＩＤに対応するバンドルを停止するよう指示されたフレームワーク実装２０１０は、バンドルＩＤからそのバンドルＩＤに対応するバンドル制御実装２０２５を検出する。
【００５４】
バンドル制御実装２０２５が記憶しているBundleActivatorオブジェクトを取得する。取得したBundleActivatorオブジェクトに対してｓｔｏｐメソッドを呼び出し、バンドル１０４０ごとに定義されたバンドルの停止ルーチンを実行する。この停止ルーチンの中で、例えば、バンドル１０４０が登録したサービスの登録解除を行ったり、使用していたサービスの開放を行ったりする。
【００５５】
停止が成功すると、バンドル１０４０が停止していることを示す状態であるRESOLVED状態にバンドル制御実装が設定される。
【００５６】
また、このRESOLVED状態はバンドル・リストの対応するエントリの状態フィールドにも設定されて永続的に記憶される。
【００５７】
さらに、バンドル起動順リストから停止したバンドルのバンドルＩＤが記述されているエントリを削除する。
【００５８】
このような処理を実行することによって、バンドル起動順リストは起動されているバンドルがどのような順番で起動されたのかを保持することができる。
【００５９】
「システム再起動処理」
次に、図６を参照しながらシステムが再起動するときの処理について説明する。
【００６０】
このシステムはシステムの停止処理が開始するまで稼動していたバンドル１０４０をシステムの再起動時に自動的に起動するようになっている。以下、その方法について説明する。
【００６１】
先ず、システムが起動されるとフレームワーク実装２０１０が生成される。
【００６２】
フレームワーク実装２０１０が起動されると、永続的に記憶されていたバンドル・リストを読み出す。
【００６３】
バンドル・リストに記憶されていたバンドルの情報からバンドル制御実装２０２５を生成し、生成されたバンドル制御実装２０２５を初期化する。
【００６４】
また、バンドル・リストに記憶されていた状態にバンドルの状態を設定する。
【００６５】
更に、永続的に記憶されていたバンドル起動順リストを読み出し、リストに登録されているバンドルＩＤを取得し、取得したバンドルＩＤのバンドル制御実装２０２５のオブジェクトを検索してバンドル１０４０の起動処理を行う。
【００６６】
各バンドル１０４０の起動処理は別々のスレッド内で行われ並行に処理される。各バンドルの起動処理は、サービスの登録／取得の処理が異なるだけで、その他は通常の起動処理と同じである。
【００６７】
ここで、システム起動時におけるサービスの登録／取得の関係について、図９に示すアクティビティ図を参照しながら説明する。同図において、バンドルＡはサービスを登録するバンドルであり、バンドルＢはサービスを使用するバンドルである。
【００６８】
バンドルＢにおいて、サービスを検索しServiceReferenceオブジェクトを得られなければ、wait()メソッドによってサービスが登録されるのを待つ。
【００６９】
一方、サービスを登録するバンドルＡでは、サービスを登録した後に、notifyAll()メソッドにより、サービスの登録を待っているスレッドに対して通知を行う。
【００７０】
サービス登録を待っている（wait()メソッドを呼び出している）状態でいるバンドルは、notifyAll()メソッドによって起こされ、処理を続行する。
【００７１】
バンドルＢでは再度、所望のサービスが登録されているかを調べる。
【００７２】
登録されていない場合は、再度wait()メソッドにより待ち、登録されている場合はサービス・オブジェクトを取得して起動処理を続行する。
【００７３】
図９においては、説明のため、サービスを検索して見つからなかった処理をバンドルの起動処理の内部で行っているが、実際にはサービス検索を行うメソッド内でシステム起動時の処理であるか、通常時の処理であるかを検出して処理を切り分ける。そして、システム起動時にはサービスの登録を待つ処理を行うように構成することによって、バンドルの起動処理では、システム起動時なのか通常時なのかは意識せずにサービスを検索することができる。
【００７４】
このシステム起動時に起動されるバンドルは、以前システムが起動処理を終了した後に起動されていたバンドルである。正常に起動されていたということは、起動されるバンドルに必要なサービスを提供するバンドルが既に必要なサービスを登録していたため、バンドルの起動に成功したことになる。
【００７５】
言い換えれば、システム起動されて全てのバンドルが起動されれば、必要なサービスが登録されていないという状態は無いことが保証されていることになる。
【００７６】
システムの起動時か否かの判断は、システム起動処理の先頭で設定され、システム起動処理の最後で設定解除されるフラグを用いて行う。このフラグが設定されているときはシステムの起動処理時であると判断する。
【００７７】
サービスを提供するバンドルの不具合により、システム起動時に所望のサービスが検索できないことや、その他の原因によってバンドルの起動が終了しない場合がある。
【００７８】
通常は全てのバンドルの起動終了を待ってシステムの起動終了処理を行うが、予め設定されたタイムアウト時間を経過しても起動処理を終了できないバンドルが存在する場合、バンドルの持つ属性によってその後の処理を変更する。
【００７９】
起動できなかったバンドルのマニフェスト・ヘッダに提供サービス３０６０が設定されていない場合は、このバンドルが起動されなくてもシステム全体に及ぼす影響は軽微である。このため、バンドルが起動できなかったことを示すログを生成してシステムの起動処理を正常終了する。
【００８０】
提供サービス３０６０が設定されている場合、このバンドルが起動できないことにより、他のバンドルに多大な影響を与えることになるため、システムの起動処理を以上終了させ、システム全体を停止する。
【００８１】
このようにして、迅速に安全にシステムを起動することを実現する。
【００８２】
なお、本発明の実施形態は、例えばコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。
【図面の簡単な説明】
【００８３】
【図１】実施例におけるソフトウェア構成を示す図である。
【図２】実施例におけるフレームワークのクラス構成を示す図である。
【図３】Jarファイル及びマニフェストの構造を示す図である。
【図４】バンドル・インストール処理を示すフローチャートである。
【図５】バンドル起動／停止処理を示すフローチャートである。
【図６】システム再起動処理を示すフローチャートである。
【図７】バンドル・リストとバンドル停止順リストの構造を示す図である。
【図８】通常時のサービス取得処理を示すアクティビティ図である。
【図９】システム起動時のサービス取得処理を示すアクティビティ図である。
【符号の説明】
【００８４】
１０１０：オペレーティングシステム
１０２０：Java(登録商標)仮想マシン
１０３０：フレームワーク
１０４０：バンドル
２０１０：フレームワーク実装
２０１５：BundleContext
２０２０：Bundle
２０２５：バンドル制御実装
２０３０：BundleActivator
２０３５：バンドル実装
２０４０：サービス制御実装
２０４５：サービス実装
２０５０：ServiceRegistration
２０５５：ServiceReference
３０１０：バンドル名
３０２０：静的参照パッケージ
３０３０：提供パッケージ
３０４０：動的参照パッケージ
３０５０：参照サービス
３０６０：提供サービス
３０７０：BundleActivator実装クラス名
【図１】
2007323331.tif 000003
【図２】
2007323331.tif 000004
【図３】
2007323331.tif 000005
【図４】
2007323331.tif 000006
【図５】
2007323331.tif 000007
【図６】
2007323331.tif 000008
【図７】
2007323331.tif 000009
【図８】
2007323331.tif 000010
【図９】
2007323331.tif 000011