(57)【要約】【課題】仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能な仮想マシンの実行方法、コンピュータプログラム及び情報処理装置を提供する。【解決手段】時刻を計時するシステム時計を有するオペレーティングシステム１１上で動作するＷｅｂサーバ１４又は時刻同期アプリ１５の夫々が、ホームゲートウェイ５に接続されたＰＣのＷｅｂブラウザからの時刻の設定要求を受信するか、又はインターネットに接続されたＮＴＰサーバに時刻同期することによって、システム時計１１１の時刻を設定した場合、システム時計１１１の時刻を基準とする時間に応じた処理（例えばＴｈｒｅａｄａ．ｓｌｅｅｐ）の実行を要求するスレッドが属するＪａｖａアプリ１２をオペレーティングシステム１１上で実行するＪａｖａＶＭ１３を再起動させる。【選択図】図２
2015075836.tif 000002
【特許請求の範囲】
【請求項１】
時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置における前記仮想マシンの実行方法において、
前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行し、
前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させること
を特徴とする仮想マシンの実行方法。
【請求項２】
前記仮想マシンは、ＪａｖａＶＭであることを特徴とする請求項１に記載の仮想マシンの実行方法。
【請求項３】
前記処理は、Ｔｈｒｅａｄ．ｓｌｅｅｐであることを特徴とする請求項２に記載の仮想マシンの実行方法。
【請求項４】
前記情報処理装置をインターネットに接続するためのインタフェースを用意し、
前記時刻設定アプリケーションは、前記時刻を前記インターネットに接続されたＮＴＰサーバに同期させて設定することを特徴とする請求項１から３の何れか１項に記載の仮想マシンの実行方法。
【請求項５】
前記情報処理装置をネットワークに接続するためのインタフェースを用意し、
前記時刻設定アプリケーションは、前記インタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションであり、
該ウェブアプリケーションは、前記ウェブブラウザからの時刻の設定要求を受け付けて前記時刻を設定すること
を特徴とする請求項１から３の何れか１項に記載の仮想マシンの実行方法。
【請求項６】
前記仮想マシンが再起動した場合、前記ウェブアプリケーションは、前記ウェブブラウザに所定の情報を送信することを特徴とする請求項５に記載の仮想マシンの実行方法。
【請求項７】
前記情報処理装置に光源を接続するためのインタフェースを用意し、
前記光源の点灯を制御する光源制御アプリケーションを前記オペレーティングシステム上で実行し、
前記仮想マシンが再起動した場合、前記光源制御アプリケーションは、前記光源を点灯又は点滅させること
を特徴とする請求項１から６の何れか１項に記載の仮想マシンの実行方法。
【請求項８】
時刻を計時するシステム時計を有するオペレーティングシステムを備えるコンピュータに、前記システム時計の時刻を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションを前記オペレーティングシステム上の仮想マシン上で実行させるコンピュータプログラムにおいて、
コンピュータに、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行させるステップと、
前記時刻設定アプリケーションが前記時刻を設定した場合、コンピュータに、前記仮想マシンを再起動させるステップと
を実行させることを特徴とするコンピュータプログラム。
【請求項９】
時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置において、
前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行する手段と、
前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させる手段とを備えること
を特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステム上の仮想マシンでアプリケーションを実行する情報処理装置における仮想マシンの実行方法、コンピュータプログラム及び情報処理装置に関する。
【背景技術】
【０００２】
近年、画像、音声、動画像等のマルチメディアデータを利用した拡張性の高いサービスを実現する手法として、サン・マイクロシステムズ社が提唱したオブジェクト指向型言語であるＪａｖａ（登録商標）環境が普及している。
【０００３】
Ｊａｖａ環境では、Ｊａｖａ言語で記述されたソースコードに基づく中間コードで構成されたＪａｖａアプリからの要求に応じて、例えばインターネットなどの通信媒体を介して画像データがダウンロードされ、ダウンロードされた画像がＪａｖａアプリで用いられる。
【０００４】
Ｊａｖａアプリは、１又は複数のプロセスとして並列的に実行されるようになっており、各プロセスで生成されて実行可能となったスレッドは、ＪａｖａＶＭによってＣＰＵ資源が割り当てられて実行される。例えば、特定のスレッドに所定時間だけ待機する処理要求が含まれていた場合、所定時間が経過すれば、その特定のスレッドが実行可能となる（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０１５２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の特定のスレッドの待機中に、ＪａｖａＶＭが参照する時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より前の時刻になった場合、待機の終了時刻の到来が遅れるために、そのスレッドが実行可能となるのを待ち受けている他のスレッドも待ち受け状態が継続されて、Ｊａｖａアプリ全体が実質的に停止状態に陥ることがあった。
【０００７】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能な仮想マシンの実行方法、コンピュータプログラム及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係る仮想マシンの実行方法は、時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置における前記仮想マシンの実行方法において、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行し、前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させることを特徴とする。
【０００９】
本発明に係る仮想マシンの実行方法は、前記仮想マシンは、ＪａｖａＶＭであることを特徴とする。
【００１０】
本発明に係る仮想マシンの実行方法は、前記処理は、Ｔｈｒｅａｄ．ｓｌｅｅｐであることを特徴とする。
【００１１】
本発明に係る仮想マシンの実行方法は、前記情報処理装置をインターネットに接続するためのインタフェースを用意し、前記時刻設定アプリケーションは、前記時刻を前記インターネットに接続されたＮＴＰサーバに同期させて設定することを特徴とする。
【００１２】
本発明に係る仮想マシンの実行方法は、前記情報処理装置をネットワークに接続するためのインタフェースを用意し、前記時刻設定アプリケーションは、前記インタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションであり、該ウェブアプリケーションは、前記ウェブブラウザからの時刻の設定要求を受け付けて前記時刻を設定することを特徴とする。
【００１３】
本発明に係る仮想マシンの実行方法は、前記仮想マシンが再起動した場合、前記ウェブアプリケーションは、前記ウェブブラウザに所定の情報を送信することを特徴とする。
【００１４】
本発明に係る仮想マシンの実行方法は、前記情報処理装置に光源を接続するためのインタフェースを用意し、前記光源の点灯を制御する光源制御アプリケーションを前記オペレーティングシステム上で実行し、前記仮想マシンが再起動した場合、前記光源制御アプリケーションは、前記光源を点灯又は点滅させることを特徴とする。
【００１５】
本発明に係るコンピュータプログラムは、時刻を計時するシステム時計を有するオペレーティングシステムを備えるコンピュータに、前記システム時計の時刻を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションを前記オペレーティングシステム上の仮想マシン上で実行させるコンピュータプログラムにおいて、コンピュータに、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行させるステップと、前記時刻設定アプリケーションが前記時刻を設定した場合、コンピュータに、前記仮想マシンを再起動させるステップとを実行させることを特徴とする。
【００１６】
本発明に係る情報処理装置は、時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置において、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行する手段と、前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させる手段とを備えることを特徴とする。
【００１７】
本発明にあっては、時刻を計時するシステム時計を有するオペレーティングシステム上で動作する時刻設定アプリケーションが、システム時計の時刻を設定した場合、システム時計の時刻（即ち、システム時計が計時する時刻）を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションをオペレーティングシステム上で実行する仮想マシンを再起動させる。
つまり、仮想マシンがオペレーティングシステムを介してシステム時計の時刻を参照しており、仮想マシンがスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、仮想マシンが再起動してアプリケーションの実行が初期化される。
【００１８】
本発明にあっては、アプリケーションを実行する仮想マシンがＪａｖａＶＭであり、システム時計の時刻が変更された場合であっても、ＪａｖａＶＭが実行するＪａｖａアプリが実行停止状態となることが防止される。
【００１９】
本発明にあっては、システム時計の時刻を基準とする時間に応じた処理がＴｈｒｅａｄ．ｓｌｅｅｐ関数であり、システム時計の時刻が設定されて変更された場合であっても、関数から要求された時間以上にスレッドの停止が長くなることが防止される。
【００２０】
本発明にあっては、時刻設定アプリケーションにより、システム時計の時刻をインターネットに接続されたＮＴＰサーバに同期させる。
これにより、システム時計の時刻がＮＴＰサーバに同期したときに、ＪａｖａＶＭが再起動する。
【００２１】
本発明にあっては、ネットワークに接続するためのインタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションがウェブブラウザからの時刻の設定要求を受け付けて、システム時計の時刻を設定する。
これにより、システム時計の時刻が、ウェブブラウザからの要求によって設定されたときに、ＪａｖａＶＭが再起動する。
【００２２】
本発明にあっては、仮想マシンが再起動した場合、前記ウェブアプリケーションが、自身にアクセスするウェブブラウザに所定の情報を送信する。
これにより、ウェブブラウザを操作する使用者に対して、仮想マシンが再起動した旨が報知される。
【００２３】
本発明にあっては、仮想マシンが再起動した場合、オペレーティングシステム上で動作する光源制御アプリケーションによって、所定のインタフェースに接続された光源を点灯又は点滅させる。
これにより、光源の周囲に居る使用者に対して、仮想マシンが再起動した旨が報知される。
【発明の効果】
【００２４】
本発明によれば、仮想マシンがオペレーティングシステムを介してシステム時計の時刻を参照しており、仮想マシンがスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、仮想マシンが再起動してアプリケーションの実行が初期化される。
従って、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能となる。
【図面の簡単な説明】
【００２５】
【図１】本発明に係る情報処理装置を備えるホームエネルギーマネジメントシステムの構成を示すブロック図である。
【図２】情報処理装置の構成を示すブロック図である。
【図３】Ｊａｖａアプリに属するスレッドのソースコードの例示図である。
【図４】Ｗｅｂサーバによってシステム時計の時刻を設定するＣＰＵの処理手順を示すフローチャートである。
【図５】時刻同期アプリによってシステム時計の時刻を設定するＣＰＵの処理手順を示すフローチャートである。
【図６】アプリケーション管理部によってＪａｖａＶＭを再起動させるＣＰＵの処理手順を示すフローチャートである。
【図７】ＬＥＤ制御アプリによってＬＥＤを点滅させるＣＰＵの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
図１は、本発明に係る情報処理装置を備えるホームエネルギーマネジメントシステム（Home Energy Management System ；以下、ＨＥＭＳという）の構成を示すブロック図である。図中１は情報処理装置であり、情報処理装置１は、ＮＴＰ（Network Time Protocol ）サーバ３が接続されたインターネット４に、ブロードバンドルータの機能を有するホームゲートウェイ５を介して接続される。ホームゲートウェイ５には、パーソナルコンピュータ（以下、ＰＣという）２が接続されている。ＰＣ２は、例えばインターネット４に接続されるものであってもよいし、無線通信回線（不図示）を介して接続されるスマートフォン等の携帯電話であってもよい。
【００２７】
情報処理装置１には、後述するＵＳＢインタフェース２２，２２によってＵＳＢ無線トランスミッタ／レシーバ（以下、ＵＳＢＴ／Ｒと称し、図ではＴ／Ｒで示す）６，６が接続されている。ＵＳＢＴ／Ｒ６，６の夫々と、分電盤７及び窓８に配されたセンサ９，９とは、無線による通信が可能に構成されている。分電盤７に配されたセンサ９は、家庭の使用電力を検出したり、電力回路を開閉したりするものである。また、窓８に配されたセンサ９は、窓８の周囲の明るさを検出したり、室内への人の侵入を検出したりするものである。
【００２８】
上述したＨＥＭＳの構成において、情報処理装置１は、ＵＳＢＴ／Ｒ６，６によってセンサ９，９の夫々から電力データ及び照度データを収集して使用電力量の集計を行うと共に、図示しない室内照明の輝度を照度データに応じて制御する。情報処理装置１は、また、ホームサーバの機能を備えており、例えば、ＰＣ２に搭載されたブラウザからアクセスされた場合、アクセス元のブラウザに家庭の使用電力量のグラフを表示させたり、ブラウザからの制御によって室内の電気製品の電源をオンオフさせたりすることができる。更に、窓８から人が侵入した場合、図示しない携帯電話に発報することもできる。
【００２９】
次に、情報処理装置１の主要部の構成及び機能について説明する。
図２は、情報処理装置１の構成を示すブロック図である。情報処理装置１は、ソフトウェア（以下、Ｓ／Ｗという）による機能ブロックを実現するＣＰＵ１０と、該ＣＰＵ１０の周辺ハードウェア（以下、Ｈ／Ｗという）２０とを備える。
【００３０】
Ｓ／Ｗによる機能ブロックは、Ｌｉｎｕｘ（登録商標）等のオペレーティングシステム（Operating System ；以下、ＯＳという）１１と、Ｊａｖａアプリ１２を実行する仮想マシンとしてのＪａｖａＶＭ（Java Virtual Machine ）１３と、サーバＳ／Ｗであるウェブサーバ（以下、Ｗｅｂサーバという）１４と、ＮＴＰサーバ３に時刻同期するための時刻同期アプリケーション（以下、時刻同期アプリという）１５と、後述するＬＥＤ２３の点消灯を制御するＬＥＤ制御アプリケーション（光源制御アプリケーション；以下、ＬＥＤ制御アプリという）１６とを含んで構成されている。
【００３１】
ＯＳ１１は、Ｌｉｎｕｘに限定されず、Ｗｉｎｄｏｗｓ（登録商標）等の他のＯＳであってもよい。仮想マシンはＪａｖａＶＭ１３に限定されず、例えばマイクロソフト社によるドットネットフレームワーク（.Net Framework ）等の他の仮想マシンであってもよい。
【００３２】
ＪａｖａＶＭ１３及びＬＥＤ制御アプリ１６は、ＣＰＵ１０が実行するＯＳ１１上で動作する。Ｗｅｂサーバ１４及び時刻同期アプリ１５は、後述するシステム時計１１１の時刻を設定する時刻設定アプリケーションとして、ＣＰＵ１０が実行するＯＳ１１上で動作する。
【００３３】
周辺Ｈ／Ｗ２０は、ホームゲートウェイ５に接続するためのイーサネットインタフェース（インターネット又はネットワークに接続するためのインタフェース；以下、イーサネットＩ／Ｆという；イーサネットは登録商標）２１と、ＵＳＢＴ／Ｒ６，６に接続するためのＵＳＢインタフェース（以下、ＵＳＢＩ／Ｆという）２２，２２と、使用者に所定の報知を行うためのＬＥＤ（光源を接続するためのインタフェースを含む光源）２３とを含んで構成されている。ＬＥＤ２３は、周辺Ｈ／Ｗから信号ケーブルを介して外部に接続されていてもよい。イーサネットＩ／Ｆ２１、ＵＳＢＩ／Ｆ２２，２２及びＬＥＤ２３は、ＯＳ１１に組み込まれた夫々のデバイスドライバを介してＯＳ１１から操作される。
【００３４】
ＯＳ１１は、周辺Ｈ／Ｗ２０に含まれる図示しないリアルタイムクロックから起動時に取得した時刻情報に基づいて時刻を計時するシステム時計１１１と、ＯＳ１１上で動作する各アプリケーションの起動、停止、再起動等を管理するアプリケーション管理部１１２とを含んでなる。各アプリケーションによるシステム時計１１１からの時刻の読み出しは、ＯＳ１１に対するシステムコールによって行う。即ち、ＯＳ１１は、時刻情報を取得するシステムコールがあった場合、システム時計１１１が計時する時刻を読み出してシステムコールのリターン値に設定する。
【００３５】
Ｊａｖａアプリ１２は、上述したＨＥＭＳのホームサーバの機能を実現するものであり、ＵＳＢＴ／Ｒ６，６及びＵＳＢＩ／Ｆ２２，２２を介してセンサ９，９と通信すると共に、ホームゲートウェイ５を介してＰＣ２と通信する。Ｊａｖａアプリ１２は、Ｊａｖａ言語で記述されたソースコードに基づく中間コードで構成されたアプリケーションである。
【００３６】
図３は、Ｊａｖａアプリ１２に属するスレッドのソースコードの例示図である。Ｊａｖａ言語で記述されたソースコードは、予めコンパイルされ、中間コードに変換されて実機に実装される。図中Ｔｈｒｅａｄ．ｓｌｅｅｐ（５０００）は、スリープ関数である。スリープ関数は、「システム時計１１１の時刻を基準とする時間に応じた処理の実行をＪａｖａＶＭ１３に要求する」関数の１つである。Ｔｈｒｅａｄ．ｓｌｅｅｐ（５０００）は、この関数をコールしたスレッドを５０００ｍｓ間停止（以下、スリープという）させることを要求するものである。
【００３７】
「システム時計１１１の時刻を基準とする時間に応じた処理の実行をＪａｖａＶＭ１３に要求する」関数は、Ｔｈｒｅａｄ．ｓｌｅｅｐ（）に限定されるものではなく、例えばＴｈｒｅａｄ．ｊｏｉｎ（）、Ｏｂｊｅｃｔ．ｗａｉｔ（）等のタイムアウトのパラメータを伴う他の関数であってもよい。
【００３８】
図２に戻って、ＪａｖａＶＭ１３は、Ｊａｖａアプリ１２を構成する中間コードを逐次解釈し、ＣＰＵ１０が実行可能な機械語に変換して実行する。ＪａｖａＶＭ１３のこの機能によって、特定のＯＳやプロセッサに依存することなく、いかなるプラットフォームであってもＪａｖａアプリ１２が実行可能な環境が実現される。
【００３９】
ＪａｖａＶＭ１３は、Ｊａｖａアプリ１２からシステム時計１１１の時刻を基準とする時間に応じた処理の実行を要求された場合に、要求された処理の実行に係る時刻を記憶するための時刻情報記憶部１３１を含んでなる。例えばＴｈｒｅａｄ．ｓｌｅｅｐ（ｔ）がコールされた場合、ＪａｖａＶＭ１３は、システム時計１１１から時刻を読み出し、読み出した時刻に時間ｔ（ｍｓ）を加算した時刻を時刻情報記憶部１３１に記憶し、記憶した時刻が到来した時に、Ｔｈｒｅａｄ．ｓｌｅｅｐ（ｔ）をコールしたスレッドの実行を再開する。
【００４０】
Ｗｅｂサーバ１４は、時刻設定等のＷｅｂユーザインタフェース画面を提供するプログラムが組み込まれたＷｅｂアプリケーションであり、ＰＣ２とホームゲートウェイ５及びイーサネットＩ／Ｆ２１を介して通信する。時刻設定のプログラムは、ＰＣ２に搭載されたブラウザからのＷｅｂサーバ１４へのアクセスに伴って起動され、Ｗｅｂサーバ１４と一体となって動作する。Ｗｅｂサーバ１４は、ブラウザから時刻の設定要求を受信してシステム時計１１１に時刻を設定した場合、アプリケーション管理部１１２にＪａｖａＶＭ１３の再起動を要求する。
【００４１】
時刻同期アプリ１５は、設定された時刻が到来した時に、インターネット４に接続されたＮＴＰサーバ３と、ホームゲートウェイ５及びイーサネットＩ／Ｆ２１を介して通信し、ＮＴＰプロトコル又はＳＮＴＰプロトコルを実行してシステム時計１１１の時刻をＮＴＰサーバ３の時刻に同期させた場合、アプリケーション管理部１１２にＪａｖａＶＭ１３の再起動を要求する。
【００４２】
ここで、Ｗｅｂサーバ１４がシステム時計に時刻を設定したり、時刻同期アプリ１５がシステム時計１１１の時刻をＮＰＴサーバ３の時刻に同期させたりすることによって、システム時計１１１の時刻が該システム時計１１１に対する時刻の設定又は同期が行われる直前に参照される時刻より前の時刻に変更された時に、たまたまスレッドがＴｈｒｅａｄ．ｓｌｅｅｐ（ｔ）をコールしてスリープ中であった場合、システム時計１１１の時刻が過去に遡った分だけスレッドのスリープ時間が延長されることとなる。つまり、システム時計１１１の時刻が変更前の時刻に追いつくまで、スリープ中のスレッドを含むＪａｖａアプリ１２が、見かけ上全く動作できない状態が長時間続く可能性がある。
【００４３】
これとは逆にシステム時計１１１の時刻が該システム時計１１１に対する時刻の設定又は同期が行われる直前に参照される時刻より先の時刻に変更された場合は、システム時計１１１の時刻が進んだ分だけスレッドのスリープ時間が短縮されることとなり、スレッドの動作が不自然になる。一方、Ｗｅｂサーバ１４によってシステム時計１１１の時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より先の時刻になった後に、時刻同期アプリ１５によってシステム時計１１１の時刻が正しく修正された場合は、結果的にシステム時計１１１の時刻が過去に引き戻される。よってこの場合にも、Ｗｅｂサーバ１４によってシステム時計１１１の時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より前の時刻に変更された場合と同じ問題が発生する。
【００４４】
そこで、本発明では、システム時計１１１の時刻が変更された場合に、ＪａｖａＶＭ１３の再起動が要求される。より好ましくは、Ｗｅｂサーバ１４によってシステム時計１１１の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合、及び過去の時刻を計時しているシステム時計１１１が時刻同期アプリ１５によってＮＴＰサーバ３に時刻同期した場合、ＪａｖａＶＭ１３の再起動が要求されるようにする。
【００４５】
アプリケーション管理部１１２は、Ｗｅｂサーバ１４又は時刻同期アプリ１５からＪａｖａＶＭ１３の再起動を要求された場合、ＪａｖａＶＭ１３を再起動させると共に、その旨をＷｅｂサーバ１４及びＬＥＤ制御アプリ１６に通知する。
【００４６】
ＬＥＤ制御アプリ１６は、ＪａｖａＶＭ１３が再起動した旨が通知された場合、ＬＥＤ２３を点滅させる。この場合、ＬＥＤ２３が任意の点灯パターンで点灯するようにしてもよい。
【００４７】
以下では、上述したＳ／Ｗの機能ブロックの動作を、それを示すフローチャートを用いて説明する。以下に示す処理は、周辺Ｈ／Ｗ２０に含まれる図示しないＲＯＭに予め格納されている制御プログラムに従って、ＣＰＵ１０により実行される。以下に示す処理で授受される情報又は信号は、図２にて矢印付き実線で示されるものである。
【００４８】
先ず、Ｗｅｂサーバ１４が介在してシステム時計１１１の時刻が設定される場合について説明する。
図４は、Ｗｅｂサーバ１４によってシステム時計１１１の時刻を設定するＣＰＵ１０の処理手順を示すフローチャートである。図４の処理は、外部のブラウザからのアクセスが可能になった場合に適時起動される。ここでは、簡単のために、Ｗｅｂサーバ１４が時刻設定画面へのアクセスのみを受け付けるものとする。
【００４９】
図４の処理が起動された場合、ＣＰＵ１０は、例えばＨＴＴＰリクエスト等によるＷｅｂサーバ１４へのアクセスが有ったか否かを判定し（Ｓ１０）、アクセスが有るまで待機する（Ｓ１０：ＮＯ）。アクセスが有った場合（Ｓ１０：ＹＥＳ）、ＣＰＵ１０は、ＨＴＴＰリクエスト等に含まれるＵＲＬが、時刻設定画面へのアクセスを示すものであるか否かを判定し（Ｓ１１）、時刻設定画面へのアクセスを示すものではない場合（Ｓ１１：ＮＯ）、処理をステップＳ１０に移してＷｅｂサーバへのアクセスを待ち受ける。
【００５０】
ＵＲＬが時刻設定画面へのアクセスを示すものである場合（Ｓ１１：ＹＥＳ）、ＣＰＵ１０は、システム時計１１１の時刻を読み出し（Ｓ１２）、読み出した時刻が表示された時刻設定画面（Ｗｅｂユーザインタフェース画面）を生成し（Ｓ１３）、生成した画面の画面データをアクセス元のブラウザに送信する（Ｓ１４）。
【００５１】
その後、ＣＰＵ１０は、アクセス元のブラウザから時刻の設定要求を受信したか否かを判定し（Ｓ１５）、時刻の設定要求を受信するまで待機する（Ｓ１５：ＮＯ）。時刻の設定要求を受信した場合（Ｓ１５：ＹＥＳ）、ＣＰＵ１０は、システム時計１１１に対して時刻の設定要求に含まれる時刻を設定し（Ｓ１６）、更にアプリケーション管理部１１２に対してＪａｖａＶＭ１３の再起動を要求する（Ｓ１７）。
【００５２】
ステップＳ１６では、システム時計１１１の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合にステップＳ１７の処理に移るようにし、そうでない場合に図４の処理を終了することが好ましい。これにより、スリープ中のスレッドを含むＪａｖａアプリ１２が見かけ上全く動作できない状態が、長時間続くのを効果的に防止することができる。
【００５３】
その後、ＣＰＵ１０は、アプリケーション管理部１１２からＪａｖａＶＭ１３の再起動通知が有ったか否かを判定し（Ｓ１８）、再起動通知が有るまで待機する（Ｓ１８：ＮＯ）。ＪａｖａＶＭ１３の再起動通知が有った場合（Ｓ１８：ＹＥＳ）、ＣＰＵ１０は、アクセス元のブラウザに提供している時刻設定画面上に、例えばポップアップで表示される再起動の報知画面を生成し（Ｓ１９）、生成した画面の画面データをアクセス元のブラウザに送信して（Ｓ２０）図４の処理を終了する。
【００５４】
次に、時刻同期アプリ１５が介在してシステム時計１１１の時刻が設定される場合について説明する。
図５は、時刻同期アプリ１５によってシステム時計１１１の時刻を設定するＣＰＵ１０の処理手順を示すフローチャートである。図５の処理は、例えば１秒毎に起動されるが、これに限定されるものではない。ＮＴＰサーバ３に同期すべき時刻（より具体的には、時刻同期処理を実行すべき時刻）は、周辺Ｈ／Ｗ２０に含まれる図示しないＲＡＭに設定されているものとする。
【００５５】
図５の処理が起動された場合、ＣＰＵ１０は、システム時計１１１の時刻を読み出し（Ｓ２１）、読み出した時刻によって、ＲＡＭに設定されているＮＴＰサーバ３に同期すべき時刻が到来したか否かを判定し（Ｓ２２）、その時刻が到来していない場合（Ｓ２２：ＮＯ）、その他の処理を行わずに図５の処理を終了する。
【００５６】
ＮＴＰサーバ３に同期すべき時刻が到来した場合（Ｓ２２：ＹＥＳ）、ＣＰＵ１０は、ＮＴＰプロトコル（又はＳＮＴＰプロトコル）を実行して（Ｓ２３）時刻合わせを行うことにより、システム時計１１１に対して時刻を設定し（Ｓ２４）、更にアプリケーション管理部１１２に対してＪａｖａＶＭ１３の再起動を要求して（Ｓ２５）図５の処理を終了する。
【００５７】
ステップＳ２４では、システム時計１１１の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合にステップＳ２５の処理に移るようにし、そうでない場合に図５の処理を終了することが好ましい。これにより、スリープ中のスレッドを含むＪａｖａアプリ１２が見かけ上全く動作できない状態が、長時間続くのを効果的に防止することができる。
【００５８】
次に、ＪａｖａＶＭ１３を再起動させる処理について説明する。
図６は、アプリケーション管理部１１２によってＪａｖａＶＭ１３を再起動させるＣＰＵ１０の処理手順を示すフローチャートである。図６の処理は、ＪａｖａＶＭ１３が最初に起動された後、適時起動される。
【００５９】
図６の処理が起動された場合、ＣＰＵ１０は、ＪａｖａＶＭ１３を再起動させる要求が有ったか否かを判定し（Ｓ３１）、再起動の要求が有るまで待機する（Ｓ３１：ＮＯ）。ＪａｖａＶＭ１３を再起動させる要求があった場合（Ｓ３１：ＹＥＳ）、ＣＰＵ１０は、ＪａｖａＶＭ１３を再起動させる（Ｓ３２；図２では矢印付きの破線で示す）。
【００６０】
次いで、ＣＰＵ１０は、ＬＥＤ制御アプリ１６に対してＪａｖａＶＭ１３の再起動を通知する（Ｓ３３）と共に、Ｗｅｂサーバ１４に対してＪａｖａＶＭ１３の再起動を通知して（Ｓ３４）図６の処理を終了する。
【００６１】
最後に、ＬＥＤ２３を点滅させる処理について説明する。
図７は、ＬＥＤ制御アプリ１６によってＬＥＤ２３を点滅させるＣＰＵ１０の処理手順を示すフローチャートである。図７の処理は、ＪａｖａＶＭ１３が起動しており、ＬＥＤ２３が消灯している状態で適時起動される。
【００６２】
図７の処理が起動された場合、ＣＰＵ１０は、アプリケーション管理部１１２からＪａｖａＶＭ１３の再起動通知が有ったか否かを判定し（Ｓ４１）、再起動通知が有るまで待機する（Ｓ４１：ＮＯ）。ＪａｖａＶＭ１３の再起動通知が有った場合（Ｓ４１：ＹＥＳ）、ＣＰＵ１０は、ＬＥＤ２３を点滅させて（Ｓ４２）図７の処理を終了する。
【００６３】
以上のように本実施の形態によれば、時刻を計時するシステム時計１１１を有するオペレーティングシステム１１上で動作する時刻設定アプリケーションが、システム時計１１１に時刻を設定した場合、システム時計１１１の時刻を基準とする時間に応じた処理（Ｔｈｒｅａｄ．ｓｌｅｅｐ）の実行を要求するスレッドが属するアプリケーション（Ｊａｖａアプリ１２）をオペレーティングシステム１１上で実行する仮想マシン（ＪａｖａＶＭ１３）を再起動させる。
つまり、ＪａｖａＶＭ１３がオペレーティングシステム１１を介してシステム時計１１１の時刻を参照しており、ＪａｖａＶＭ１３がスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、ＪａｖａＶＭ１３が再起動してＪａｖａアプリ１２の実行が初期化される。
従って、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能となる。
【００６４】
また、アプリケーションを実行する仮想マシンがＪａｖａＶＭ１３であり、システム時計１１１の時刻が変更された場合であっても、ＪａｖａＶＭ１３が実行するＪａｖａアプリ１２が実行停止状態となることを防止することが可能となる。
【００６５】
更に、システム時計１１１の時刻を基準とする時間に応じた処理がＴｈｒｅａｄ．ｓｌｅｅｐ関数であり、システム時計１１１の時刻が設定されて変更された場合であっても、この関数から要求された時間以上にスレッドの停止が長くなるのを防止することが可能となる。
【００６６】
更にまた、時刻設定アプリケーション（時刻同期アプリ１５）により、システム時計１１１の時刻をインターネット４に接続されたＮＴＰサーバ３に同期させる。
従って、システム時計１１１の時刻がＮＴＰサーバ３に同期したときに、ＪａｖａＶＭ１３を再起動させることが可能となる。
【００６７】
更にまた、ネットワークに接続するためのイーサネットインタフェース２１を介してＰＣ２のＷｅｂブラウザからアクセスされるＷｅｂアプリケーション（Ｗｅｂサーバ１４）がＷｅｂブラウザからの時刻の設定要求を受け付けて、システム時計１１１の時刻を設定する。
従って、システム時計１１１の時刻が、Ｗｅｂブラウザからの要求によって設定されたときに、ＪａｖａＶＭ１３を再起動させることが可能となる。
【００６８】
更にまた、仮想マシン（ＪａｖａＶＭ１３）が再起動した場合、前記Ｗｅｂアプリケーション（Ｗｅｂサーバ１４）が、自身にアクセスするＷｅｂブラウザに所定の情報（再起動の報知画面の画面データ）を送信する。
これにより、Ｗｅｂブラウザを操作する使用者に対して、仮想マシンが再起動した旨を報知することが可能となる。
【００６９】
更にまた、仮想マシン（ＪａｖａＶＭ１３）が再起動した場合、オペレーティングシステム１１上で動作する光源制御アプリケーション（ＬＥＤ制御アプリ１６）によって、所定のインタフェースに接続された光源（ＬＥＤ２３）を点灯又は点滅させる。
従って、ＬＥＤ２３の周囲に居る使用者に対して、仮想マシンが再起動した旨を報知することが可能となる。
【００７０】
今回開示された実施の形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【００７１】
１  情報処理装置
１０  ＣＰＵ
１１  ＯＳ（オペレーティングシステム）
１２  Ｊａｖａアプリ（アプリケーション）
１３  ＪａｖａＶＭ（仮想マシン）
１４  Ｗｅｂサーバ（Ｗｅｂアプリケーション）
１５  時刻同期アプリ（時刻設定アプリケーション）
１６  ＬＥＤ制御アプリ
２１  イーサネットＩ／Ｆ（インターネットに接続するためのインタフェース、ネットワークに接続するためのインタフェース）
２３  ＬＥＤ（光源）
２  ＰＣ
３  ＮＴＰサーバ
４  インターネット
５  ホームゲートウェイ
【図１】
2015075836.tif 000003
【図２】
2015075836.tif 000004
【図３】
2015075836.tif 000005
【図４】
2015075836.tif 000006
【図５】
2015075836.tif 000007
【図６】
2015075836.tif 000008
【図７】
2015075836.tif 000009