- - PR -
サーバー側で設定を行わないバッチ起動について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-21 09:43
はじめまして。 初心者matsu_onです。 現在Jsp、Servlet、MySqlでホームページを作成しておりましてデータ件数が多い場合を想定してJavaバッチ処理を行うことを考えております。 レンタルスペースを使用しておりサーバー側でパスを通すなどできないため、Javaのバッチ処理は朝6時に訪問者がTopページを開いたときにServletにより実行するように考えております。 ここで、サーバー側でパスの設定などを行わず別プロセスでJavaのバッチを起動させる方法などはないのでしょうか? getRuntime()などを調べてみたのですが、バッチにパスが通ってないとファイルが見つからないというエラーがでてしまうとのことです。 ご教授お願いします!!m(_ _)m |
|
投稿日時: 2004-08-21 10:32
Jakarta Antを使ってみてはいかがでしょうか。
Antタスクは、コマンドラインorJavaプログラム上より呼び出すことが可能です。タスクはデフォルトで多数提供されていますが、"java"コマンドを呼び出すタスクも含まれています。 _________________ Kan Ogawa k-ogawa@users.sourceforge.jp |
|
投稿日時: 2004-08-21 10:41
javaが使えるレンタルサーバなのに、JAVA_HOMEすら設定されてないんでしょうか?
|
|
投稿日時: 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 |
|
投稿日時: 2004-08-21 21:52
実装がJavaなのであれば、別スレッドを生成してそこからJavaクラスを呼べばいいのでは?
わざわざVMをもう一つ起動する必要はないと思いますが。 |
|
投稿日時: 2004-08-21 22:23
javax.servlet.ServletContextListenerをweb.xml登録して、
その実装クラスで、指定時刻になるまで待ってからバッチ処理を実行するスレッドを 起動したらどうでしょう? サーブレットコンテナがTomcat3.3あたりだったりすると使えませんが・・・。 あと、Runtime#exec()の引数間違ってません? exec(String, String[], File)はあってもexec(String, String[], String)はありませんよ。 |
|
投稿日時: 2004-08-22 13:47
ご返答ありがとうございました。
今回は時間の都合、antなどを勉強できないのでukさんにアドバイスをいただいたスレッドを使うことにしました。 画面を閉じてもスレッドで起動したバッチは処理を続けているなど、期待どおりの動作を得ることをできました。 ありがとうございました。 |
1
