ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Tapestry入門記(4) ApplicationServlet

Tapestryアプリケーションは、web.xmlにApplicationServletを
指定します。


<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
org.apache.tapestry.ApplicationServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
Tapestryアプリケーションのアドレスが/appで終わっているのは、
このマッピングのせいです。
これは慣習であり、必須ではないとのことです。
個人的には、URLでどんなフレームワークを使っているかがばれると
それだけセキュリティホールをつきやすくなると思うのですが、
ここは素直に従います。
ここでつけたサーブレット名は重要で、アプリケーション仕様は、
WEB-INF/サーブレット名.application or
WEB-INF/サーブレット名/サーブレット名.application
から読み取られるようです(ソースによると)。
今回の例では、WEB-INF/hello.applicationになります。
後、ソースを読んでポイントだと思ったのは、IEngineの扱いです。
こいつは、セッションがあればセッションに格納され、
なければLocaleごとにプーリングされます。
どんなときにTapestryでセッションが作成されるのか
すべての場合は分かりませんが、IEngine#getVisit()がよびだされると
IEngineはセッションに格納されるようです。
Visitオブジェクトは、セッション単位に存在するアプリケーション定義の
任意のオブジェクトです。