ディレクトリパスをMayaaで受ける方法
mayaaはコンテンツディレクトリ以外にページファイル(.html,.mayaa)を配置することができますが、末尾が/でデフォルトドキュメントを求められると、WebServer,AppServerが補完したデフォルトドキュメントがコンテンツディレクトリに物理的に存在しないため404になってしまいます。これを回避する方法をWebServer連携するjkへの設定も含めてメモしておきます。
IIS or Apache → Tomcat
jkのuriworkermap.propertiesに、/*/ を追加するだけです。全てのアクセスを受けてしまうとTomcatに負荷が掛かりますので静的ファイルはWebServerに任せて欲しいものだけ受けるようにします。ROOTをWebServerとTomcatで共存する設定例ですのでレアかもしれませんがご容赦を。試してないけど特定のアプリなら、/myapp/*/=loadbalancer でいけるかと。loadbalancerはworkers.propertiesに書いてある定義ですが略。
# [URL]=[Worker name] /jkstatus/*=jkstatus /*/=loadbalancer /*.html=loadbalancer /*.do=loadbalancer /*.jsp=loadbalancer
Tomcatへの設定
web.xmlのサーブレットマッピングに / と、/*/ を追加します(*.htmlももちろん残す)。
: <servlet> <servlet-name>MayaaServlet</servlet-name> <servlet-class>org.seasar.mayaa.impl.MayaaServlet</servlet-class> <load-on-startup>4</load-on-startup> </servlet> : <servlet-mapping> <servlet-name>MayaaServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> :
これで、mayaaの管理するページディレクトリのindex.htmlを叩けます。index.htmlを置き忘れると mayaaのPageNotFoundExceptionが発生します。しかし、Throwable.htmlを置いているのに、どうもエラーページがハンドリングされないようです(Tomcatの青いエラー画面になってしまう)。…が、まだ原因を調べてません。(単に自分のプログラムミスだった)
お、ネタフリがsugaさんのところに。トラバしとこ。 ※UTF-8とEUCで文字化けしてNG。削除してもらいました。m(_ _;)m → http://suga.parfe.jp/td/index.cgi?date=20060423