2016-05-07 1 views
0

私はthorughサーブレットと呼ばれるJavaクラスを持っています。 サーブレットから呼び出されるJavaコードは、実行に1時間かかります。 サーブレットdoestは1時間待ってからもう一度リクエストを送信します。しばらくするとサーブレットがオフになる

だからこれを防ぐ方法。 Javaコード全体が実行されるまでサーブレットを待機させる方法は?

のJava EEを使用して長時間実行または非同期タスクを実装する方法を探しているときには、たくさんの情報を見つけるでしょう

+0

私はこれがサーブレットを使用する非現実的な方法だと感じます。あなたは結果を得るためにブラウザが1時間待つことを期待していますか?サーブレットがプロセスを開始する場合は問題ありませんが、ユーザーとサーブレットがそれを待つ必要がないように非同期で行う必要があります。 – stdunbar

+0

これは悪いデザインです。サーブレットがHTTP経由で呼び出されている場合は、平均180秒のHTTPタイムアウトになります。 – Lee

+0

それでは、ここに他の仕組みがありますか? 私はseprateスレッドの中でその関数を呼びましたか? これは機能していますが、機能には郵送の仕組みが2つあります。だから、2つのタイプのメールがあります。なぜ、2番目のメールがうまくいかないのか分かりません。なぜこれが起こっているのかという手がかりはありますか? – user3816859

答えて

0

を助けてください。

すでに言及したように、サーブレットはPOSTメソッドまたはgetメソッドでブロックしてはいけません。 シンプルなアプローチは、非同期ジョブIDをHTTPSessionにリンクし、クライアントがWebページを再ロードしたりサーブレットを再度呼び出すときに何らかのフィードバック/進行状況情報を提供することです。
その他のオプションは、バックエンドに複数のサーブレットコンテナ(アプリケーションサーバーの方向性を増やす)を必要とするJMSまたはメッセージ駆動型Beanです。

+0

私はスレッドでそのJava関数を呼び出しました。 – user3816859

+0

それは機能していますが、そこには2つの部分のコスポイザーがあります。だから、2つのタイプのメールがあります。なぜ、2番目のメールがうまくいかないのか分かりません。なぜこれが起こっているのかという手がかりはありますか? – user3816859

+0

問題はおそらく電子メールを送信することに関連しています。個人的に私はロギング(例外を捕まえて...)を強化し、メールプロセスを稼働させようとします。 –

関連する問題