Hi,

I use a regular servlet filter for this:

Filter:

public class StripUrlSessionIdFilter
    implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    if (!(request instanceof HttpServletRequest)) {
      chain.doFilter(request, response);
      return;
    }

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    if (httpRequest.isRequestedSessionIdFromURL()) {
      HttpSession session = httpRequest.getSession();
      if (session != null) session.invalidate();
    }

HttpServletResponseWrapper wrappedResponse = new StripUrlSessionIdHttpServletResponseWrapper(httpResponse);

    chain.doFilter(request, wrappedResponse);
  }

  public void init(FilterConfig config) throws ServletException {
  }

  public void destroy() {
  }

private static class StripUrlSessionIdHttpServletResponseWrapper extends HttpServletResponseWrapper {

public StripUrlSessionIdHttpServletResponseWrapper(HttpServletResponse httpResponse) {
      super(httpResponse);
    }

    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;
    }
  }
}

Mapping:

  <filter>
    <filter-name>strip</filter-name>
    <filter-class>com.example.StripUrlSessionIdFilter</filter-class>
  </filter>
  <filter>
    <filter-name>app</filter-name>
    <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>strip</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>app</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Try that, it works.

-Filip

Britske skrev:
Yep I tried that, but when I converted a working stripping servletfilter to a
requestfiler, I have to deal with tapestry's request and response in
addition to sevlet.HttpServletRequest and servlet.httpServletRepsonse.
Although I override both (Response and HttpServletResponse, since I guess
some code uses Response while some use HttpServletResponse) still no luck. <snip/>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to