
No.3ベストアンサー
- 回答日時:
>10分ぐらいかかるbatch処理を動かしたいのですが、
>ブラウザを砂時計にしたくない為、非同期にバックグラウンドでbatch処理を動かそうと思いRuntime.exec()を使用しようと思ったのですが、
Threadを使って別スレッドで処理をするのが普通だと思います。
Runtime.exec()を使うのも一つの手ではありますが、
リクエストの度にプロセスが生成されてしまうので、
サーバに負荷がかかります。
ServletのdoGetやdoPostなどで、スレッドを生成して、生成されたThreadの中で、時間のかかる処理を
行なえば、良いと思います。
No.2
- 回答日時:
> 1つのjavaクラスを、サーブレットから、
> Runtime.getRuntime().exec()
> で実行したい
この設計自体を考え直すことができれば
それが一番良いと思うのですが、
どうしてもやりたい、または一応やり方を知りたい、
というのであれば、
Runtime.exec() で実行可能なクラスは、
どこか場所を決めて、そこに配置するようにして、
Runtime.exec() を実行するクラスを
コンテキストのクラスローダを親とする
新しいクラスローダによってロードし、
リフレクションでブートする、
というのがきれいな気がします。
この回答への補足
やりたいことは、ブラウザで送信ボタンを押し、
10分ぐらいかかるbatch処理を動かしたいのですが、
ブラウザを砂時計にしたくない為、非同期にバックグラウンドでbatch処理を動かそうと思いRuntime.exec()を使用しようと思ったのですが、一般的な手法ではないのでしょうか?
>> 1つのjavaクラスを、サーブレットから、
>> Runtime.getRuntime().exec()
>> で実行したい
>この設計自体を考え直すことができれば
>それが一番良いと思うのですが、
ご忠告ありがとうございます。設計変更は可能ですがどうすれば良いでしょうか?
No.1
- 回答日時:
Tomcatのバージョンが分かりませんが、参考URLにあるような形
でクラスパスが参照されます。
ちなみに、web.xmlにはクラスパスは指定しません。
具体的には
1.WEBアプリケーション用クラスパス
WEB-INF/classとWEB-INF/lib
2.Sharedディレクトリ
Tomcatインストールディレクトリ/server/classes
Tomcatインストールディレクトリ/server/lib
3.Commonディレクトリ
Tomcatインストールディレクトリ/common/classes Tomcatインストールディレクトリ/common/lib
4.System用クラスパス
CLASSPATH環境変数で指定されるディレクトリ
5.Bootstrapクラスパス
JAVA_HOME/jre/lib/ext
の順番でクラスが検索されます。
なお、System用クラスパスですが、Tomcatインストールディレクトリ
の中のsetclasspath.batというバッチが実行されるので、
Tomcatの起動時に、環境変数に指定している値は上書き
されてしまいます。
もし、Runtime.getRuntime().exec() でJavaを起動するので
あれば、このsetclasspath.batを修正しないと駄目ではないでしょうか?
参考URL:http://jakarta.apache.org/tomcat/tomcat-4.1-doc/ …
Tomcatは4.1.16を使っています。
setclasspath.bat
の存在は知りませんでしたので、
デフォルトではCLASSPATH環境変数は
上書きされてしまうようですね。
クラスパス検索順も参考になりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヒグマを撃退
-
命名規約は連番でいいのか?
-
配列の重複する値とその個数を...
-
EclipseでJSPのコンパイルエラー
-
UMLのクラス図はmain()も含むん...
-
そんなにお金がなくても年に1度...
-
標準モジュールとクラスモジュ...
-
packageとimport の違いって?
-
同じパッケージ、クラス名が含...
-
Eclipseでのクラス作成について
-
数学の計算問題。 3年間同じク...
-
Cstring(日本語含む)をcharに...
-
定数はどこでまとめますか?
-
Sub-LVDS規格とは
-
main()を持つクラスが2つ以上...
-
河合塾のクラス分けについて
-
javaのコンパイルができません...
-
同じクラスにならない確率を教...
-
皆さんはクラス替えしたくない...
-
どういう処理でしょう?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java eclipse 型に解決できません
-
どこからも呼ばれていない無意...
-
EclipseでJSPのコンパイルエラー
-
そんなにお金がなくても年に1度...
-
複数のクラスで共通した関数を...
-
dllと同じプロジェクトにする方法
-
恋愛
-
UMLのクラス図はmain()も含むん...
-
僕の出身中学校は200人同級生が...
-
配列の重複する値とその個数を...
-
同一パッケージにあるクラスが...
-
IPアドレスの3バイト目の呼び方
-
標準モジュールとクラスモジュ...
-
main()を持つクラスが2つ以上...
-
eclipse でクラスに色
-
共通で使う関数を集めたクラス...
-
VBAもしくはVB6:クラスの中で...
-
Cstring(日本語含む)をcharに...
-
IPアドレスのクラスAを取得して...
-
コンボボックスのマウスホイー...
おすすめ情報