そういやServlet 3.0でWebFragment解説してなかったな。
ということでT2Frameworkを無設定で使えるようにしてみる。
まずjarファイルを作る。
ファイルはひとつ。META-INFの下に「web-fragment.xml」という名前のファイルを作成。
<?xml version="1.0" encoding="UTF-8"?> <web-fragment version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"> <filter> <filter-name>t2</filter-name> <filter-class>org.t2framework.t2.filter.T2Filter</filter-class> <init-param> <param-name>t2.rootpackage</param-name> <param-value>t2.page.root</param-value> </init-param> </filter> <filter-mapping> <filter-name>t2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>/</welcome-file> </welcome-file-list> </web-fragment>
見てわかるようにファイル名が違うこと、ルートの要素とスキーマの名前が違うだけで「web.xml」と同じ。
そしてこれをWebアプリのライブラリjarファイルとして登録。
T2Frameworkのプロジェクトを作成し、PageクラスとJSPファイルを作成してみる。
配置は以下のようになる。
WEB-INFの中はからっぽで。servlet 3.0ではweb.xmlは必須ではないのだ。
これでT2Frameworkがすぐに試すことが出来る。なんと、warファイル側はクラスひとつとテンプレートファイルひとつになってしまった!テンプレートも必須ではないので、テキストを返すとかすればクラス1つだけでよいということ。
注意したいのはページクラスを置くルートパッケージが外側に定義されているのでそれを指定すること。できればフィルタパラメータで設定するのみではなく、コンテキストパラメータがあればそちらを優先とかできるようにしておくとなおよい。デフォルトだとこのパッケージに、web.xmlで設定すればそれを上書きで、という感じに出来てよいかもしれない。
Java EE 6イイヨイイヨー