Thanks Andreas,
it works!, but could you tell me why
<filter
       before="tapestry.request.SetupRequestEncoding"
           name="disableUrlSessionFilter"
           object="service:jfly.webcommons.disableUrlSessionFilter"/>

is faster then the same filter without before ?

At least it seems to me!

On 4/18/07, Andreas Andreou <[EMAIL PROTECTED]> wrote:

For this, better use

http://tapestry.apache.org/tapestry4/tapestry/apidocs/org/apache/tapestry/services/ServletRequestServicerFilter.html


On 4/18/07, Andrea Chiumenti <[EMAIL PROTECTED]> wrote:
>
> As suggested by Andreas I've added this filter (
> http://randomcoder.com/articles/jsessionid-considered-harmful) to the
demo
> app, and  now it's working.
>
> So I've decided to implement this solution in a more Tapestry fashion
and
> wrote the following class:
>
>
-----------------------------------------------------------------------------------------------------------
>
> public class DisableUrlSessionFilter implements
WebRequestServicerFilter{
>     private HttpServletResponse response;
>     private HttpServletRequest request;
>
>     public void service(WebRequest webRequest, WebResponse webResponse,
> WebRequestServicer webRequestServicer) throws IOException {
>             HttpServletResponseWrapper wrappedResponse = new
> HttpServletResponseWrapper(response) {
>
>                 public String encodeRedirectUrl(String url) {
>                     return url;
>                 }
>                 public String encodeRedirectURL(String url) {
>                     return url;
>                 }
>                 public String encodeUrl(String url) {
>                     return url;
>                 }
>                 public String encodeURL(String url) {
>                     return url;
>                 }
>             };
>
>             ServletWebResponse newResponse = new
> ServletWebResponse(wrappedResponse);
>             webRequestServicer.service(webRequest, newResponse);
>     }
>
>     public HttpServletRequest getRequest() {
>         return request;
>     }
>
>     public void setRequest(HttpServletRequest request) {
>         this.request = request;
>     }
>
>     public HttpServletResponse getResponse() {
>         return response;
>     }
>
>     public void setResponse(HttpServletResponse response) {
>         this.response = response;
>     }
> }
>
> -----------------------------------------------------------------
> Then I added to hive module the following lines:
> <contribution configuration-id="
> tapestry.request.WebRequestServicerPipeline
> ">
>         <filter name="disableUrlSessionFilter" object="service:
> jfly.webcommons.disableUrlSessionFilter"/>
> </contribution>
>
> The problem is that it doesn't work as the filter because the jsessionid
> problem remains, so the HttpServletResponseWrapper encodeURL is never
> called.
>
> Why my WebRequestServicerFilter doesn't work ?
>



--
Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
Tapestry / Tacos developer
Open Source / JEE Consulting

Reply via email to