- PR -

サーバー側で設定を行わないバッチ起動について

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 2004-08-21 09:43

はじめまして。
初心者matsu_onです。

現在Jsp、Servlet、MySqlでホームページを作成しておりましてデータ件数が多い場合を想定してJavaバッチ処理を行うことを考えております。
レンタルスペースを使用しておりサーバー側でパスを通すなどできないため、Javaのバッチ処理は朝6時に訪問者がTopページを開いたときにServletにより実行するように考えております。

ここで、サーバー側でパスの設定などを行わず別プロセスでJavaのバッチを起動させる方法などはないのでしょうか?
getRuntime()などを調べてみたのですが、バッチにパスが通ってないとファイルが見つからないというエラーがでてしまうとのことです。

ご教授お願いします!!m(_ _)m
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2004-08-21 10:32
Jakarta Antを使ってみてはいかがでしょうか。
Antタスクは、コマンドラインorJavaプログラム上より呼び出すことが可能です。タスクはデフォルトで多数提供されていますが、"java"コマンドを呼び出すタスクも含まれています。

_________________
Kan Ogawa
k-ogawa@users.sourceforge.jp
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-08-21 10:41
javaが使えるレンタルサーバなのに、JAVA_HOMEすら設定されてないんでしょうか?
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 2004-08-21 12:28
ご返答ありがとうございました

>>aaさん
もう一度
exec(String command,String[] envp,File dir)をためしてみたところ以下のようなエラーが出てしまいます

記述
Runtime.getRuntime.exec("%JAVA_HOME%\\bin",null,"C:\\Tomcat 5.0\\webapps\\public_html\\WEB-INF\\×××\\×××\\BatchSql.class")

エラー
public_html/WEB-INF/classes/classes/speedCheckerServlet.java:176: シンボルを解決できません。
シンボル: メソッド exec (java.lang.String,<nulltype>,java.lang.String)


どのように記述すればいいのでしょうか
初心者ですいませんm(_ _)m
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-08-21 21:52
実装がJavaなのであれば、別スレッドを生成してそこからJavaクラスを呼べばいいのでは?
わざわざVMをもう一つ起動する必要はないと思いますが。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-08-21 22:23
javax.servlet.ServletContextListenerをweb.xml登録して、
その実装クラスで、指定時刻になるまで待ってからバッチ処理を実行するスレッドを
起動したらどうでしょう?
サーブレットコンテナがTomcat3.3あたりだったりすると使えませんが・・・。

あと、Runtime#exec()の引数間違ってません?
exec(String, String[], File)はあってもexec(String, String[], String)はありませんよ。
未記入
常連さん
会議室デビュー日: 2004/08/21
投稿数: 41
投稿日時: 2004-08-22 13:47
ご返答ありがとうございました。

今回は時間の都合、antなどを勉強できないのでukさんにアドバイスをいただいたスレッドを使うことにしました。
画面を閉じてもスレッドで起動したバッチは処理を続けているなど、期待どおりの動作を得ることをできました。
ありがとうございました。
1

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