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 サブシステムを選択し、左側のメニューで Container
新しいスレッドプールを作成するには、以下のコマンドを使用します。
/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)