TSCRootAcceptor(Java)
TSCRootAcceptorはシステム提供クラスです。
TSCRootAcceptorは,サーバオブジェクトの実行空間を表現するオブジェクトです。クライアント側からのTSCユーザオブジェクト呼び出し要求を受け付けて,適切なTSCユーザアクセプタに振り分けます。また,パラレルカウント(常駐するスレッド数)に合わせてスレッドを管理します。
ユーザは,クライアント側にサービスを提供するTSCユーザオブジェクトの実行空間を構築するときに,サーバアプリケーション内でTSCRootAcceptorクラスのインスタンスを生成します。次にTSCRootAcceptorの特徴を示します。
TSCAcceptorの登録
TSCObjectの実行空間の構成
TSCRootAcceptorの実行空間でTSCObjectを実行させる場合,例えば,TSCRootAcceptorの管理するスレッド上でTSCObjectを実行させる場合,そのTSCObjectに対応するTSCAcceptorをTSCRootAcceptorに登録します。TSCRootAcceptorには複数のTSCAcceptorを登録できます。
提供するサービスの管理
TSCRootAcceptorには複数のTSCAcceptorを登録できます。TSCRootAcceptorは,各TSCAcceptorの複数のTSCサービス識別子を集め,かつ,重複を削除したものを属性として管理します。TSCRootAcceptorが提供できるサービスの種類は,このTSCサービス識別子によって表現されます。つまり,TSCサービス識別子の列で表されるサービスを提供することになります。
TSCルートアクセプタ状態
TSCルートアクセプタ状態ごとのスレッドの管理方式
TSCルートアクセプタ状態にはactive状態とnon-active状態の2種類があります。各状態の遷移中の場合も含めて,それぞれの状態のときのスレッドの管理方式を次に示します。
active状態での障害通知
サーバアプリケーション内やTSCデーモンとの接続に障害が発生してスレッドが存続できなくなる場合,そのスレッド上でオブジェクト管理終了通知をTSCAcceptorに渡します。その後,そのスレッドを削除します。なお,このときはまだactive状態です。
障害が解除されると,再度,スレッドを生成します。その後,そのスレッド上でオブジェクト管理開始通知をTSCAcceptorに渡します。つまり,障害が発生してから解除されるまでの間は,TSCRootAcceptorは,スレッド数がパラレルカウント(常駐するスレッド数)以下の状態で存続します。
TSCルートアクセプタ登録名称
TSCRootAcceptorがactive状態に遷移すると,TSCRootAcceptorと関連づけられているTSCServerにTSCルートアクセプタ登録名称が登録されます。以降,クライアント側のメソッド呼び出し要求がTSCRootAcceptorに振り分けられるようになります。
TSCRootAcceptorをactive状態に遷移させるときに,TSCルートアクセプタ登録名称を指定することもできます。activateの呼び出し時に,TSCルートアクセプタ登録名称を指定する場合と指定しない場合について,それぞれ次に示します。
また,同じTSCルートアクセプタ登録名称で,TSCRootAcceptorを同じTSCデーモンに登録できます。同じTSCルートアクセプタ登録名称で登録した場合,スケジュール用キュー(配送機構)が共有されます。ただし,スケジュール用キューを共有する場合,登録するTSCRootAcceptor間で提供できるサービス内容が一致している必要があります。つまり,同じTSCルートアクセプタ登録名称で登録するTSCRootAcceptorは,同じTSCサービス識別子の列を持っている必要があります。
TSCユーザスレッドファクトリによるTSCユーザスレッドの管理
TSCThreadFactoryを引数としてTSCRootAcceptorを生成した場合を前提にします。この場合,TSCRootAcceptorは,non-active状態からactive状態に遷移する過程でスレッドを生成したあと,TSCThreadFactoryのcreateを呼び出して,戻り値であるTSCThreadをそのスレッドに割り当てます。また,active状態からnon-active状態に遷移する過程で,スレッドごとに割り当てたTSCThreadを引数にTSCThreadFactoryのdestroyを呼び出したあと,スレッドを削除します。
形式
package JP.co.Hitachi.soft.TPBroker.TSC;
public class TSCRootAcceptor
{
public static TSCRootAcceptor create(TSCServer tsc_server);
public static TSCRootAcceptor create(TSCServer tsc_server,
TSCThreadFactory tsc_thr_fact);
//TSCAcceptorの追加
public int registerAcceptor(TSCAcceptor tsc_acpt);
//TSCAcceptorの削除
public void cancelAcceptor(int reg_id);
//パラレルカウントの設定
public void setParallelCount(int p_count);
public int getParallelCount();
//TSCRootAcceptorの活性化
public int activate();
public int activate(String rt_acpt_req_name);
//TSCRootAcceptorの非活性化
public int deactivate();
};
インポートクラス
import JP.co.Hitachi.soft.TPBroker.TSC.TSCRootAcceptor;
メソッド
●public static TSCRootAcceptor create(TSCServer tsc_server)
項目 | 型・意味 | |
---|---|---|
引数 | TSCServer tsc_server | 接続したTSCServer |
戻り値 | 生成されたTSCRootAcceptor | |
例外 | TSCBadParamException TSCNoMemoryException |
tsc_serverと関連づけられた,TSCRootAcceptorオブジェクトを生成します。
引数で渡すTSCServerの解放責任はユーザにあるので,適切な状態のときに解放してください。
なお,このメソッドを複数のスレッド上から同時に呼び出せます。
●public static TSCRootAcceptor create(TSCServer tsc_server,
TSCThreadFactory tsc_thr_fact)
項目 | 型・意味 | |
---|---|---|
引数 | TSCServer tsc_server | 接続したTSCServer |
TSCThreadFactory tsc_thr_fact | TSCユーザスレッドファクトリ | |
戻り値 | 生成されたTSCRootAcceptor | |
例外 | TSCBadParamException TSCNoMemoryException |
tsc_serverと関連づけられた,tsc_thr_factを保持するTSCRootAcceptorオブジェクトを生成します。
引数で渡すTSCServerの解放責任はユーザにあるので,適切な状態のときに解放してください。
なお,このメソッドを複数のスレッド上から同時に呼び出せます。
●public int registerAcceptor(TSCAcceptor tsc_acpt)
項目 | 型・意味 | |
---|---|---|
引数 | TSCAcceptor tsc_acpt | 登録するTSCAcceptor |
戻り値 | TSCユーザアクセプタの登録識別子 | |
例外 | TSCBadParamException TSCNoPermissionException |
TSCAcceptorを登録します。activeの状態のときは登録できません。
●public void cancelAcceptor(int reg_id)
項目 | 型・意味 | |
---|---|---|
引数 | int reg_id | 削除するTSCの登録識別子 |
戻り値 | ありません。 | |
例外 | TSCBadParamException TSCNoPermissionException |
TSCAcceptorの登録を削除します。reg_idにはregisterAcceptorで戻された値を指定してください。activate状態のときは登録を削除できません。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●public void setParallelCount(int p_count)
項目 | 型・意味 | |
---|---|---|
引数 | int p_count | パラレルカウント |
戻り値 | ありません。 | |
例外 | TSCBadParamException TSCNoPermissionException |
パラレルカウント(常駐するスレッド数)を設定します。
サーバアプリケーションの開始時にコマンドオプション引数-TSCParallelCountを指定しない場合,パラレルカウントのデフォルト値は"1"です。コマンドオプション引数-TSCParallelCountを指定する場合は,パラレルカウントのデフォルト値はその指定値となります。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●public int getParallelCount()
項目 | 型・意味 |
---|---|
戻り値 | パラレルカウント |
パラレルカウント(常駐するスレッド数)を取得します。
なお,このメソッドを複数のスレッド上から同時に呼び出せます。
●public int activate()
項目 | 型・意味 |
---|---|
戻り値 | 常に0 |
例外 | TSCBadInvOrderException TSCCommFailureException TSCInternalException TSCNoMemoryException TSCNoPermissionException TSCNoResourcesException ユーザが通知する各種例外 |
デフォルトのTSCルートアクセプタ登録名称で,active状態に遷移します。
サーバアプリケーションの開始時に指定するコマンドオプション引数-TSCRootAcceptorを指定しない場合,TSCルートアクセプタ登録名称のデフォルト値は"default"です。コマンドオプション引数-TSCRootAcceptorを指定した場合,TSCルートアクセプタのデフォルト値はその指定値となります。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●public int activate(String rt_acpt_req_name)
項目 | 型・意味 | |
---|---|---|
引数 | String rt_acpt_req_name | TSCルートアクセプタの登録名称 |
戻り値 | 常に0 | |
例外 | TSCBadInvOrderException TSCBadParamException TSCCommFailureException TSCInternalException TSCNoMemoryException TSCNoPermissionException TSCNoResourcesException ユーザが通知する各種例外 |
指定したTSCルートアクセプタ登録名称で,active状態に遷移します。rt_acpt_nameに文字列を指定する場合,1~31文字で指定してください。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
●public int deactivate()
項目 | 型・意味 |
---|---|
戻り値 | ありません。 |
例外 | TSCBadInvOrderException TSCCommFailureException TSCInternalException TSCNoMemoryException TSCNoPermissionException |
deactive状態に遷移します。
なお,このメソッドを複数のスレッド上から同時に呼び出すことはできません。
TSCRootAcceptorの生成
TSCServerを引数に指定したTSCRootAcceptorのcreateで生成します。
マルチスレッド環境でのメソッド呼び出し規則
マルチスレッド環境で,TSCRootAcceptorクラスのインスタンスのメソッドを呼び出す規則を次に示します。
メソッド | 複数のスレッド上からの同時呼び出し |
---|---|
create(TSCServer) | ○ |
create(TSCServer, TSCThreadFactory) | ○ |
registerAcceptor | × |
cancelAcceptor | × |
setParallelCount | × |
getParallelCount | ○ |
activate() | × |
activate(String) | × |
deactivate() | × |
インスタンスの内部参照(アクセス)規則
TSCRootAcceptorクラスのインスタンスがほかのクラスのインスタンスを内部参照(アクセス)する規則を次に示します。
メソッド | 内部参照 |
---|---|
registerAcceptor | ありません。 |
cancelAcceptor | ありません。 |
setParallelCount | ありません。 |
getParallelCount | ありません。 |
activate() | 生成時に指定されたTSCServer型のインスタンス 登録されているTSCAcceptor型のインスタンス |
activate(String) | 生成時に指定されたTSCServer型のインスタンス 登録されているTSCAcceptor型のインスタンス |
deactivate() | 生成時に指定されたTSCServer型のインスタンス 登録されているTSCAcceptor型のインスタンス |
active状態 | registerAcceptorの引数で指定されたTSCAcceptor型のインスタンス(TSCRootAcceptorに登録されているTSCAcceptor型のインスタンス) |
インスタンスの公開メソッド呼び出し規則
TSCRootAcceptorクラスのインスタンスがほかのクラスのインスタンスの公開メソッドを呼び出す規則を次に示します。
メソッド | 公開メソッド呼び出し |
---|---|
activate() | 生成時に指定されたTSCThreadFactory型のインスタンス |
activate(String) | 生成時に指定されたTSCThreadFactory型のインスタンス |
deactivate() | 生成時に指定されたTSCThreadFactory型のインスタンス |
インスタンスへの内部参照(アクセス)規則
複数のスレッド上から同時に,TSCRootAcceptorクラスの同じインスタンスを内部参照できます。