5.2. Bean スレッドプール

デフォルトでは、default という名前の bean スレッドプールは非同期 EJB 呼び出しと EJB タイマーに使用されます。

注記

JBoss EAP 7 以降のリリースでは、リモート EJB リクエストはデフォルトで io サブシステムに定義されたワーカーで処理されます。

必要な場合は、各 EJB サービスが異なる bean スレッドプールを使用するよう設定することができます。これは、各サービスによる bean スレッドプールへのアクセスをより細かく制御する場合に便利です。

適切なスレッドプールサイズを判断するとき、想定される同時リクエストが 1 度に処理される数を考慮してください。

5.2.1. Bean スレッドプールの作成

ここでは、管理 CLI を使用して新たに bean スレッドプールを作成する方法を説明します。また、管理コンソールを使用して bean スレッドプールを設定することもできます。 この場合、Configuration タブで EJB サブシステムを選択し、左側のメニューで ContainerThread Pool とを選択します。

新しいスレッドプールを作成するには、以下のコマンドを使用します。

/subsystem=ejb3/thread-pool=POOL_NAME:add(max-threads=MAX_THREADS)

以下の例は、最大 30 個のスレッドを持つ my_thread_pool という名前の bean スレッドプールを作成します。

/subsystem=ejb3/thread-pool=my_thread_pool:add(max-threads=30)

5.2.2. 特定の Bean スレッドプールを使用するよう EJB サービスを設定

特定の bean スレッドプールを使用するよう、EJB3 非同期呼び出しサービスおよびタイマーサービスをそれぞれ設定することができます。デフォルトでは、これらのサービスは default bean スレッドプールを使用します。

ここでは、管理 CLI を使用して、特定の beanスレッドプールを使用するよう上記の EJB サービスを設定する方法を説明します。また、管理コンソールを使用してこれらのサービスを設定することもできます。 この場合、Configuration タブで EJB サブシステムを指定し、Services タブを選択して該当するサービスを選択します。

特定の bean スレッドプールを使用するよう EJB サービスを設定するには、以下のコマンドを使用します。

/subsystem=ejb3/service=SERVICE_NAME:write-attribute(name=thread-pool-name,value=THREAD_POOL_NAME)

SERVICE_NAME は、以下のように設定する EJB サービスに置き換えてください。

  • EJB3 非同期呼び出しサービスの場合は async
  • EJB3 タイマーサービスの場合は timer-service

以下の例は、my_thread_pool という名前の bean スレッドプールを使用するよう EJB3 非同期サービスを設定します。

/subsystem=ejb3/service=async:write-attribute(name=thread-pool-name,value=my_thread_pool)