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 ?