スレッド管理と Spring Framework

管理対象外スレッドに関係する潜在的な問題を回避するために、以下のセクションの情報を使用してください。

管理対象外スレッド

以下の理由から、管理対象外スレッドを作成可能性のあるシナリオは使用しないでください。
  • アプリケーション・サーバーは管理対象外スレッドを認識しません。
  • 管理対象外スレッドには Java™ EE コンテキスト情報へのアクセス権限がありません。
  • 管理対象外スレッドは、アプリケーション・サーバーに監視されずにリソースを使用できます。
  • 管理対象外スレッドは、アプリケーション・サーバーの機能 (例えば、正常シャットダウンや障害からのリソースのリカバリー) に悪影響を与える可能性があります。
  • 管理者は管理対象外スレッドの数、または管理対象外スレッドによるリソースの使用を制御できません。
以下のシナリオは、回避すべき Spring Framework シナリオの例です。
  • registerShutdownHook

    Spring Framework の AbstractApplicationContext クラスとそのサブクラスは使用しないでください。これらのクラスに含まれるパブリック・メソッド registerShutdownHook は、スレッドを作成してそのスレッドを Java マシン (JVM) に登録し、シャットダウン時に実行してアプリケーション・コンテキストを閉じます。代わりに、アプリケーションは、アプリケーション・サーバー・コンテナーから受信するライフサイクル通知を使用して、明示的にアプリケーション・コンテキストの close メソッドを呼び出すことができます。

  • WeakReferenceMonitor

    Spring Framework は、EJB コンポーネントの開発を簡略化するための便利なクラスを提供しています。ただし、これらの便利なクラスでは、WeakReferenceMonitor オブジェクトがクリーンアップに使用する管理対象外スレッドが生成されます。

スレッド・プーリング

WebSphere® Application Server は、非同期作業を実行するための Spring Framework の WorkManagerTaskExecutor クラスの使用をサポートしています。

WorkManagerTaskExecutor クラスは、アプリケーション・サーバーによって管理されるスレッド・プールを使用し、構成済みの WorkManager インスタンスに委任します。作業マネージャーの構成については、関連トピックを参照してください。

Spring Framework で提供されているその他の TaskExecutor クラスは使用しないでください。それらのクラスは管理対象外スレッドを開始することがあります。

構成済み作業マネージャーの Java Naming and Directory Interface (JNDI) 名を workManagerName プロパティーとして使用すると、Spring 構成で WorkManagerTaskExecutor インスタンスを定義できます。次の例では、アプリケーション・サーバーの DefaultWorkManager の JNDI 名、すなわち wm/default が使用されています。
<bean id="myTaskExecutor"
  class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
  <property name="workManagerName" value="wm/default" />
	</bean>

スケジューリング

Spring Framework の CommonJ WorkManager スケジューリング・パッケージを使用すると、アプリケーション・サーバーによって管理されるスレッドを操作できます。Quartz スケジューラーや Java SE Development Kit (JDK) 内の Timer などの他のパッケージは使用しないでください。これらは管理対象外スレッドを開始する可能性があります。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_design
ファイル名:cspr_design.html