プロが教える店舗&オフィスのセキュリティ対策術

OSの環境変数で指定したclasspathと
Tomcatのクラスパスは違うようですが、
Tomcatの場合web.xmlに記述するのでしょうか?

1つのjavaクラスを、サーブレットから、
Runtime.getRuntime().exec()
で実行したい場合、Tomcatのweb.xmlなどにクラスパスを指定するのでなく、-classpathを指定した方が良いのでしょうか?

A 回答 (3件)

>10分ぐらいかかるbatch処理を動かしたいのですが、


>ブラウザを砂時計にしたくない為、非同期にバックグラウンドでbatch処理を動かそうと思いRuntime.exec()を使用しようと思ったのですが、

Threadを使って別スレッドで処理をするのが普通だと思います。
Runtime.exec()を使うのも一つの手ではありますが、
リクエストの度にプロセスが生成されてしまうので、
サーバに負荷がかかります。
ServletのdoGetやdoPostなどで、スレッドを生成して、生成されたThreadの中で、時間のかかる処理を
行なえば、良いと思います。
    • good
    • 0
この回答へのお礼

今回は頻度が少ないので大丈夫かと思いますが、
普通はTheredということで勉強してみます。
ありがとうございました。

お礼日時:2003/04/16 11:40

> 1つのjavaクラスを、サーブレットから、


> Runtime.getRuntime().exec()
> で実行したい

この設計自体を考え直すことができれば
それが一番良いと思うのですが、

どうしてもやりたい、または一応やり方を知りたい、
というのであれば、

Runtime.exec() で実行可能なクラスは、
どこか場所を決めて、そこに配置するようにして、
Runtime.exec() を実行するクラスを
コンテキストのクラスローダを親とする
新しいクラスローダによってロードし、
リフレクションでブートする、

というのがきれいな気がします。

この回答への補足

やりたいことは、ブラウザで送信ボタンを押し、
10分ぐらいかかるbatch処理を動かしたいのですが、
ブラウザを砂時計にしたくない為、非同期にバックグラウンドでbatch処理を動かそうと思いRuntime.exec()を使用しようと思ったのですが、一般的な手法ではないのでしょうか?

補足日時:2003/04/13 17:22
    • good
    • 1
この回答へのお礼

>> 1つのjavaクラスを、サーブレットから、
>> Runtime.getRuntime().exec()
>> で実行したい
>この設計自体を考え直すことができれば
>それが一番良いと思うのですが、
ご忠告ありがとうございます。設計変更は可能ですがどうすれば良いでしょうか?

お礼日時:2003/04/13 17:23

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/ …
    • good
    • 1
この回答へのお礼

Tomcatは4.1.16を使っています。
setclasspath.bat
の存在は知りませんでしたので、
デフォルトではCLASSPATH環境変数は
上書きされてしまうようですね。

クラスパス検索順も参考になりました。
ありがとうございます。

お礼日時:2003/04/13 17:14

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