Artes eConnect for Supplierのアーキテクチャー
Artes eConnect for Supplier (以下eConnect)は、チェーンアーキテクチャーを採用しています。
チェーンアーキテクチャーとは、一連のリクエスト処理ロジックをリクエストハンドラとして登録して、それらを順次実行することで、クライアントからのリクエストを処理して、クライアントにレスポンスを返す構造をいいます。
チェーンはeconnect-config.xmlという名前の設定ファイルに記述されます。
設定ファイルには、グローバルオプションと呼ばれるグローバルな設定情報、リクエストハンドラの定義、チェーンを構成するリスナーの定義を記述します。
グローバルオプションは以下の形式で定義します。
<global-options>
<option-name>option-value</option-name>
</global-options>
イタリック体の部分が開発者が定義するオプションです。option-nameは一意な名前でなければなりません。
リクエストハンドラはチェーンの中で使用されるリクエスト処理を行うコンポーネントで、以下の形式で定義します。
<handler id="handler-id">
<class>handler.class.name</class>
[
<parameters>
<parameter
name="parameter-name">parameter-value</parameter>
....
....
</parameters>
]
</handler>
リクエストハンドラはリスナーによってidでアクセスされるため、id属性は必須かつ一意でなければなりません。
class要素にはリクエストハンドラのクラス名を設定します。
parametersにはそのリクエストハンドラが使用する設定パラメータを必要なだけ設定することができます。
リスナーの定義はチェーンの構成を示し、以下の形式で記述します。
<listener name="listener-name">
<handler-reference id="handler-id"/>
または
<handler-reference id="handler-id">
<parameters>
<parameter
name="parameter-name">parameter-value</parameter>
....
....
</parameters>
</handler-reference>
....
....
<interrupt-handler-reference id="handler-id"/>
または
<interrupt-handler-reference id="handler-id">
<parameters>
<parameter
name="parameter-name">parameter-value</parameter>
....
....
</parameters>
</handler-reference>
....
....
</listener>
リスナーには一連のリクエストハンドラへの参照を処理順に指定します。チェーンを実行するChainDispatcherはリクエストを処理するチェーンをリスナーの名前で参照するため、name属性は必須かつ一意でなければなりません。
handler-referenceは定義済みのhandlerを参照する定義で、handler定義のに含まれるパラメータをオーバーライドすることができます。handler-referenceにパラメータを定義しない場合は、handler定義のパラメータが使用されます。
interrupt-handler-referenceには、ChainInterruptExceptionがスローされたときに実行するリクエストハンドラーへの参照を指定します。リクエストハンドラは、処理の続行が不能な場合はChainAbortionExceptionをスローしますが、何らかのレスポンスをクライアントに返す必要がある場合は、ChainInterruptExceptionをスローして、チェーン処理が中断されたことを示すエラーレスポンスをクライアントに返すことができるように実装します。
|