0

Tomcat 6、Windows 7、64bit で実行されているサーブレットから外部 Java クラス ファイルを呼び出そうとしています。この件に関してはすでにいくつかのスレッドがありますが、どれも本当に私を助けてくれません.

参考までに、シェルから直接実行すると、これを正常に実行できました。

ProcessBuilderこのようなコマンドを実行するためにa を使用しています

 ProcessBuilder bp = new ProcessBuilder("cmd.exe","/C","java", "TheExternalClass", "ParameterA" });

作成した Process から errorStream と inputStream も消費しています。

サーブレットから実行すると、単に停止します。

たとえば、Javaコマンドをdirに切り替えると、期待どおりに機能するため、メモリに関係があるか、Tomcatから新しいJavaプロセスを起動する際の問題などに関係していると思われます。

これを解決する方法について、誰かがポインタまたは良いアイデアを持っていますか?

このトピックに関する他の投稿:

http://www.javaworld.com/jw-12-2000/jw-1229-traps.html?page=1

Tomcat サーバーの webapp から Java プログラムを呼び出す - Java プログラムは Tomcat サーバーの外にあります

Tomcat が外部 Java プログラムの実行に失敗する

読んでくれてありがとう。

4

1 に答える 1

1

上記のコードは機能し、サーブレットを停止しません。私の推測では、p.waitFor()後で呼び出すか、JSP スレッドでプロセスの出力ストリームを読み取るか、ブロックされます。

ブロックしたくない場合は、次の 2 つのオプションがあります。

  • AJAX を使用して、バックグラウンドで JSP をポーリングします。JSP は引き続きブロックされますが、ブラウザは使用できます。
  • 出力ストリームを読み取るバックグラウンド スレッドを作成します。これにより、JSP はすぐに戻りますが、プロセスの結果をブラウザに送信する方法を見つける必要があります。これは、サーバーで何が起こっているかがわからないためです。
于 2012-12-05T16:16:59.603 に答える