dポイントプレゼントキャンペーン実施中!

イントラネット内のLinuxサーバにあるプログラムをクライアントPCのブラウザから
起動しそのプログラムが出力するログを一定周期でブラウザに表示して
プログラム終了時にはユーザーに知らせたい。
また、プログラムは同時起動が不可能なものとしたい。

PHPなどのCGIスクリプトでは、ブラウザとのセッションが切れてしまえば
サーバー側のプログラムは走りっぱなしになってしまいます。
外部プログラムの監視や排他制御を考えると非常に複雑な処理になることが
予想されます。

そこで質問なのですが、サーバーのプログラムの起動と監視をクライアントPCの
ブラウザから行いたいのですがJavaの技術を使うことで容易になりますか?
また、ブラウザを使わない通信プログラムを作成すれば可能となりますか?

詳しい方がいましたら教えて下さい。宜しくお願い致します。

A 回答 (2件)

・ブラウザを使うやり方としては Java を使っても使わなくてもやり方は大きく違わないでしょう。

起動したプロセスの状態を保持しておけるのでJava(Servletベース)は若干楽かもしれません。
・ブラウザを使わず通信プログラムを作成する方法では、ソケットやスレッドが標準で使える点で Java は他の言語に比べて容易かと思います。

システム前提や安全性などいくらでも安全な方に凝れますが、Java+Webベースで実装する簡単なアイディアを以下に書いておきます。

1. 起動要求があればProcessBuilderなどでProcessを起動しstatic変数に格納します。
2. ログ要求があればログファイルの内容を送信します。
3. 多重起動の防止は、まだプロセスが起動されていないこと(static変数がnull)、または、そのプロセスが終了していること(Process#exitValue()で例外が発生しない)で判断できます。
    • good
    • 0
この回答へのお礼

教えて頂いたJava+Webベースの方法をベースに検討してみたいと思います。
ご回答有難うございました。

お礼日時:2010/12/09 16:58

いろいろ手法はあるので、要件によってそれぞれのフェーズを分けて考えると良いのではないでしょうか。



・プログラムの起動
 →execとかで起動する

・プログラムの監視
 →psとかプロセスの監視をする
  tailとかでログの表示、画面をリフレッシュ
  プロセスが起動していなければ起動画面(終了画面?)を表示

・終了通知
 →プログラム終了時に通知をするだけならプログラムに組み込んでおけば充分では?
  単純に終了通知を発行する画面を作成するのでしょうか?
  或いは「終了確認ボタン」みたいなもので条件を満たしていれば通知するのでしょうか?
  
Javaでも良いし、CGI+シェルでも十分可能だと思います。
ただし、セキュリティ的にきちんとする必要があると思いますけどね。
    • good
    • 0
この回答へのお礼

ご回答有難うございました。

お礼日時:2010/12/09 16:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!