-リセット&リスタート

Tapestryのアプリケーションの開発中もしくは、運用中にはアプリケーションを再起動しなければならないような状況になることがあるでしょう。本当にデバッグ中であれば、WEBコンテナごとリスタートすればよいのですが、統合テスト以降、ましてやサービスインしてしまってからでは、なかなかです。しかし、HTMLテンプレートをちょっといじっただけでサービス止めてメンテナンスするのは業腹です。
そんな時はTapestry(隠し?)サービスのResetServiceを使います。使い方は、ServiceLinkコンポーネントを用いるか、ダイレクトにURLをたたけばOK。そのURLは以下のとおりです。

http://localhost:8080/app?service=reset/home

service名が「reset」、サービスコンテキストが一つだけノードを持っていて、リセット後の表示ページを指定します。例では、「home」ページに飛ばします。このリセットによってページオブジェクトやHTMLテンプレート等のプールしているTapestryオブジェクトを破棄してくれます。プールさえ破棄されればその後のリクエストは再度設定ファイルからの名前解決-クラス/ファイルのロードからやりますので、軽微な修正ならこれでサービスを止めることなくメンテナンスできます。
似たようなサービスに、RestartServiceがあります。こちらはリクエスト者のセッションを破棄するサービスです。他者には影響をおよぼさず、自分だけセッション情報をクリアすることができます。こちらは主にデバッグ時用ですね。
追記:
このResetServiceを有効にするためには、JVMのパラメータで以下の値をセットする必要があります。

-Dorg.apache.tapestry.enable-reset-service=true

このようにしておくと、リセットできるようになります。