Servlet 3.0で無設定T2Framework

そういや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ファイルを作成してみる。
配置は以下のようになる。
http://shin.cside.com/diary/2010/0716-01.png
WEB-INFの中はからっぽで。servlet 3.0ではweb.xmlは必須ではないのだ。


これでT2Frameworkがすぐに試すことが出来る。なんと、warファイル側はクラスひとつとテンプレートファイルひとつになってしまった!テンプレートも必須ではないので、テキストを返すとかすればクラス1つだけでよいということ。


注意したいのはページクラスを置くルートパッケージが外側に定義されているのでそれを指定すること。できればフィルタパラメータで設定するのみではなく、コンテキストパラメータがあればそちらを優先とかできるようにしておくとなおよい。デフォルトだとこのパッケージに、web.xmlで設定すればそれを上書きで、という感じに出来てよいかもしれない。


Java EE 6イイヨイイヨー