Re: t5: Filter and Session conflict?

2009-02-25 Thread Peter Stavrinides
Hi Angelo,

This is the important line:
 Cannot create a session after the response has been committed

Which is telling you that the response is committed / finalized and you are 
trying to modify parameters on it. This usually happens for example when you 
call a response.sendRedirect somewhere in your code, but have omitted the 
terminator 'return true', which should follow it.

Peter



- Original Message -
From: Angelo Chen angelochen...@yahoo.com.hk
To: users@tapestry.apache.org
Sent: Monday, 23 February, 2009 15:06:30 GMT +02:00 Athens, Beirut, Bucharest, 
Istanbul
Subject: t5: Filter and Session conflict?


Hi,

I use the code at end of this message to strip the Jsessionid, it works very
well, however it started to have error when I call this in my T5 app:

Session session = request.getSession(false);
if (session != null) {
 session.invalidate();
} 
cookies.removeCookieValue(logKey);

can this problem be fixed? Thanks,

Angelo  


[ERROR] [default] Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: Cannot create a session after the response
has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:2221)
at org.apache.catalina.connector.Request.getSession(Request.java:2031)
at
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:832)
at
org.apache.tapestry5.internal.services.RequestImpl.getSession(RequestImpl.java:99)
...
at org.myapp.Filter.doFilter(Filter.java:37)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
...
at java.lang.Thread.run(Thread.java:613)

//
http://www.nabble.com/T5%3A-what-part-of-tapestry-adds-Jsessionid-td18385573.html#a18388334
Code from Filip S. Adamsen-2 
public class Filter implements javax.servlet.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;
}
}


}

-- 
View this message in context: 
http://www.nabble.com/t5%3A-Filter-and-Session-conflict--tp22161170p22161170.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



t5: Filter and Session conflict?

2009-02-23 Thread Angelo Chen

Hi,

I use the code at end of this message to strip the Jsessionid, it works very
well, however it started to have error when I call this in my T5 app:

Session session = request.getSession(false);
if (session != null) {
 session.invalidate();
} 
cookies.removeCookieValue(logKey);

can this problem be fixed? Thanks,

Angelo  


[ERROR] [default] Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: Cannot create a session after the response
has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:2221)
at org.apache.catalina.connector.Request.getSession(Request.java:2031)
at
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:832)
at
org.apache.tapestry5.internal.services.RequestImpl.getSession(RequestImpl.java:99)
...
at org.myapp.Filter.doFilter(Filter.java:37)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
...
at java.lang.Thread.run(Thread.java:613)

//
http://www.nabble.com/T5%3A-what-part-of-tapestry-adds-Jsessionid-td18385573.html#a18388334
Code from Filip S. Adamsen-2 
public class Filter implements javax.servlet.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;
}
}


}

-- 
View this message in context: 
http://www.nabble.com/t5%3A-Filter-and-Session-conflict--tp22161170p22161170.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org