-JSR252とTapestry4 (8)

Tapestry編に移ります。Tapestryはよく考えられているところが多いので、その辺をポイントとして挙げていきます。
TapestryJavaでWEBなのでServletの仕組みの上に構築されています。しかし、Servletの部分は内部に押し込んでユーザーに極力見せません。TapestryでServletRequest(さらにはRequestDispatcherあたりまで)をラップしているのがIRequestCycleというAPIインターフェイスで、TapestryアプリケーションでJavaを書く部分ではほとんどこのIRequestCycleに対して操作を行うことになるでしょう。
一方、ユーザーアプリケーションにおいてServletで書きそうなものはIEngineServiceというインターフェイスに分担されています。IEngineServiceの実装はPageService・HomeService・ResetService・ActionService・DirectServiceなど。JSFにもStrutsにもこの辺の概念は無いです。ただ、TapestryはこのIServiceEngineのために犠牲にしているものがあります。あのTapestry独特なURLのうち、.../app?service=page/Hogeみたいなところのserviceパラメータがリクエストディスパッチ時に利用するわけです。この辺は、1年以上前になっちゃいますが、過去に書いたので読んでみてください(http://d.hatena.ne.jp/masataka_k/20040511#1124690215)。今回の本題ではないので。