É o seguinte tenho a seguinte classe que monitora todas as sesssões mas estou perdendo a sessão e gerando um erro muito estranho pois o erro é gerado em uma só tela da aplicação no restante não gera erro nenhum e passa pelo mesmo trecho do código.
Já verifiquei que a o action está vindo com o valor correto, só não consegui verificar o valor da sessão mesmo.
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
logger.debug("Entering filter");
try {
if(request instanceof HttpServletRequest) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String servletPath = httpRequest.getServletPath();
//Linha do código onde a sessão é perdida
HttpSession session = httpRequest.getSession();
boolean isSessionInvalid = false;
logger.debug("Chaining...");
chain.doFilter(request, response);
logger.debug("After filter chain...");
return;
if(session == null) {
logger.warn("Session is null.");
isSessionInvalid = true;
} else if(session.getAttribute("geduser") == null) {
if(servletPath.indexOf("Login.do") == (-1) &&
servletPath.indexOf("Logout.do") == (-1)&&
servletPath.indexOf("FastLogin.do") == (-1)) {
logger.warn("User is null or is not logged in.");
isSessionInvalid = true;
}
}
if(isSessionInvalid) {
logger.warn("Cancelling request...");
request.getRequestDispatcher("/logout.jsp").forward(request, response);
return;
}
}
logger.debug("Chaining...");
chain.doFilter(request, response);
logger.debug("After filter chain...");
return;
} catch (Exception e) {
logger.error("Error in session filter", e);
}
}
Log de Erro --> Muito estranho
=[DEBUG] 10/09/08 16:49:00 SessionMonitorFilter::doFilter - After filter chain...
=[DEBUG] 10/09/08 16:49:00 SessionMonitorFilter::doFilter - Entering filter
=[ERROR] 10/09/08 16:49:00 SessionMonitorFilter::doFilter - Error in session filter
java.lang.NullPointerException
at com.pac.ged.business.Document.hashCode(Document.java:527)
at java.lang.Object.toString(Object.java(Compiled Code))
at com.ibm.ws.webcontainer.util.SimpleHashtable.toString(SimpleHashtable.java:378)
at com.ibm.ws.webcontainer.httpsession.SessionData.toString(SessionData.java:1044)
at java.lang.String.valueOf(String.java(Inlined Compiled Code))
at java.lang.StringBuffer.append(StringBuffer.java(Compiled Code))
at com.ibm.ws.webcontainer.httpsession.SessionContext.getIHttpSession(SessionContext.java:1487)
at com.ibm.ws.webcontainer.httpsession.SessionContext.getIHttpSession(SessionContext.java:2387)
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.getSession(WebAppDispatcherContext.java:182)
at com.ibm.ws.webcontainer.srt.SRTServletRequestContext.getSession(SRTServletRequestContext.java:219)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.getSession(SRTServletRequest.java:716)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.getSession(SRTServletRequest.java:707)
at com.pac.web.SessionMonitorFilter.doFilter(SessionMonitorFilter.java:48)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1161)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:666)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:209)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:90)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:249)
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:246)
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:622)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:457)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:681)
=[INFO] 10/09/08 16:51:46 ApplicationInit::contextDestroyed - Closing application