Skip to Main Content

Java Development Tools

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Session.invalidate not working after migration from 10.1.3.0 to 10.1.3.3

413724Jul 7 2007 — edited Jul 11 2007
Hi,

I migrated my JClient + Struts/ADF app. from 10.1.3.0 to 10.1.3.3.

I encountered following blocking problem in my Struts/ADF: session.invalidate doesn't seem to work anymore => IllegalStateException was caught on display of logout page. (see end of message)

I tested a same flow in both versions, works in 10.1.3.0 not in 10.1.3.3
home page -> login page -> logout page

I kept the full log for both versions in case you need them.

The app. works like this:

I have a servlet filter that intercepts all actions except login paths.
If the action is logout nothing is done in the filter else
the filter adds a request attribute if the session is invalid.
So in this case this servlet filter is irrelevant (explained because part of stacktrace)

The logout page is a specific jsp page where no getSession methods are called in order to avoid a creation of a new session.

When a user activates the logout link, the logout action prepareModel method does the following:
    HttpSession httpSession = req.getSession(false);
    if (httpSession != null) 
    {
     UserContainer userContainer = this.getUserContainer(actionContext);
     if (userContainer != null) 
     {
      req.setAttribute("langCode",userContainer.getPageLangCode()); 
      req.setAttribute("langDir",userContainer.getPageLangDirection()); 
      req.setAttribute("langAlignment",userContainer.getPageLangAlignment()); 
      langSet = true;
     }
     try 
     {      
      System.out.println(getClass().getName()+".prepareModel before httpSession.invalidate() id: "+httpSession.getId());
      httpSession.invalidate();       
     }
     catch (IllegalStateException ie) 
     {
       System.out.println(getClass().getName()+".prepareModel httpSession.invalidate() IllegalStateException caught, "+ie.toString());
     }
    }
    else 
    {
      System.out.println(getClass().getName()+".prepareModel httpSession == null");      
    }
    if (!langSet) 
    {
      int sessionLangId = 1;
      MainshopContainer mainshopContainer = this.getMainshopContainer(actionContext);
      if (req.getServerName().endsWith("co.il")) 
      {
       sessionLangId = mainshopContainer.getLangIdFromLocaleString(LocaleFilter.localeStringIL);         
      }
      LangBO langBO = mainshopContainer.getLangBOFromIntMap(sessionLangId);
      req.setAttribute("langCode",langBO.getLangCode()); 
      req.setAttribute("langDir",langBO.getLangDirection()); 
      req.setAttribute("langAlignment",langBO.getLangAlignment()); 
    }   
  }
The following exception is caught:
Jul 7, 2007 3:45:35 PM oracle.jsp.logger.JspMessages infoCannotDispatchJspPage
INFO: Unable to dispatch JSP Page : java.lang.IllegalStateException: Session was invalidated
	at com.evermind.server.http.EvermindHttpSession.invalidate(EvermindHttpSession.java:390)
	at com.evermind.server.http.EvermindHttpServletRequest.unprivileged_getSession(EvermindHttpServletRequest.java:2697)
	at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest.java:2598)
	at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest.java:2592)
	at com.evermind.server.http.EvermindPageContext.initialize(EvermindPageContext.java:326)
	at com.evermind.server.http.EvermindJSPFactory.getCachedPageContext(EvermindJSPFactory.java:85)
	at com.evermind.server.http.EvermindJSPFactory.getPageContext(EvermindJSPFactory.java:41)
	at _web_2d_inf._jsp._logout._jspService(_logout.java:32)
	at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
	at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462)
	at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594)
	at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
	at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
	at com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:259)
	at com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51)
	at com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193)
	at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)
	at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:198)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
	at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:162)
	at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
	at com.mySite.filter.LocaleFilter.doFilter(LocaleFilter.java:323)
	at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:621)
	at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
	at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
	at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
	at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221)
	at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122)
	at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111)
	at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
	at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
	at java.lang.Thread.run(Thread.java:595)
:


Your help will be appreciated


Frederic
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 8 2007
Added on Jul 7 2007
6 comments
1,702 views