設定と運用
サーブレットの設定
XSL 変換サーブレットは通常のサーブレットと同様に WEB-INF/web.xml を編集して URI とマッピングしてください。以下の例は拡張子 .xhtml を持つファイルに対して XSL サーブレットを起動します。利用可能なサーブレットパラメータは
リファレンスを参照してください。
<servlet> <servlet-name>XSLTServlet</servlet-name> <servlet-class>org.koiroha.kwt.xsl.XSLTServlet</servlet-class> <init-param> <param-name>default-xsl-uri</param-name> <param-value>/style/default.xsl</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>XSLTServlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
ログの出力
このライブラリからのログ出力は Java 標準の Logging API に対してクラス単位の完全修飾名で行っています。動作の詳細を知るには出力名 org.koiroha.kwt.xsl のレベルを FINEST まで下げてください。
キャッシュの動作
XSL サーブレットは変換結果をローカルに保存して同一 URL に対する 2 回目以降の変換処理を省略します。一般的なサーブレットコンテナであればこの作業ディレクトリは JSP の Java ソースが出力される場所と同じです (Tomcat の場合は $TOMCAT_HOME/work)。現実の場所はログ出力のレベルを下げることで知ることが出来ます。
XSL 変換処理は以下のタイミングで行われます。
- 対象 XML に対するサーブレットコンテナ起動後の最初のリクエスト
- 変換に使用したファイルのいずれかの更新または削除を検知したリクエスト
- キャッシュファイルの削除を検知したリクエスト
変更の検知はキャッシュ生成からファイルのタイムスタンプが変化したかで判断します。運用中にシステム時刻を過去や未来に変更してもキャッシュ有効性の判定に影響はありません。また XML ファイルを過去のタイムスタンプで上書きしても更新と見なされます。
サーブレットは変換元 XML ファイルの削除を検知するとキャッシュファイルも削除します。ただし、コンテナ停止中に XML ファイルが削除された場合はキャッシュファイルが残ったままとなります。このファイルは若干のディスクリソースを消費するだけですが、ファイルの入れ替えが激しいサイトではコンテナ起動時のクリアなどを検討する必要があります。
キャッシュファイルはサーブレットコンテナ起動中に削除しても自動的に再構築されます。ただし、削除された瞬間に受け付けていたリクエスト処理の結果は未定義です。

