(57)【特許請求の範囲】
【請求項１】
ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、
前記オペレーティングシステム上で動作し、中間コードを前記オペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンと、
前記仮想マシン上で動作する第１、第２のバンドルと、を有し、
前記第１のバンドルは、
前記オペレーティングシステムが管理するネットワークインタフェースを介して外部からのアクセスを受け付けるアクセス手段と、
前記第２のバンドルに当該第１のバンドルの登録を依頼する登録依頼手段と、
前記第２のバンドルからの通知を受信し、前記アクセス手段を前記ネットワークインタフェースの変化に対応させる通知受信手段と、を有し、
前記第２のバンドルは、
前記第１のバンドルからの登録依頼を受信して当該第１のバンドルをリストに登録する登録手段と、
前記オペレーティングシステムが提供するインタフェースを用いて前記ネットワークインタフェースの状態変化を検知する検知手段と、
前記検知手段が前記ネットワークインタフェースの状態変化を検知したときに、前記リストを参照し、当該リストに登録された前記第１のバンドルに対して通知を送信する通知手段と、を有する
ことを特徴とする情報処理装置。
【請求項２】
ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、前記オペレーティングシステム上で動作し、中間コードを前記オペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンとを備えた情報処理装置の前記仮想マシン上で動作する情報処理プログラムであって、
前記仮想マシン上で動作する別の情報処理プログラムからの登録依頼を受信して当該別の情報処理プログラムをリストに登録する処理と、
前記オペレーティングシステムが提供するインタフェースを用いて前記オペレーティングシステムが管理するネットワークインタフェースの状態変化を検知する処理と、
前記ネットワークインタフェースの状態変化を検知したときに、前記リストを参照し、当該リストに登録された前記別の情報処理プログラムに対して通知を送信する処理と、
を前記情報処理装置に実行させることを特徴とする情報処理プログラム。  
【請求項３】
ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、前記オペレーティングシステム上で動作し、中間コードを前記オペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンとを備えた情報処理装置の前記仮想マシン上で動作する情報処理プログラムであって、
前記オペレーティングシステムが管理するネットワークインタフェースを介して外部からのアクセスを受け付ける処理と、
前記ネットワークインタフェースの状態変化を検知して通知する別の情報処理プログラムに登録を依頼する処理と、
前記別の情報処理プログラムからの通知を受信し、前記アクセスを受け付ける処理を前記ネットワークインタフェースの変化に対応させる処理と、
を前記情報処理装置に実行させることを特徴とする情報処理プログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン上で動作するソフトウェアコンポーネントを管理し、機器の安定性を向上させる技術に関する。
【背景技術】
【０００２】
Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術としてＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅｓ  Ｇａｔｅｗａｙ  ｉｎｉｔｉａｔｉｖｅ）フレームワークが知られている。ＯＳＧｉフレームワークは、ソフトウェアコンポーネントの動的追加、削除、あるいは実行を管理する枠組みである。例えばホームゲートウェイなどの機器にＯＳＧｉフレームワークを実装することで、機能変更や機能追加をネットワークを介して容易に行うことが可能となる。ＯＳＧｉフレームワークを実装した装置として特許文献１に記載のものが知られている。
【０００３】
図４は、ＯＳＧｉフレームワークを実装した機器の実行環境の構成を示すブロック図である。同図に示すように、ＯＳＧｉフレームワークを実装した機器は、ハードウェア資源を扱うためのインタフェースを提供するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、Ｊａｖａ（登録商標）バイトコードをＯＳ上で動作可能なネイティブコードに変換して実行する仮想マシン（Ｊａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＪＶＭ）を備え、ＪＶＭ上にＯＳＧｉフレームワークを構築している。ＯＳＧｉフレームワーク上で動作するソフトウェアコンポーネントをバンドルと呼ぶ。ＯＳＧｉフレームワークを実装した機器は、バンドルをインストールして実行することで様々なサービスを提供することができる。
【０００４】
図５にＯＳＧｉフレームワークを実装したホームゲートウェイの例を示す。同図に示すホームゲートウェイ１００は、ユーザ宅内に配置したカメラ２２０Ａ，２２０Ｂ，２２０Ｃを制御し、テレビ２１０などに画像を転送するカメラ制御バンドル１１０と、エアコン２３０、ＨＤＤレコーダ２４０、および冷蔵庫２５０などの家電を携帯電話３１０などにより外出先から制御する家電制御バンドル１２０をインストールして実行している。カメラ制御バンドル１１０と家電制御バンドル１２０は共にＯＳＧｉフレームワーク上で動作するソフトウェアコンポーネントである。カメラ制御バンドル１１０は、ＬＡＮ側インタフェース１３０のＩＰアドレスをバインドしてテレビ２１０から要求を受け付けて、カメラ２２０Ａ，２２０Ｂ，２２０Ｃを制御する。家電制御バンドル１２０は、ネットワーク３００に接続されたＷＡＮ側インタフェース１４０のＩＰアドレスをバインドして外出先からの要求を受け付けて、ＬＡＮ側インタフェース１３０に接続された各種家電を制御する。
【０００５】
このように、図５に示すカメラ制御バンドル１１０や家電制御バンドル１２０はＩＰアドレスをバインドして要求を受け付けている。このため、ネットワークインタフェースのＩＰアドレスが変更された場合、そのＩＰアドレスをバインドしたバンドルは要求を受け付けることができなくなる。そこで、図４に示すように、各バンドルはＯＳ上で動作可能なネイティブコードで実装したＯＳ依存コードを有して、ネットワークインタフェースのＩＰアドレスの変更などハードウェア資源の状態変化を検知していた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２００８０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ホームゲートウェイなどの機器に搭載されるＣＰＵは、パーソナルコンピュータに搭載されるＣＰＵと比べて低スペックであるため、各バンドルが個別にＯＳに対してダイレクトにアクセスすることにより、ＯＳの負荷が増大して安定性が悪くなるという問題がある。例えば、ホームゲートウェイのネットワークが切断されたことを、ＯＳが各バンドルに対して通知する場合には、通知の対象となるバンドルの数だけ通知する必要がある。バンドル数が多くなると、その分ＯＳとバンドルとの通信（正常時の処理／エラー時の処理等）が増えるためＯＳが不安定になりがちである。
【０００８】
特許文献１では、バンドルは、複数のバンドルより共通的に利用される各種の機能を実現するネイティブコードサービスを用いてＯＳ依存の機能を利用しているが、ネイティブコードサービスはＯＳ上で直接動作するものであり、ネイティブコードサービスを利用するバンドル数が増えるとＯＳの動作が不安定になることが想定される。
【０００９】
本発明は、上記に鑑みてなされたものであり、複数のソフトウェアコンポーネントが動作する機器においてＯＳの負荷を軽減し、機器の安定性を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
第１の本発明に係る情報処理装置は、ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、オペレーティングシステム上で動作し、中間コードをオペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンと、仮想マシン上で動作する第１、第２のバンドルと、を有し、第１のバンドルは、オペレーティングシステムが管理するネットワークインタフェースを介して外部からのアクセスを受け付けるアクセス手段と、第２のバンドルに当該第１のバンドルの登録を依頼する登録依頼手段と、第２のバンドルからの通知を受信し、アクセス手段をネットワークインタフェースの変化に対応させる通知受信手段と、を有し、第２のバンドルは、第１のバンドルからの登録依頼を受信して当該第１のバンドルをリストに登録する登録手段と、オペレーティングシステムが提供するインタフェースを用いてネットワークインタフェースの状態変化を検知する検知手段と、検知手段がネットワークインタフェースの状態変化を検知したときに、リストを参照し、当該リストに登録された第１のバンドルに対して通知を送信する通知手段と、を有することを特徴とする。
【００１１】
第２の本発明に係る情報処理プログラムは、ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、オペレーティングシステム上で動作し、中間コードをオペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンとを備えた情報処理装置の仮想マシン上で動作する情報処理プログラムであって、仮想マシン上で動作する別の情報処理プログラムからの登録依頼を受信して当該別の情報処理プログラムをリストに登録する処理と、オペレーティングシステムが提供するインタフェースを用いてオペレーティングシステムが管理するネットワークインタフェースの状態変化を検知する処理と、ネットワークインタフェースの状態変化を検知したときに、リストを参照し、当該リストに登録された別の情報処理プログラムに対して通知を送信する処理と、を情報処理装置に実行させることを特徴とする。
【００１２】
第３の本発明に係る情報処理プログラムは、ハードウェア資源を扱うためのインタフェースを提供するオペレーティングシステムと、オペレーティングシステム上で動作し、中間コードをオペレーティングシステム上で動作可能なネイティブコードに変換して実行する仮想マシンとを備えた情報処理装置の仮想マシン上で動作する情報処理プログラムであって、オペレーティングシステムが管理するネットワークインタフェースを介して外部からのアクセスを受け付ける処理と、ネットワークインタフェースの状態変化を検知して通知する別の情報処理プログラムに登録を依頼する処理と、別の情報処理プログラムからの通知を受信し、アクセスを受け付ける処理をネットワークインタフェースの変化に対応させる処理と、を情報処理装置に実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のソフトウェアコンポーネントが動作する機器においてＯＳの負荷を軽減し、機器の安定性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態における情報処理装置の実行環境の構成を示すブロック図である。
【図２】上記情報処理装置の管理バンドルがアプリケーションバンドルを登録する処理の流れを示すフローチャートである。
【図３】上記情報処理装置の管理バンドルがアプリケーションバンドルに通知する処理の流れを示すフローチャートである。
【図４】従来のＯＳＧｉフレームワークを実装した機器の実行環境の構成を示すブロック図である。
【図５】ＯＳＧｉフレームワークを実装したホームゲートウェイの動作の例を示す概略図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について図面を用いて説明する。
【００１６】
図１は、本実施の形態におけるＯＳＧｉフレームワークを実装した情報処理装置の実行環境の構成を示すブロック図である。同図に示す情報処理装置１は、ＯＳ１１、ＪＶＭ１２、およびＯＳＧｉフレームワーク１３を備え、ＯＳＧｉフレームワーク１３上では、管理バンドル２と複数のアプリケーションバンドル３Ａ，３Ｂが動作する。情報処理装置１は、演算処理装置、記憶装置、メモリ等を備えたコンピュータにより構成し、図１に示す実行環境を機能させるプログラムは、情報処理装置１が備えた記憶装置に記憶されている。このプログラムを演算処理装置に実行させることにより各部の処理が行われる。管理バンドル２とアプリケーションバンドル３Ａ，３Ｂは、ＯＳＧｉフレームワーク１３上で動作するソフトウェアコンポーネントであり、このソフトウェアコンポーネントは、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【００１７】
ＯＳ１１は、入出力機能、メモリの管理、タスクのスケジューリング、およびネットワークインタフェースなどのハードウェア資源を扱うためのインタフェースを提供する。代表的なものとしてＬｉｎｕｘ（登録商標）、ＶｘＷｏｒｋｓ（登録商標）などがある。
【００１８】
ＪＶＭ１２は、Ｊａｖａ（登録商標）バイトコードをＯＳ１１上で動作可能なネイティブコードに変換して実行する仮想マシンであり、ＯＳ１１によって起動される。Ｊａｖａ（登録商標）バイトコードは、特定のハードウェア環境に依存しない中間コードである。
【００１９】
ＯＳＧｉフレームワーク１３は、ＪＶＭ１２上に構築され、バンドルと呼ばれるソフトウェアコンポーネントを動作させる。図１に示す実施例では、管理バンドル２と複数のアプリケーションバンドル３Ａ，３Ｂが動作している。
【００２０】
管理バンドル２は、アプリケーションバンドル３Ａ，３Ｂからの登録依頼を受け付ける登録部２１、通知を送信すべきアプリケーションバンドル３Ａ，３Ｂのリストを保持する保持部２２、リストに登録されたアプリケーションバンドル３Ａ，３Ｂへ通知する通知部２３、およびＯＳ１１が提供するインタフェースを用いてハードウェア資源の状態変化を検知するＯＳ依存コード２４を備える。本実施例における管理バンドル２は、ハードウェア資源の状態変化としてネットワークインタフェースの状態変化を検知するものであって、ネットワークインタフェースの状態に変化があった場合に、アプリケーションバンドル３Ａ，３Ｂに対して通知する。ネットワークインタフェースの状態変化としては、例えば、ネットワークに接続した、ネットワークから切断された、あるいは、ネットワークインタフェースに割り当てられたＩＰアドレスが変更されたなどがある。アプリケーションバンドル３Ａ，３Ｂに対する通知は、Ｊａｖａ（登録商標）  ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）でコールバックすることにより行う。
【００２１】
アプリケーションバンドル３Ａ，３Ｂは、登録依頼部３１Ａ，３１Ｂおよび通知受信部３２Ａ，３２Ｂを備える。アプリケーションバンドル３Ａ，３Ｂは、ダイレクトにＯＳ１１にアクセスせずに、登録依頼部３１Ａ，３１Ｂによりアプリケーションバンドル３Ａ，３Ｂ自身を管理バンドル２に登録しておき、通知受信部３２Ａ，３２Ｂにより所定のハードウェア資源の状態変化の通知を受け付ける。これにより、アプリケーションバンドル３Ａ，３Ｂは、ハードウェア資源の状態変化を検知するためのＯＳ上で動作可能なネイティブコードを実装する必要がなくなる。
【００２２】
次に、管理バンドル２がアプリケーションバンドル３Ａ，３Ｂをリストに登録する処理について説明する。
【００２３】
図２は、管理バンドル２による登録処理の流れを示すフローチャートである。まず、アプリケーションバンドル３Ａ，３Ｂの登録依頼部３１Ａ，３１Ｂが管理バンドル２に対して登録を依頼すると、管理バンドル２の登録部２１がその依頼を受け付ける（ステップＳ１１）。アプリケーションバンドル３Ａ，３Ｂが登録を依頼するときには、状態の変化を監視するネットワークインタフェースやセッションを指定してもよい。例えば、アプリケーションバンドル３Ａ，３ＢがＷＡＮ側のネットワークインタフェースのあるセッションに割り当てられたＩＰアドレスをバインドして外部からのアクセスを受け付ける場合、そのセッションの通信状態に変更があった場合に通知されるように指定する。
【００２４】
依頼を受信した管理バンドル２は、依頼したアプリケーションバンドル３Ａ，３Ｂを保持部２２が保持するリストに登録する（ステップＳ１２）。リストは、通知するアプリケーションバンドル３Ａ，３Ｂだけでなく、監視対象のセッション等の情報を対応付けて保持してもよい。
【００２５】
次に、管理バンドル２がアプリケーションバンドル３Ａ，３Ｂに通知する処理について説明する。
【００２６】
図３は、管理バンドル２による通知処理の流れを示すフローチャートである。
【００２７】
ＯＳ依存コード２４は、ネットワークインタフェースを監視し、例えば、ＩＰアドレスの変更などのネットワークインタフェースの状態変化を検知する（ステップＳ２１）。
【００２８】
ネットワークインタフェースの状態変化を検知すると、通知部２３は、保持部２２からリストを読み出し、リストに登録されたアプリケーションバンドル３Ａ，３Ｂに通知する（ステップＳ２２）。通知部２３がアプリケーションバンドル３Ａ，３Ｂに通知する内容は、例えば、ネットワークインタフェースの種別（ＬＡＮ側、ＷＡＮ側）、セッション識別子、接続状態（接続された、切断された）、ＩＰアドレスなどがある。
【００２９】
通知を受けたアプリケーションバンドル３Ａ，３Ｂは、新しいＩＰアドレスをバインドするなど、各アプリケーションバンドル３Ａ，３Ｂで必要な処理を行う。
【００３０】
本実施例では、ネットワークインタフェースを監視する管理バンドル２に関して説明したが、これに限るものではなく、例えば、情報処理装置１の設定、あるいは、情報処理装置１に接続された外部機器の状態など、ＪＶＭ１２が提供する機能だけでは検知することができない、ＯＳ１１に依存したハードウェア資源の状態を監視する管理バンドルであってもよい。ＯＳＧｉフレームワーク１３上で動作する管理バンドルは１つに限らず、別々のハードウェア資源の状態を監視する複数の管理バンドルが動作するものでもよい。
【００３１】
以上説明したように、本実施の形態によれば、ＯＳ依存コード２４を有する管理バンドル２が、アプリケーションバンドル３Ａ，３Ｂの登録を受け付けて保持部２２のリストに登録し、ＯＳ１１からネットワークインタフェースの状態変化の通知を受信したときに、リストに登録されたアプリケーションバンドル３Ａ，３Ｂに通知することにより、ＯＳ１１とバンドル間の通信を最小限に抑えることができるので、ＯＳ１１の負荷を軽減し、情報処理装置１の安定性を向上させることができる。
【００３２】
また、アプリケーションバンドル３Ａ，３Ｂは、ＯＳ依存コード２４を実装する必要がなくなるので、異なるＯＳに対する実装が不要となる。一般に、ＯＳに依存する実装はＪａｖａ（登録商標）プログラミングより難易度が高いので、ＯＳ依存コードが不要となることにより、アプリケーションバンドル３Ａ，３Ｂの開発が容易となる。情報処理装置１の製造者が管理バンドル２を提供することで、サードパーティによるアプリケーションバンドル３Ａ，３Ｂの開発が容易となり、様々なサービスを情報処理装置１に導入することが可能となる。
【００３３】
さらに、アプリケーションバンドル３Ａ，３Ｂだけでなく、ＯＳ依存コード２４を有する管理バンドル２もＯＳＧｉフレームワーク１３上で動作させることにより、管理バンドル２をＯＳＧｉフレームワーク１３の枠組みで動的に管理することができる。
【符号の説明】
【００３４】
１…情報処理装置
１１…ＯＳ
１２…ＪＶＭ
１３…ＯＳＧｉフレームワーク
２…管理バンドル
２１…登録部
２２…保持部
２３…通知部
２４…ＯＳ依存コード
３Ａ，３Ｂ…アプリケーションバンドル
３１Ａ，３１Ｂ…登録依頼部
３２Ａ，３２Ｂ…通知受信部
１００…ホームゲートウェイ
１１０…カメラ制御バンドル
１２０…家電制御バンドル
１３０…ＬＡＮ側インタフェース
１４０…ＷＡＮ側インタフェース
２１０…テレビ
２２０Ａ，２２０Ｂ，２２０Ｃ…カメラ
２３０…エアコン
２４０…ＨＤＤレコーダ
２５０…冷蔵庫
３００…ネットワーク
３１０…携帯電話
【図１】
0005421715.tif 000002
【図２】
0005421715.tif 000003
【図３】
0005421715.tif 000004
【図４】
0005421715.tif 000005
【図５】
0005421715.tif 000006