0

Webアプリケーションで非同期的にいくつかのタスクを実行したい。私の質問は、コンテナ管理環境でどのSpring Execution Executorを使用すべきかです。コンテナ管理環境でSpringを使用した非同期タスクの実行

私はSpringのドキュメントの​​章を参照し、いくつかのオプションを見つけました。

私が考えているオプションは、WorkManagerTaskExecutorです。これは非常にシンプルで、現在使用しているIBM Websepherサーバーとシームレスに連携しますが、これはIBM WebsphereとOracle Weblogicサーバーに固有のものです。 Jettyコンテナ&を使用している一部のテスト地域や地域では、この実装でJettyでコードを実行する際に問題が発生するため、コードを特定の実装に具体的に関連付ける必要はありません。

その他のオプションSimpleThreadPoolTask​​Executorは、コンテナ管理環境でスレッドプールを利用するのに最適ではないようで、新しいスレッドを自分で作成したくありません。

私はこれについてどうすればよいかお勧めします。サンプル実装へのポインタは大きな助けになります。

答えて

0

通常通り、それは異なります。コンテナのスレッド管理に頼っていて、管理インターフェイスでスレッドプールを設定したい場合、またはアプリケーションがコンテナ内の唯一のアプリケーションでない場合や、EJBまたはJMSのスレッドプール優先順位の設定WorkManagerTaskExecutorのサポートを追加して構成可能にする必要があります。もしそうでなければ、あなたは最終スレッドが単なるスレッドであるために必要なものを使用することができます。 SpringはIOCコンテナなので、実行できます。どこでも同じアプリを使用するには、アプリのバージョンごとにXML設定を変更することはお勧めしません。むしろ

  1. 使用profilesconfigurationでは、エグゼキュータのタイプを設定し、Java設定内の適切なBeanタイプを戻します。 Jettyを使用する場合は、スレッドプールサイズを調整できるように設定する必要があります。

  2. spring boot like auto configurationを使用します。これらは通常、クラスパス(@ConditionalOnClass)で使用可能なクラスに依存します。お使いのWebLogicやWebSphere固有のクラスが利用できるか、ENV変数のような他の容器の特定のものであれば、あなたはこれらの両方でWorkManagerTaskExecutor

を作成することができ、あなたはどこでも同じ戦争を展開することができます。

関連する問題