2009-07-28 8 views
1

私はTomcat 6.20インスタンスを実行しており、バックグラウンドスレッド経由でメールを送信して、メール送信機能が要求をブロックしないようにしたいと考えています。tomcatのバックグラウンドスレッド

通常のページフローを発生させながら、バックグラウンドでスレッドを実行する方法はありますか。

このアプリケーションは、ICEfacesで書かれています。

ありがとうございました。

答えて

3
  1. コントローラ/サーブレットの初期化メソッドでjava.util.concurrent.Executors.newCachedThreadPool(または他のファクトリメソッドの1つ)を使用してExecutorを作成します。
  2. リクエストが来た、java.lang.Runnable
  3. にメール送信ロジックをラップこれは、バックグラウンドで送信を行いますExecutor

Runnableを提出してください。起動時に単一のExecutorを作成し、すべての要求を共有することを忘れないでください。毎回新しいエグゼキュータを作成しないでください(ただし、少し遅くて無駄です)。

+0

これはj.u.c.Executors.newCachedThreadPool(sを含む)である必要がありますが、それ以外は:agree – WMR

+0

ありがとうございます。一定。 – skaffman

+0

チップのおかげで。実装例がありますか? – RaelG

0

私は方法を見つけました。これらのタグ

@PostConstruct() 

@PreDestroy() 

はvoidを返すサーブレットで2つのメソッドを作成し、パラメータを受け入れません。 最初のメソッドのすぐ上に1番目のタグを配置し、2番目のタグの上に2番目のタグを配置します。

タグのエッセンス

実装したクラスは、Webサービスのクライアントへの応答を開始する前に@PostConstructメソッドがコンテナによって呼び出されます。

@PreDestroyメソッドは、エンドポイントが操作から削除される前にコンテナによって呼び出されます。

PostConstruction()メソッド内では、runnableインターフェイスを使用してスレッドを作成し、特定のブール変数の値がfalseでない限り無限ループで実行させます。

PreDestroy()メソッドを使用してブール変数をfalseに設定します。

関連する問題