碧 - 設定

各ファイルの設定内容

1.midori設定ファイル



<?xml version="1.0" encoding="UTF-8"?>
<config>
	<rootPackage>foo.bar</rootPackage>
	<container>jp.fores.midori.server.container.impl.BasicSingletonContainer</container>
	<plugins>
		<plugin type="amf" class="jp.fores.midori.server.plugin.impl.AmfPlugin" />
		<plugin type="java" class="jp.fores.midori.server.plugin.impl.JavaSerializePlugin" />
		<plugin type="json" class="jp.fores.midori.server.plugin.impl.JsonRPCPlugin" />
		<plugin type="xmlrpc" class="jp.fores.midori.server.plugin.impl.XmlRPCPlugin" />
		<plugin type="axmlrpc" class="jp.fores.midori.server.plugin.impl.ApacheXmlRPCPlugin" />
		<plugin type="hessian" class="jp.fores.midori.server.plugin.impl.HessianPlugin" />
		<plugin type="thrift" class="jp.fores.midori.server.plugin.impl.ThriftPlugin" />
	</plugins>
</config>

・rootPackage
 プロジェクトのルートパッケージです。
 このパッケージの配下がmidoriで呼び出しできる対象になります。

・container
 midoriフレームワークが利用するコンテナクラスです。
 (DIコンテナを利用しない場合はBasicSingletonContainerがお勧めです。)

クラス名 説明
jp.fores.midori.server.container.impl.BasicContainer 標準のコンテナクラスです。
毎回サービスクラスのインスタンスを生成します。
jp.fores.midori.server.container.impl.BasicSingletonContainer 標準のコンテナクラスです。
一度生成したサービスクラスのインスタンスを毎回使いまわします。
jp.fores.midori.server.container.impl.GuiceContainer Guice(http://code.google.com/p/google-guice/)と連携するコンテナクラスです。
jp.fores.midori.server.container.impl.S2Container Seasar2(http://s2container.seasar.org/2.4/ja/)と連携するコンテナクラスです。
jp.fores.midori.server.container.impl.SpringContainer Spring(http://www.springsource.org/)と連携するコンテナクラスです。

・plugin
 各種RPC形式を利用するためのプラグイン。

タイプ(拡張子) クラス名 説明
amf jp.fores.midori.server.plugin.impl.AmfPlugin AMF(Actionscript Message Format)用のプラグイン。
おもにFlash、Flex、AIRなどで利用。
(詳細はhttp://en.wikipedia.org/wiki/Action_Message_Formatを参照)
java jp.fores.midori.server.plugin.impl.JavaSerializePlugin Javaシリアライズ用のプラグイン。
Javaのjava.io.Serializableの仕組みを使ったmidoriフレームワーク独自規格のバイナリ通信。
おもにJava、Androidなどで利用。 このプラグインを使うためには、RPC対象となるメソッドの引数・戻り値ともにjava.io.Serializableインターフェースを実装している必要がある。
json jp.fores.midori.server.plugin.impl.JsonRPCPlugin JSON-RPC用のプラグイン。
JSONPにも対応しています。
(詳細はhttp://json-rpc.org/を参照)
xmlrpc jp.fores.midori.server.plugin.impl.XmlRPCPlugin XML-RPC用のプラグイン。
(詳細はhttp://ja.wikipedia.org/wiki/XML-RPCを参照)
axmlrpc jp.fores.midori.server.plugin.impl.ApacheXmlRPCPlugin 拡張XML-RPC用のプラグイン。
(詳細はhttp://ws.apache.org/xmlrpc/を参照)
hessian jp.fores.midori.server.plugin.impl.HessianPlugin Hessian用のプラグイン。
(詳細はhttp://hessian.caucho.com/を参照)
thrift jp.fores.midori.server.plugin.impl.ThriftPlugin Thrift用のプラグイン。
(詳細はhttp://thrift.apache.org/を参照)

2.web.xml


・filter
 midoriを正常に使用するためには、以下のようにWEB-INF/web.xmlでMidoriFilterの設定を行う必要があります。
 設定内容は基本的にデフォルトのまま変更する必要はないはずですが、問題が発生した場合は環境に応じて変更して下さい。

<!--
	//==========================================================
	//フィルターの定義
	//==========================================================
 -->

	<!-- 碧(midori)用のフィルター -->
	<filter>
		<filter-name>midoriFilter</filter-name>
		<filter-class>jp.fores.midori.server.MidoriFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>expireCache</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>requestGZip</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>responseGZip</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>


<!--
	//==========================================================
	//フィルターマッピングの定義
	//==========================================================
 -->

	<!-- 碧(midori)用のフィルター -->
	<filter-mapping>
		<filter-name>midoriFilter</filter-name>
		<url-pattern>/rpc/*</url-pattern>
	</filter-mapping>

param-name param-value(例) 説明
encoding UTF-8 文字エンコーディングを指定します。
JSON-RPCなどの文字列を使うRPCの場合、この設定を正しく行わないと文字化けの原因となります。
通常はUTF-8を指定します。
expireCache true キャッシュの破棄を行うかどうかのフラグです。
このフラグがたっている場合、レスポンスヘッダに以下の内容を出力します。
  • Cache-Control: no-cache
  • Pragma: no-cache
  • Expires: Thu, 01 Jan 1970 00:00:00 GMT
キャッシュされるとサービスの呼出が正常に行われなくなる可能性があるので、通常はtrueを指定します。
requestGZip true リクエストをgzip展開するかどうかのフラグです。
このフラグがたっていて、かつリクエストヘッダの「Content-Encoding」ヘッダに「gzip」という内容が含まれている場合、リクエストデータをgzip展開しつつ読み込みます。
それ以外の場合は、リクエストデータを普通に読み込みます。
通常、クライアントからサーバーに送られるリクエストデータがgzip圧縮されていることはほぼありませんが、gzip圧縮を行える特殊なクライアントを使った場合は、この機能を利用することができます。
なお、GAEのようにリクエストのgzip展開が自動的に行われてしまう環境にも対応できるようになっています。

この機能を有効にすることにより、通信量を軽減することができますが、反面gzipの圧縮・展開処理のためクライアント・サーバー側ともにCPU使用量は増えるので注意して下さい。
responseGZip true レスポンスをgzip圧縮するかどうかのフラグです。
このフラグがたっていて、かつリクエストヘッダの「Accept-Encoding」ヘッダに「gzip」という内容が含まれている場合、レスポンスデータをgzip圧縮しつつ出力します。
それ以外の場合は、レスポンスデータを普通に出力します。
なお、GAEのようにレスポンスのgzip圧縮が自動的に行われてしまう環境にも対応できるようになっています。

この機能を有効にすることにより、通信量を軽減することができますが、反面gzipの圧縮・展開処理のためクライアント・サーバー側ともにCPU使用量は増えるので注意して下さい。

・servlet
 midoriを正常に使用するためには、以下のようにWEB-INF/web.xmlでRPCServletの設定を行う必要があります。
 設定内容は基本的にデフォルトのまま変更する必要はないはずですが、問題が発生した場合は環境に応じて変更して下さい。

<!--
	//==========================================================
	//サーブレットの定義
	//==========================================================
 -->

	<!-- RPC用のサーブレット -->
	<servlet>
		<servlet-name>RPCServlet</servlet-name>
		<servlet-class>jp.fores.midori.server.RPCServlet</servlet-class>
		<!-- 設定ファイル -->
		<init-param>
			<param-name>configFile</param-name>
			<param-value>midori.xml</param-value>
		</init-param>
		<!-- リスティング機能を有効にするかどうかのフラグ -->
		<init-param>
			<param-name>listing</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>


<!--
	//==========================================================
	//サーブレットマッピングの定義
	//==========================================================
 -->

	<!-- RPC用のサーブレット -->
	<servlet-mapping>
		<servlet-name>RPCServlet</servlet-name>
		<url-pattern>/rpc/*</url-pattern>
	</servlet-mapping>

param-name param-value(例) 説明
configFile midori.xml midoriの設定ファイル名です。
listing true midoriの登録情報を一覧表示するかどうかのフラグです。