はてなブックマーク  Yahoo!ブックマークに登録  印刷
Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

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オプションが利用できることを確認していただきたい。End of Article

この記事と関連性の高い別のWindows TIPS
タスク・スケジューラとWSHで定例処理を実現する
タスク・スケジューラをコマンド・プロンプトから制御する
タスク・ログ・ファイルの見方
[スタート]メニューに[ログオフ]項目を表示するには
Java VMをインストールする方法
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)

- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  New! ユニファイドコミュニケーションの肝とは
〜エンジニア・キャリア進化論(第8回)〜

  New! 仮想化によるサーバ統合の新常識≫第1回
マルチソケット型サーバが注目される理由

  New! 復旧可能地点を極限まで“直近”に
Windows環境のバックアップを見直す時期

  New! ネット通販のポテンシャルを見極める!
売れる商品、売れない商品の違いは何か

  New! CoolThreadsはDBサーバでも“有効”か?
「実環境に近い条件」で徹底的に検証した

  今や必要不可欠なWebアプリケーション
――最終テストはもう外せない!

  大規模解析モデルで効果を検証
クラスタHPCで【SSD】に大きな期待!

  【実践!SOA】継ぎ足しの既存システム
どこにどのように手を加えればいいの?

  転職した理由は「社風が合うと感じたから」
入社2カ月“勝ち組エンジニア”に話を聞く

  【第3回】開発期間もコストもぐっと
短縮できる!――ワザあり開発ツール

  クォーターラックから導入できる災害対策
“ハウジングサービス”の新常識とは?

  データ損失を経験した企業は50%以上――
いま“リカバリマネジメント”を考える

  反対する情シス社員をどう説得したのか?
10年前にメインフレームを撤廃した成功例

  初めての製品に不安を感じる甲山たち
――26年の歴史が物語る信頼性と実績

  サーバ担当者を物理的な作業から開放する
ホスティングの“パターンオーダー”とは

  【24時間365日】無償サポートを実現する
専用ホスティング、その秘訣とは?