HttpSessionの情報をクライアントのクッキーに保存するためのCookieSessionFilter 0.0.1をリリースしました。
セッション情報をクッキーに保存することで、セッションのレプリケーションを考える必要がなくなるのでフロントをスケールしやすくなりますし、どのノードを落としても関係ないので運用時のメンテナンスもしやすくなるはずです。
特徴
CookieSessionFilterには以下のような特徴があります。
- フィルタでHttpSessionを差し替えているため、アプリケーションからは通常のHttpSessionと同じように使用することができます。クッキーセッションであることを意識する必要はありません。
- セッション情報を暗号化してクッキーに保存します。暗号化処理はデフォルト実装としてBlowfishを使用するものを提供していますが、プラガブルになっているので別の実装に差し替えることが可能です。
- クッキーのサイズが指定サイズをこえる場合は自動的に複数のクッキーに分割します。分割サイズや最大クッキー数は設定で指定することができます。
使い方
JARファイルはいまのところAmaterasのMavenリポジトリにしかありません。Mavenを使わない場合はMavenリポジトリからJARファイルをダウンロードしてください(その場合はJSONICとCommons Codecも別途入手する必要があります)。
<repositories> <repository> <id>amateras</id> <name>Project Amateras Maven2 Repository</name> <url>http://amateras.sourceforge.jp/mvn/</url> </repository> </repositories> <dependencies> <dependency> <groupId>jp.sf.amateras.cookiesession</groupId> <artifactId>cookie-session-filter</artifactId> <version>0.0.1</version> </dependency> </dependencies>
web.xmlに以下のような感じでCookieSessionFilterを追加します。初期化パラメータのkeyはクッキーに入れるセッション情報をBlowfishで暗号化するためのキーなので、適切な値を設定してください。
<filter> <filter-name>cookieSessionFilter</filter-name> <filter-class>jp.sf.amateras.sessioncookiefilter.CookieSessionFilter</filter-class> <init-param> <param-name>chiper</param-name> <param-value>jp.sf.amateras.sessioncookiefilter.chiper.BlowfishCipher</param-value> </init-param> <init-param> <param-name>key</param-name> <param-value>1234</param-value> </init-param> </filter> <filter-mapping> <filter-name>cookieSessionFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>
そうするとフィルタでHttpServletRequestがラッパーに差し替えられ、HttpSessionにsetAttribute()された値がクッキーに書き出されるようになります。