誰も使ってくれない。以前のぼくなら腹を立てて内に閉じ篭るところだが、ぼくももういい大人だ。
こんなゴミブログに足を運ぶほどヒマな人でもちょっとイタズラするだけで Tomcat のエラー画面が赤裸々に表示されてしまうようなゴミアプリケーションをいじくり倒すほどヒマではないのだと受け止めてせめてエラー画面くらいどうにかしようと思った次第。
web.xml
素直に行けば filter を使うだろうし S2 を使いこなす剛の者なら interceptor を使うところだけど、ぼくは素直でも剛の者でもない単なるモノグサなので web.xml の error-page で対応する。
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>これで充分。
Cubby の罠
と思ったら Cubby の暗黙オブジェクト contextPath がセットされなかった。こちら によると cubbyFilter の dispatcher を追加する必要があるらしい。開発時にも有効にしたいので hotdeployFilter にも適用。
<filter-mapping>
<filter-name>hotdeployFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
(snip)
<filter-mapping>
<filter-name>cubbyFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>これでとりあえずブザマなエラー画面は隠せるようになりました。