Tomcat 6.20 インスタンスを実行しています。バックグラウンド スレッド経由でメールを送信して、メール送信機能がリクエストをブロックしないようにしたいと考えています。
通常のページ フローを発生させながら、スレッドをバックグラウンドで実行する方法はありますか。
アプリケーションはICEfacesで書かれています。
ありがとう。
Tomcat 6.20 インスタンスを実行しています。バックグラウンド スレッド経由でメールを送信して、メール送信機能がリクエストをブロックしないようにしたいと考えています。
通常のページ フローを発生させながら、スレッドをバックグラウンドで実行する方法はありますか。
アプリケーションはICEfacesで書かれています。
ありがとう。
Executor
コントローラー/サーブレットの初期化メソッドでusing java.util.concurrent.Executors.newCachedThreadPool
(または他のファクトリ メソッドのいずれか)を作成します。java.lang.Runnable
Runnable
するExecutor
これにより、バックグラウンドで送信が実行されます。起動時に 1 つの Executor を作成し、すべてのリクエストで共有することを忘れないでください。毎回新しい Executor を作成しないでください (できますが、少し遅くて無駄になります)。
私は抜け道を見つけました。これらのタグ
@PostConstruct()
と
@PreDestroy()
voidを返し、パラメータを受け入れない2つのメソッドをサーブレットに作成します。最初のタグを最初のメソッドのすぐ上に配置し、2番目のタグを2番目のタグのすぐ上に配置します。
@PostConstructメソッドは、実装クラスがWebサービスクライアントへの応答を開始する前にコンテナによって呼び出されます。
@PreDestroyメソッドは、エンドポイントが操作から削除される前にコンテナーによって呼び出されます。
PostConstruction()メソッド内で、実行可能なインターフェイスを使用してスレッドを作成し、特定のブール変数の値がfalseでない限り、無限ループで実行します。
PreDestroy()メソッドを使用して、ブール変数をfalseに設定します。