特許第6149671号(P6149671)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 住友電気工業株式会社の特許一覧

特許6149671仮想マシンの実行方法、コンピュータプログラム及び情報処理装置
<>
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000002
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000003
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000004
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000005
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000006
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000007
  • 特許6149671-仮想マシンの実行方法、コンピュータプログラム及び情報処理装置 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6149671
(24)【登録日】2017年6月2日
(45)【発行日】2017年6月21日
(54)【発明の名称】仮想マシンの実行方法、コンピュータプログラム及び情報処理装置
(51)【国際特許分類】
   G06F 13/00 20060101AFI20170612BHJP
   G06F 9/445 20060101ALI20170612BHJP
【FI】
   G06F13/00 351C
   G06F9/06 610A
【請求項の数】9
【全頁数】14
(21)【出願番号】特願2013-210409(P2013-210409)
(22)【出願日】2013年10月7日
(65)【公開番号】特開2015-75836(P2015-75836A)
(43)【公開日】2015年4月20日
【審査請求日】2016年7月19日
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(72)【発明者】
【氏名】山田 智博
(72)【発明者】
【氏名】本多 裕也
【審査官】 米倉 秀明
(56)【参考文献】
【文献】 特開2012−027768(JP,A)
【文献】 特開2006−146678(JP,A)
【文献】 特開2012−190319(JP,A)
【文献】 特開2012−073143(JP,A)
【文献】 特開2006−021489(JP,A)
【文献】 特開2011−198013(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置における前記仮想マシンの実行方法において、
前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行し、
前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させること
を特徴とする仮想マシンの実行方法。
【請求項2】
前記仮想マシンは、JavaVMであることを特徴とする請求項1に記載の仮想マシンの実行方法。
【請求項3】
前記処理は、Thread.sleepであることを特徴とする請求項2に記載の仮想マシンの実行方法。
【請求項4】
前記情報処理装置をインターネットに接続するためのインタフェースを用意し、
前記時刻設定アプリケーションは、前記時刻を前記インターネットに接続されたNTPサーバに同期させて設定することを特徴とする請求項1から3の何れか1項に記載の仮想マシンの実行方法。
【請求項5】
前記情報処理装置をネットワークに接続するためのインタフェースを用意し、
前記時刻設定アプリケーションは、前記インタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションであり、
該ウェブアプリケーションは、前記ウェブブラウザからの時刻の設定要求を受け付けて前記時刻を設定すること
を特徴とする請求項1から3の何れか1項に記載の仮想マシンの実行方法。
【請求項6】
前記仮想マシンが再起動した場合、前記ウェブアプリケーションは、前記ウェブブラウザに所定の情報を送信することを特徴とする請求項5に記載の仮想マシンの実行方法。
【請求項7】
前記情報処理装置に光源を接続するためのインタフェースを用意し、
前記光源の点灯を制御する光源制御アプリケーションを前記オペレーティングシステム上で実行し、
前記仮想マシンが再起動した場合、前記光源制御アプリケーションは、前記光源を点灯又は点滅させること
を特徴とする請求項1から6の何れか1項に記載の仮想マシンの実行方法。
【請求項8】
時刻を計時するシステム時計を有するオペレーティングシステムを備えるコンピュータに、前記システム時計の時刻を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションを前記オペレーティングシステム上の仮想マシン上で実行させるコンピュータプログラムにおいて、
コンピュータに、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行させるステップと、
前記時刻設定アプリケーションが前記時刻を設定した場合、コンピュータに、前記仮想マシンを再起動させるステップと
を実行させることを特徴とするコンピュータプログラム。
【請求項9】
時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置において、
前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行する手段と、
前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させる手段とを備えること
を特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オペレーティングシステム上の仮想マシンでアプリケーションを実行する情報処理装置における仮想マシンの実行方法、コンピュータプログラム及び情報処理装置に関する。
【背景技術】
【0002】
近年、画像、音声、動画像等のマルチメディアデータを利用した拡張性の高いサービスを実現する手法として、サン・マイクロシステムズ社が提唱したオブジェクト指向型言語であるJava(登録商標)環境が普及している。
【0003】
Java環境では、Java言語で記述されたソースコードに基づく中間コードで構成されたJavaアプリからの要求に応じて、例えばインターネットなどの通信媒体を介して画像データがダウンロードされ、ダウンロードされた画像がJavaアプリで用いられる。
【0004】
Javaアプリは、1又は複数のプロセスとして並列的に実行されるようになっており、各プロセスで生成されて実行可能となったスレッドは、JavaVMによってCPU資源が割り当てられて実行される。例えば、特定のスレッドに所定時間だけ待機する処理要求が含まれていた場合、所定時間が経過すれば、その特定のスレッドが実行可能となる(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−015291号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述の特定のスレッドの待機中に、JavaVMが参照する時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より前の時刻になった場合、待機の終了時刻の到来が遅れるために、そのスレッドが実行可能となるのを待ち受けている他のスレッドも待ち受け状態が継続されて、Javaアプリ全体が実質的に停止状態に陥ることがあった。
【0007】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能な仮想マシンの実行方法、コンピュータプログラム及び情報処理装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明に係る仮想マシンの実行方法は、時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置における前記仮想マシンの実行方法において、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行し、前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させることを特徴とする。
【0009】
本発明に係る仮想マシンの実行方法は、前記仮想マシンは、JavaVMであることを特徴とする。
【0010】
本発明に係る仮想マシンの実行方法は、前記処理は、Thread.sleepであることを特徴とする。
【0011】
本発明に係る仮想マシンの実行方法は、前記情報処理装置をインターネットに接続するためのインタフェースを用意し、前記時刻設定アプリケーションは、前記時刻を前記インターネットに接続されたNTPサーバに同期させて設定することを特徴とする。
【0012】
本発明に係る仮想マシンの実行方法は、前記情報処理装置をネットワークに接続するためのインタフェースを用意し、前記時刻設定アプリケーションは、前記インタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションであり、該ウェブアプリケーションは、前記ウェブブラウザからの時刻の設定要求を受け付けて前記時刻を設定することを特徴とする。
【0013】
本発明に係る仮想マシンの実行方法は、前記仮想マシンが再起動した場合、前記ウェブアプリケーションは、前記ウェブブラウザに所定の情報を送信することを特徴とする。
【0014】
本発明に係る仮想マシンの実行方法は、前記情報処理装置に光源を接続するためのインタフェースを用意し、前記光源の点灯を制御する光源制御アプリケーションを前記オペレーティングシステム上で実行し、前記仮想マシンが再起動した場合、前記光源制御アプリケーションは、前記光源を点灯又は点滅させることを特徴とする。
【0015】
本発明に係るコンピュータプログラムは、時刻を計時するシステム時計を有するオペレーティングシステムを備えるコンピュータに、前記システム時計の時刻を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションを前記オペレーティングシステム上の仮想マシン上で実行させるコンピュータプログラムにおいて、コンピュータに、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行させるステップと、前記時刻設定アプリケーションが前記時刻を設定した場合、コンピュータに、前記仮想マシンを再起動させるステップとを実行させることを特徴とする。
【0016】
本発明に係る情報処理装置は、時刻を計時するシステム時計を有するオペレーティングシステム上でアプリケーションを実行する仮想マシンを備え、前記アプリケーションに属するスレッドが、前記システム時計の時刻を基準とする時間に応じた処理の実行を前記仮想マシンに要求する情報処理装置において、前記システム時計の時刻を設定する時刻設定アプリケーションを前記オペレーティングシステム上で実行する手段と、前記時刻設定アプリケーションが前記時刻を設定した場合、前記仮想マシンを再起動させる手段とを備えることを特徴とする。
【0017】
本発明にあっては、時刻を計時するシステム時計を有するオペレーティングシステム上で動作する時刻設定アプリケーションが、システム時計の時刻を設定した場合、システム時計の時刻(即ち、システム時計が計時する時刻)を基準とする時間に応じた処理の実行を要求するスレッドが属するアプリケーションをオペレーティングシステム上で実行する仮想マシンを再起動させる。
つまり、仮想マシンがオペレーティングシステムを介してシステム時計の時刻を参照しており、仮想マシンがスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、仮想マシンが再起動してアプリケーションの実行が初期化される。
【0018】
本発明にあっては、アプリケーションを実行する仮想マシンがJavaVMであり、システム時計の時刻が変更された場合であっても、JavaVMが実行するJavaアプリが実行停止状態となることが防止される。
【0019】
本発明にあっては、システム時計の時刻を基準とする時間に応じた処理がThread.sleep関数であり、システム時計の時刻が設定されて変更された場合であっても、関数から要求された時間以上にスレッドの停止が長くなることが防止される。
【0020】
本発明にあっては、時刻設定アプリケーションにより、システム時計の時刻をインターネットに接続されたNTPサーバに同期させる。
これにより、システム時計の時刻がNTPサーバに同期したときに、JavaVMが再起動する。
【0021】
本発明にあっては、ネットワークに接続するためのインタフェースを介してウェブブラウザからアクセスされるウェブアプリケーションがウェブブラウザからの時刻の設定要求を受け付けて、システム時計の時刻を設定する。
これにより、システム時計の時刻が、ウェブブラウザからの要求によって設定されたときに、JavaVMが再起動する。
【0022】
本発明にあっては、仮想マシンが再起動した場合、前記ウェブアプリケーションが、自身にアクセスするウェブブラウザに所定の情報を送信する。
これにより、ウェブブラウザを操作する使用者に対して、仮想マシンが再起動した旨が報知される。
【0023】
本発明にあっては、仮想マシンが再起動した場合、オペレーティングシステム上で動作する光源制御アプリケーションによって、所定のインタフェースに接続された光源を点灯又は点滅させる。
これにより、光源の周囲に居る使用者に対して、仮想マシンが再起動した旨が報知される。
【発明の効果】
【0024】
本発明によれば、仮想マシンがオペレーティングシステムを介してシステム時計の時刻を参照しており、仮想マシンがスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、仮想マシンが再起動してアプリケーションの実行が初期化される。
従って、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能となる。
【図面の簡単な説明】
【0025】
図1】本発明に係る情報処理装置を備えるホームエネルギーマネジメントシステムの構成を示すブロック図である。
図2】情報処理装置の構成を示すブロック図である。
図3】Javaアプリに属するスレッドのソースコードの例示図である。
図4】Webサーバによってシステム時計の時刻を設定するCPUの処理手順を示すフローチャートである。
図5】時刻同期アプリによってシステム時計の時刻を設定するCPUの処理手順を示すフローチャートである。
図6】アプリケーション管理部によってJavaVMを再起動させるCPUの処理手順を示すフローチャートである。
図7】LED制御アプリによってLEDを点滅させるCPUの処理手順を示すフローチャートである。
【発明を実施するための形態】
【0026】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
図1は、本発明に係る情報処理装置を備えるホームエネルギーマネジメントシステム(Home Energy Management System ;以下、HEMSという)の構成を示すブロック図である。図中1は情報処理装置であり、情報処理装置1は、NTP(Network Time Protocol )サーバ3が接続されたインターネット4に、ブロードバンドルータの機能を有するホームゲートウェイ5を介して接続される。ホームゲートウェイ5には、パーソナルコンピュータ(以下、PCという)2が接続されている。PC2は、例えばインターネット4に接続されるものであってもよいし、無線通信回線(不図示)を介して接続されるスマートフォン等の携帯電話であってもよい。
【0027】
情報処理装置1には、後述するUSBインタフェース22,22によってUSB無線トランスミッタ/レシーバ(以下、USBT/Rと称し、図ではT/Rで示す)6,6が接続されている。USBT/R6,6の夫々と、分電盤7及び窓8に配されたセンサ9,9とは、無線による通信が可能に構成されている。分電盤7に配されたセンサ9は、家庭の使用電力を検出したり、電力回路を開閉したりするものである。また、窓8に配されたセンサ9は、窓8の周囲の明るさを検出したり、室内への人の侵入を検出したりするものである。
【0028】
上述したHEMSの構成において、情報処理装置1は、USBT/R6,6によってセンサ9,9の夫々から電力データ及び照度データを収集して使用電力量の集計を行うと共に、図示しない室内照明の輝度を照度データに応じて制御する。情報処理装置1は、また、ホームサーバの機能を備えており、例えば、PC2に搭載されたブラウザからアクセスされた場合、アクセス元のブラウザに家庭の使用電力量のグラフを表示させたり、ブラウザからの制御によって室内の電気製品の電源をオンオフさせたりすることができる。更に、窓8から人が侵入した場合、図示しない携帯電話に発報することもできる。
【0029】
次に、情報処理装置1の主要部の構成及び機能について説明する。
図2は、情報処理装置1の構成を示すブロック図である。情報処理装置1は、ソフトウェア(以下、S/Wという)による機能ブロックを実現するCPU10と、該CPU10の周辺ハードウェア(以下、H/Wという)20とを備える。
【0030】
S/Wによる機能ブロックは、Linux(登録商標)等のオペレーティングシステム(Operating System ;以下、OSという)11と、Javaアプリ12を実行する仮想マシンとしてのJavaVM(Java Virtual Machine )13と、サーバS/Wであるウェブサーバ(以下、Webサーバという)14と、NTPサーバ3に時刻同期するための時刻同期アプリケーション(以下、時刻同期アプリという)15と、後述するLED23の点消灯を制御するLED制御アプリケーション(光源制御アプリケーション;以下、LED制御アプリという)16とを含んで構成されている。
【0031】
OS11は、Linuxに限定されず、Windows(登録商標)等の他のOSであってもよい。仮想マシンはJavaVM13に限定されず、例えばマイクロソフト社によるドットネットフレームワーク(.Net Framework )等の他の仮想マシンであってもよい。
【0032】
JavaVM13及びLED制御アプリ16は、CPU10が実行するOS11上で動作する。Webサーバ14及び時刻同期アプリ15は、後述するシステム時計111の時刻を設定する時刻設定アプリケーションとして、CPU10が実行するOS11上で動作する。
【0033】
周辺H/W20は、ホームゲートウェイ5に接続するためのイーサネットインタフェース(インターネット又はネットワークに接続するためのインタフェース;以下、イーサネットI/Fという;イーサネットは登録商標)21と、USBT/R6,6に接続するためのUSBインタフェース(以下、USBI/Fという)22,22と、使用者に所定の報知を行うためのLED(光源を接続するためのインタフェースを含む光源)23とを含んで構成されている。LED23は、周辺H/Wから信号ケーブルを介して外部に接続されていてもよい。イーサネットI/F21、USBI/F22,22及びLED23は、OS11に組み込まれた夫々のデバイスドライバを介してOS11から操作される。
【0034】
OS11は、周辺H/W20に含まれる図示しないリアルタイムクロックから起動時に取得した時刻情報に基づいて時刻を計時するシステム時計111と、OS11上で動作する各アプリケーションの起動、停止、再起動等を管理するアプリケーション管理部112とを含んでなる。各アプリケーションによるシステム時計111からの時刻の読み出しは、OS11に対するシステムコールによって行う。即ち、OS11は、時刻情報を取得するシステムコールがあった場合、システム時計111が計時する時刻を読み出してシステムコールのリターン値に設定する。
【0035】
Javaアプリ12は、上述したHEMSのホームサーバの機能を実現するものであり、USBT/R6,6及びUSBI/F22,22を介してセンサ9,9と通信すると共に、ホームゲートウェイ5を介してPC2と通信する。Javaアプリ12は、Java言語で記述されたソースコードに基づく中間コードで構成されたアプリケーションである。
【0036】
図3は、Javaアプリ12に属するスレッドのソースコードの例示図である。Java言語で記述されたソースコードは、予めコンパイルされ、中間コードに変換されて実機に実装される。図中Thread.sleep(5000)は、スリープ関数である。スリープ関数は、「システム時計111の時刻を基準とする時間に応じた処理の実行をJavaVM13に要求する」関数の1つである。Thread.sleep(5000)は、この関数をコールしたスレッドを5000ms間停止(以下、スリープという)させることを要求するものである。
【0037】
「システム時計111の時刻を基準とする時間に応じた処理の実行をJavaVM13に要求する」関数は、Thread.sleep()に限定されるものではなく、例えばThread.join()、Object.wait()等のタイムアウトのパラメータを伴う他の関数であってもよい。
【0038】
図2に戻って、JavaVM13は、Javaアプリ12を構成する中間コードを逐次解釈し、CPU10が実行可能な機械語に変換して実行する。JavaVM13のこの機能によって、特定のOSやプロセッサに依存することなく、いかなるプラットフォームであってもJavaアプリ12が実行可能な環境が実現される。
【0039】
JavaVM13は、Javaアプリ12からシステム時計111の時刻を基準とする時間に応じた処理の実行を要求された場合に、要求された処理の実行に係る時刻を記憶するための時刻情報記憶部131を含んでなる。例えばThread.sleep(t)がコールされた場合、JavaVM13は、システム時計111から時刻を読み出し、読み出した時刻に時間t(ms)を加算した時刻を時刻情報記憶部131に記憶し、記憶した時刻が到来した時に、Thread.sleep(t)をコールしたスレッドの実行を再開する。
【0040】
Webサーバ14は、時刻設定等のWebユーザインタフェース画面を提供するプログラムが組み込まれたWebアプリケーションであり、PC2とホームゲートウェイ5及びイーサネットI/F21を介して通信する。時刻設定のプログラムは、PC2に搭載されたブラウザからのWebサーバ14へのアクセスに伴って起動され、Webサーバ14と一体となって動作する。Webサーバ14は、ブラウザから時刻の設定要求を受信してシステム時計111に時刻を設定した場合、アプリケーション管理部112にJavaVM13の再起動を要求する。
【0041】
時刻同期アプリ15は、設定された時刻が到来した時に、インターネット4に接続されたNTPサーバ3と、ホームゲートウェイ5及びイーサネットI/F21を介して通信し、NTPプロトコル又はSNTPプロトコルを実行してシステム時計111の時刻をNTPサーバ3の時刻に同期させた場合、アプリケーション管理部112にJavaVM13の再起動を要求する。
【0042】
ここで、Webサーバ14がシステム時計に時刻を設定したり、時刻同期アプリ15がシステム時計111の時刻をNPTサーバ3の時刻に同期させたりすることによって、システム時計111の時刻が該システム時計111に対する時刻の設定又は同期が行われる直前に参照される時刻より前の時刻に変更された時に、たまたまスレッドがThread.sleep(t)をコールしてスリープ中であった場合、システム時計111の時刻が過去に遡った分だけスレッドのスリープ時間が延長されることとなる。つまり、システム時計111の時刻が変更前の時刻に追いつくまで、スリープ中のスレッドを含むJavaアプリ12が、見かけ上全く動作できない状態が長時間続く可能性がある。
【0043】
これとは逆にシステム時計111の時刻が該システム時計111に対する時刻の設定又は同期が行われる直前に参照される時刻より先の時刻に変更された場合は、システム時計111の時刻が進んだ分だけスレッドのスリープ時間が短縮されることとなり、スレッドの動作が不自然になる。一方、Webサーバ14によってシステム時計111の時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より先の時刻になった後に、時刻同期アプリ15によってシステム時計111の時刻が正しく修正された場合は、結果的にシステム時計111の時刻が過去に引き戻される。よってこの場合にも、Webサーバ14によってシステム時計111の時刻が変更されて変更直後に参照される時刻が変更直前に参照される時刻より前の時刻に変更された場合と同じ問題が発生する。
【0044】
そこで、本発明では、システム時計111の時刻が変更された場合に、JavaVM13の再起動が要求される。より好ましくは、Webサーバ14によってシステム時計111の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合、及び過去の時刻を計時しているシステム時計111が時刻同期アプリ15によってNTPサーバ3に時刻同期した場合、JavaVM13の再起動が要求されるようにする。
【0045】
アプリケーション管理部112は、Webサーバ14又は時刻同期アプリ15からJavaVM13の再起動を要求された場合、JavaVM13を再起動させると共に、その旨をWebサーバ14及びLED制御アプリ16に通知する。
【0046】
LED制御アプリ16は、JavaVM13が再起動した旨が通知された場合、LED23を点滅させる。この場合、LED23が任意の点灯パターンで点灯するようにしてもよい。
【0047】
以下では、上述したS/Wの機能ブロックの動作を、それを示すフローチャートを用いて説明する。以下に示す処理は、周辺H/W20に含まれる図示しないROMに予め格納されている制御プログラムに従って、CPU10により実行される。以下に示す処理で授受される情報又は信号は、図2にて矢印付き実線で示されるものである。
【0048】
先ず、Webサーバ14が介在してシステム時計111の時刻が設定される場合について説明する。
図4は、Webサーバ14によってシステム時計111の時刻を設定するCPU10の処理手順を示すフローチャートである。図4の処理は、外部のブラウザからのアクセスが可能になった場合に適時起動される。ここでは、簡単のために、Webサーバ14が時刻設定画面へのアクセスのみを受け付けるものとする。
【0049】
図4の処理が起動された場合、CPU10は、例えばHTTPリクエスト等によるWebサーバ14へのアクセスが有ったか否かを判定し(S10)、アクセスが有るまで待機する(S10:NO)。アクセスが有った場合(S10:YES)、CPU10は、HTTPリクエスト等に含まれるURLが、時刻設定画面へのアクセスを示すものであるか否かを判定し(S11)、時刻設定画面へのアクセスを示すものではない場合(S11:NO)、処理をステップS10に移してWebサーバへのアクセスを待ち受ける。
【0050】
URLが時刻設定画面へのアクセスを示すものである場合(S11:YES)、CPU10は、システム時計111の時刻を読み出し(S12)、読み出した時刻が表示された時刻設定画面(Webユーザインタフェース画面)を生成し(S13)、生成した画面の画面データをアクセス元のブラウザに送信する(S14)。
【0051】
その後、CPU10は、アクセス元のブラウザから時刻の設定要求を受信したか否かを判定し(S15)、時刻の設定要求を受信するまで待機する(S15:NO)。時刻の設定要求を受信した場合(S15:YES)、CPU10は、システム時計111に対して時刻の設定要求に含まれる時刻を設定し(S16)、更にアプリケーション管理部112に対してJavaVM13の再起動を要求する(S17)。
【0052】
ステップS16では、システム時計111の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合にステップS17の処理に移るようにし、そうでない場合に図4の処理を終了することが好ましい。これにより、スリープ中のスレッドを含むJavaアプリ12が見かけ上全く動作できない状態が、長時間続くのを効果的に防止することができる。
【0053】
その後、CPU10は、アプリケーション管理部112からJavaVM13の再起動通知が有ったか否かを判定し(S18)、再起動通知が有るまで待機する(S18:NO)。JavaVM13の再起動通知が有った場合(S18:YES)、CPU10は、アクセス元のブラウザに提供している時刻設定画面上に、例えばポップアップで表示される再起動の報知画面を生成し(S19)、生成した画面の画面データをアクセス元のブラウザに送信して(S20)図4の処理を終了する。
【0054】
次に、時刻同期アプリ15が介在してシステム時計111の時刻が設定される場合について説明する。
図5は、時刻同期アプリ15によってシステム時計111の時刻を設定するCPU10の処理手順を示すフローチャートである。図5の処理は、例えば1秒毎に起動されるが、これに限定されるものではない。NTPサーバ3に同期すべき時刻(より具体的には、時刻同期処理を実行すべき時刻)は、周辺H/W20に含まれる図示しないRAMに設定されているものとする。
【0055】
図5の処理が起動された場合、CPU10は、システム時計111の時刻を読み出し(S21)、読み出した時刻によって、RAMに設定されているNTPサーバ3に同期すべき時刻が到来したか否かを判定し(S22)、その時刻が到来していない場合(S22:NO)、その他の処理を行わずに図5の処理を終了する。
【0056】
NTPサーバ3に同期すべき時刻が到来した場合(S22:YES)、CPU10は、NTPプロトコル(又はSNTPプロトコル)を実行して(S23)時刻合わせを行うことにより、システム時計111に対して時刻を設定し(S24)、更にアプリケーション管理部112に対してJavaVM13の再起動を要求して(S25)図5の処理を終了する。
【0057】
ステップS24では、システム時計111の時刻が設定されて設定直後に参照される時刻が設定直前に参照される時刻より前の時刻になった場合にステップS25の処理に移るようにし、そうでない場合に図5の処理を終了することが好ましい。これにより、スリープ中のスレッドを含むJavaアプリ12が見かけ上全く動作できない状態が、長時間続くのを効果的に防止することができる。
【0058】
次に、JavaVM13を再起動させる処理について説明する。
図6は、アプリケーション管理部112によってJavaVM13を再起動させるCPU10の処理手順を示すフローチャートである。図6の処理は、JavaVM13が最初に起動された後、適時起動される。
【0059】
図6の処理が起動された場合、CPU10は、JavaVM13を再起動させる要求が有ったか否かを判定し(S31)、再起動の要求が有るまで待機する(S31:NO)。JavaVM13を再起動させる要求があった場合(S31:YES)、CPU10は、JavaVM13を再起動させる(S32;図2では矢印付きの破線で示す)。
【0060】
次いで、CPU10は、LED制御アプリ16に対してJavaVM13の再起動を通知する(S33)と共に、Webサーバ14に対してJavaVM13の再起動を通知して(S34)図6の処理を終了する。
【0061】
最後に、LED23を点滅させる処理について説明する。
図7は、LED制御アプリ16によってLED23を点滅させるCPU10の処理手順を示すフローチャートである。図7の処理は、JavaVM13が起動しており、LED23が消灯している状態で適時起動される。
【0062】
図7の処理が起動された場合、CPU10は、アプリケーション管理部112からJavaVM13の再起動通知が有ったか否かを判定し(S41)、再起動通知が有るまで待機する(S41:NO)。JavaVM13の再起動通知が有った場合(S41:YES)、CPU10は、LED23を点滅させて(S42)図7の処理を終了する。
【0063】
以上のように本実施の形態によれば、時刻を計時するシステム時計111を有するオペレーティングシステム11上で動作する時刻設定アプリケーションが、システム時計111に時刻を設定した場合、システム時計111の時刻を基準とする時間に応じた処理(Thread.sleep)の実行を要求するスレッドが属するアプリケーション(Javaアプリ12)をオペレーティングシステム11上で実行する仮想マシン(JavaVM13)を再起動させる。
つまり、JavaVM13がオペレーティングシステム11を介してシステム時計111の時刻を参照しており、JavaVM13がスレッドから要求された処理を実行する上で基準となる時刻が変更された場合に、JavaVM13が再起動してJavaアプリ12の実行が初期化される。
従って、仮想マシンが参照する時刻が変更された場合であっても、仮想マシン上で実行されるアプリケーションが実行停止状態に陥るのを防止することが可能となる。
【0064】
また、アプリケーションを実行する仮想マシンがJavaVM13であり、システム時計111の時刻が変更された場合であっても、JavaVM13が実行するJavaアプリ12が実行停止状態となることを防止することが可能となる。
【0065】
更に、システム時計111の時刻を基準とする時間に応じた処理がThread.sleep関数であり、システム時計111の時刻が設定されて変更された場合であっても、この関数から要求された時間以上にスレッドの停止が長くなるのを防止することが可能となる。
【0066】
更にまた、時刻設定アプリケーション(時刻同期アプリ15)により、システム時計111の時刻をインターネット4に接続されたNTPサーバ3に同期させる。
従って、システム時計111の時刻がNTPサーバ3に同期したときに、JavaVM13を再起動させることが可能となる。
【0067】
更にまた、ネットワークに接続するためのイーサネットインタフェース21を介してPC2のWebブラウザからアクセスされるWebアプリケーション(Webサーバ14)がWebブラウザからの時刻の設定要求を受け付けて、システム時計111の時刻を設定する。
従って、システム時計111の時刻が、Webブラウザからの要求によって設定されたときに、JavaVM13を再起動させることが可能となる。
【0068】
更にまた、仮想マシン(JavaVM13)が再起動した場合、前記Webアプリケーション(Webサーバ14)が、自身にアクセスするWebブラウザに所定の情報(再起動の報知画面の画面データ)を送信する。
これにより、Webブラウザを操作する使用者に対して、仮想マシンが再起動した旨を報知することが可能となる。
【0069】
更にまた、仮想マシン(JavaVM13)が再起動した場合、オペレーティングシステム11上で動作する光源制御アプリケーション(LED制御アプリ16)によって、所定のインタフェースに接続された光源(LED23)を点灯又は点滅させる。
従って、LED23の周囲に居る使用者に対して、仮想マシンが再起動した旨を報知することが可能となる。
【0070】
今回開示された実施の形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0071】
1 情報処理装置
10 CPU
11 OS(オペレーティングシステム)
12 Javaアプリ(アプリケーション)
13 JavaVM(仮想マシン)
14 Webサーバ(Webアプリケーション)
15 時刻同期アプリ(時刻設定アプリケーション)
16 LED制御アプリ
21 イーサネットI/F(インターネットに接続するためのインタフェース、ネットワークに接続するためのインタフェース)
23 LED(光源)
2 PC
3 NTPサーバ
4 インターネット
5 ホームゲートウェイ
図1
図2
図3
図4
図5
図6
図7