サーブレットとPasta
設定方法
サーブレット版のPastaは PastaServlet という名前のサーブレットです。
web.xmlには以下のように設定してください。
<servlet>
<servlet-name>pasta</servlet-name>
<servlet-class>info.port4.pasta.servlet.PastaServlet</servlet-class>
<init-param>
<param-name>config-file</param-name>
<param-value>Pasta設定ファイル(省略した場合"/WEB-INF/pasta.xconf")</param-value>
</init-param>
<init-param>
<param-name>logger-file</param-name>
<param-value>ログ設定ファイル(省略した場合"/WEB-INF/logger.xlog")</param-value>
</init-param>
<init-param>
<param-name>bootstraps</param-name>
<param-value>
Bootstrapの実装クラス名をスペース文字で区切って記述する
省略すると、以下の2つがロードされます。
info.port4.pasta.bootstrap.BasicBootstrap
info.port4.pasta.servlet.bootstrap.ServletBootstrap
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>pasta</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>pasta</servlet-name>
<url-pattern>*.act</url-pattern>
</servlet-mapping>
上の例ではサーブレットを、*.htmlと*.actにマッピングしていますが、他の拡張子を使っても構いません。
Bootstrapについての説明はPastaの起動と拡張を参照してください。
設定ファイル
Pastaの設定ファイルは以下の3つです。 別の名前でも可能ですが、デフォルトの名前を以下に示します。
- pasta.xconf
- Excalibur Fortressの設定ファイルです。 このファイルの記述方法はPastaの起動と拡張を参照してください。
- logger.xlog
- Excalibur Logkitによるログの設定ファイルです。
- mapping.xml
- このファイルの位置はpasta.xconf内に記述されています。 URIのマッピングを設定するファイルです。
典型的なmapping.xmlの記述方法
mapping.xmlの詳細はMapperのドキュメントを参照してください。 ここでは、よくある設定方法を紹介しておきます。
HTML/XHTMLの変換
mapping.xmlに以下の設定をすることで、 PastaServletによってHTMLまたはXHTMLファイルを読み込み、変換してクライアントに送出できます。
<mapper pattern="/*.html" map-to="context:/html/{1}.html" type="html-file"/>
このマッピングは、アプリケーションURIの直下の.htmlで終わるリソースをブラウザが要求すると、 htmlディレクトリ直下の同じ名前のファイルを変換したものを返すことを表します。 次の設定も同様の働きをしますが、ファイルをXHTMLとして解析します。
<mapper pattern="/*.html" map-to="context:/html/{1}.html" type="xml-file"/>
アクションを実行する.actファイルは、以下のようにマッピングしておきます。
<mapper pattern="/*.act" map-to="context:/actions/{1}.act" type="xml-actfile"/>
これで、actionsディレクトリに置かれたアクションファイルが実行できるようになります。
JSPの変換
JSPの変換には、サーブレットの転送(forward)機能を利用し、転送先のページをキャプチャすることで実現しています。 ページのキャプチャと変換処理を並行して実現するために新しいスレッドを起動するので、1つのリクエストを処理するために2つのスレッドが必要です。
例えば、.htmlで終わる名前のリソースを要求された場合、jspディレクトリ以下のJSPファイルを変換したものを返すにはmapping.xmlに以下の設定を加えます。
<mapper pattern="/*.html" map-to="/jsp/{1}.jsp" type="html-forward"/>

