Windows TIPS
[System Environment] |
Javaアプリケーションをログオフ中も実行させ続けるには
→ 解説をスキップして操作方法を読む
海津 智宏
2006/01/07 |
|
対象OS |
Windows 2000 |
Windows XP |
Windows Server 2003 |
|
|
 |
■ |
プログラムをバックグラウンドで実行させ続けるためには、Windows OSのタスク機能が利用できる。 |
■ |
だがJavaアプリケーションをタスクとして登録しても、ユーザーがログオフすると、Javaアプリケーションが終了してしまう。 |
■ |
これを避けるには、javawコマンドにログオフのイベントを無視するオプションを付けるとよい。 |
|
|
Javaアプリケーションを、Windowsのサービスのように利用する(バックグラウンドでずっと実行させ続ける)ためには、通常のWindowsアプリケーションとは違った配慮が必要である。一般的には、Windowsのタスクとして登録しておけば、ユーザーのログオン/ログオフとは関係なく、プログラムを実行させ続けることができるはずである。だがJavaの実行環境の仕様により、たとえタスクとして登録されたプログラムであっても、ユーザーがログオフすると実行中のJavaアプリケーションのタスクが終了してしまう。これはJavaの実行環境が、ログオフに起因するシグナルをキャッチしてシャットダウンしてしまうからだ。
Javaアプリケーションをログオン/ログオフとは無関係に、ずっと実行し続けたければ、このようなシグナルを無視するオプションを指定するとよい。Java実行環境1.3以降には「-Xrs」というオプションがあり、このオプションを付けて実行すると、ログオフ時のWindows OSによるシグナルを無視して実行を続けることができる。
例えば、次のようなJavaプログラムを作成したとしよう。
※ファイル:Count.java
public class Count {
public static void main(String[] args) throws Exception{
for (int i=0; ; i++){
Thread.sleep(1000);
java.io.FileWriter fw = new java.io.FileWriter("count.txt");
fw.write(Integer.toString(i));
fw.close();
}
}
} |
これは、起動からの経過時間をファイルに出力するプログラムである。実行中は1秒ごとにカレント・ディレクトリの「count.txt」が更新される。このファイルが更新されるかどうかを確認することで、プログラムが実行中かどうかを簡単にチェックできる。
これをコンパイルし、「java Count」として実行すると、「count.txt」が作成され、1秒ごとに経過時間が書き込まれる。コマンド・プロンプトで「Ctrl+C」を押すか、ログオフするとプログラムは終了する。
では、これをログオフ中も実行させるために、タスクとして登録してみよう。こうすると、ログオン/ログオフとは関係なく、実行されるようになる。
まず、コントロール・パネルの[タスク]アイテムを開き、右クリックして表示されるポップアップ・メニュー、もしくは[ファイル]メニューの[新規]−[タスク]を選択する(コントロール・パネルをカテゴリ表示にしている場合には、[パフォーマンスとメンテナンス]の[タスク]アイテムを開く)。作成された新しいタスクに名前を付け、プロパティを開く。[実行するファイル名]は「javaw -Xrs Count」というふうに、-Xrsオプションを付けておく。その下の「開始」テキストボックスにはJavaプログラムを作成したフォルダ名を入力する。
 |
タスクのプロパティ |
実行プログラムの指定、実行プログラムが存在するフォルダの指定、プログラムを実行するアカウントの指定を行う。 |
|
 |
“-Xrs”オプションと実行するプログラム名を指定して、javawコマンドを指定する。 |
|
 |
実行したいプログラムが存在するフォルダを指定する。 |
|
 |
プログラムを実行するアカウントを指定する。 |
|
次に[スケジュール]タブをクリックし、タスクのスケジュールを「システム起動時」とする。
 |
[スケジュール]タブ |
[スケジュール]タブをクリックし、タスクのスケジューリング方法を指定する。 |
|
 |
「システム起動時」を選択する。 |
|
以上の設定でタスクを登録し、コンピュータを再起動すると自動的にJavaが起動され、ユーザーがログオン/ログオフしても実行が続けられる(-Xrsオプションがないと、ユーザーがログオフすると、プルグラムが終了してしまう)。終了するには[タスクの終了]を実行すればよい。
なお、「-X」で始まるオプションは非標準であり、バージョンアップに伴って変更される可能性がある。利用の際には、あらかじめ「java -X」などでXオプションが利用できることを確認していただきたい。
|
この記事と関連性の高い別のWindows TIPS |
|
generated by
|
|
Windows Server Insider フォーラム 新着記事
RSSフィード

アイティメディアの提供サービス
ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)
スキルアップ/キャリアアップ(JOB@IT)