4.8.1 スケジュール機能の概要
スケジュール機能は,RPC通信機能によって受信したRPC要求電文をJ2EEサーバで効率良く処理するための機能です。TP1/Server Baseのスケジュールサービスの一部の機能に相当します。
TP1インバウンドアダプタでのスケジュール機能の位置づけを次の図に示します。
スケジュール機能は,次の要素で構成されます。
-
RPC通信機能によって受信したRPC要求を保持するキューです。RPC要求は,FIFO方式で保持します。
スケジュールキューは,Message-driven Bean(サービス)開始時にMessage-driven Bean(サービス)ごとに一つ作成され,Message-driven Bean(サービス)の終了時に削除されます。
-
Message-driven Bean(サービス)実行制御スレッド
スケジュールキューからRPC要求を取り出して,空いているMessage-driven Bean(サービス)呼び出しスレッドに処理を委譲します。
Message-driven Bean(サービス)実行制御スレッドは,Message-driven Bean(サービス)開始時に,Message-driven Bean(サービス)ごとに一つ作成され,Message-driven Bean(サービス)の終了時に削除されます。
-
Message-driven Bean(サービス)呼び出しスレッド
Message-driven Bean(サービス)を実行するスレッドです。Connector 1.5仕様に準拠したWorkManagerによって管理されます。
Message-driven Bean(サービス)実行制御スレッドがRPC要求をスケジュールキューから取り出して受け付けたときにWorkManagerによって割り当てられます。
RPC応答後は,Message-driven Bean(サービス)呼び出しスレッドはWorkManagerに返されます。WorkManagerが管理するスレッドは,TP1インバウンドアダプタを開始したときに生成され,TP1インバウンドアダプタ終了時に削除されます。
スレッドの詳細については,「4.8.3 Message-driven Bean(サービス)の同時実行数の制御」を参照してください。
-
業務処理を実行するサービスとなるMessage-driven Beanです。OpenTP1のSPPに相当します。
スケジュール機能の処理の流れを次に示します。
-
Message-driven Bean(サービス)を開始した時に,Message-driven Bean単位にスケジュールキューおよびMessage-driven Bean(サービス)実行制御スレッドが作成されます。
-
RPC通信機能でのRPC要求受信後,受信したRPC要求はスケジュールキューに格納されます。
-
スケジュールキューに格納されたRPC要求がMessage-driven Bean(サービス)実行制御スレッドによって取り出されます。このタイミングで,Connector 1.5仕様に準拠したWorkManagerによって,Message-driven Bean(サービス)呼び出しスレッドが割り当てられます。
-
Message-driven Bean(サービス)実行制御スレッドがMessage-driven Bean(サービス)呼び出しスレッドにRPC要求を委譲します。
-
Message-driven Bean(サービス)呼び出しスレッドによって,Message-driven Beanが実行されます。
なお,TP1インバウンドアダプタでは,OpenTP1の機能であるスケジュールの優先順位(ユーザサービス定義のschedule_priority)を指定したRPC要求を受信した場合も,優先順位は無視します。優先順位を指定したRPC要求を受信した場合も,優先順序が設定されていないRPC要求と同じように扱い,受信した順番で処理を実行します。
スケジュール機能では,これらの処理をする際に,次の項目を制御できます。
-
スケジュールキューの制御
-
Message-driven Bean(サービス)の同時実行数の制御
-
サービス実行のタイムアウト