碧 - 拡張ポイント
拡張ポイントについて
midoriでは主な振る舞いを決めるコンポーネントは置き換え可能になっているので、ユーザがそれぞれのアプリケーション形態、環境にあわせてコンポーネントを入れ替える事ができます。
コンテナ
コンテナは、いわゆるDIコンテナなどのコンポーネント管理フレームワークと連携するための仕組みです。
サービスクラスのインスタンスは、このコンテナから取得されます。
コンテナを自作することにより、標準ではサポートしていないコンポーネント管理フレームワークとも連携することができます。
コンテナを実装する際には、jp.fores.midori.server.container.Containerインターフェースを実装したスレッドセーフなクラスを作成して下さい。
インターフェースで実装するメソッドは以下の通りです。
| メソッド名 | 説明 |
|---|---|
| init |
初期化処理を行います。 この処理はサーブレットのinit()メソッドのタイミングで呼ばれます。 |
| destroy |
終了処理を行います。 この処理はサーブレットのdestroy()メソッドのタイミングで呼ばれます。 |
| getObject |
クラス名に対応するオブジェクトを取得します。 この処理は主にサービスクラスのインスタンスを取得するために使われます。 |
プラグイン
midoriではRPC形式に応じた処理を行う仕組みとして、プラグイン方式を採用しています。
RPC形式1つ1つに対して、それに対応するプラグインを用意するという仕組みになっています。
プラグインを自作することにより、対応するRPC形式を増やしたり、標準でサポートしているRPC形式に対しても動作を変更したりすることがすることができます。
プラグインを実装する際には、jp.fores.midori.server.plugin.RPCPluginインターフェースを実装したクラスを作成して下さい。
インターフェースで実装するメソッドは以下の通りです。
| メソッド名 | 説明 |
|---|---|
| init |
初期化処理を行います。 この処理はサーブレットのinit()メソッドのタイミングで呼ばれます。 |
| destroy |
終了処理を行います。 この処理はサーブレットのdestroy()メソッドのタイミングで呼ばれます。 |
| handleRequest |
クライアントからのリクエストを処理し、レスポンスの出力までを一貫して行います。 ここでサービスクラスのメソッドの呼び出しの処理を実装して下さい。 |
フィルター
midoriはあくまでもアプリケーションサーバ上で動作するサーブレットをベースとしたフレームワークなので、フィルターによりリクエストやレスポンスの処理をカスタマイズできます。
midori特有のフィルターとしてjp.fores.midori.server.MidoriFilterがありますが、それ以外のフィルターとも共存することができます。
