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で質問しましょう!
似たような質問が見つかりました
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- Java Javaで個人ブログサイトを作りたい 7 2022/04/03 17:37
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
- HTML・CSS Web font 会社のホームページを作成についてですが、webフォントを使用することを検討しており 4 2022/11/04 10:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
進学校通ってたんですけど、眼...
-
USBのデバイスクラスの違いにつ...
-
同一パッケージにあるクラスが...
-
グローバルIPとプライベートIP...
-
自作のクラスファイルがインポ...
-
「天声人語」をインターネット...
-
ベクターワークスでの【クラス...
-
3年間同じクラスになる確率
-
包丁の切れ味
-
IPアドレスのクラスAを取得して...
-
dllと同じプロジェクトにする方法
-
河合塾
-
同じパッケージ、クラス名が含...
-
UMLのクラス図はmain()も含むん...
-
「囲うインスタンス」のエラー...
-
共通で使う関数を集めたクラス...
-
どこからも呼ばれていない無意...
-
tomcat上でのpropertiesファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の重複する値とその個数を...
-
「天声人語」をインターネット...
-
java eclipse 型に解決できません
-
グローバルIPとプライベートIP...
-
ポータブル電源を買おうと思う...
-
容姿について
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
UMLのクラス図はmain()も含むん...
-
同一パッケージにあるクラスが...
-
main()を持つクラスが2つ以上...
-
1 つのヘッダファイルに複数の...
-
アルキメデスの大戦の櫂はなぜ2...
-
dllと同じプロジェクトにする方法
-
IPアドレスの3バイト目の呼び方
-
3年間同じクラスになる確率
-
重複エラーを解決するには
-
同じパッケージ、クラス名が含...
-
コンボボックスのマウスホイー...
-
同じクラスにならない確率を教...
おすすめ情報