myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sean Schofield <sean.schofi...@gmail.com>
Subject Re: Another change since 1.0.9 - SessionMap.clear() - an explanation
Date Mon, 19 Sep 2005 14:38:28 GMT
In the very short run you are going to have to patch the source.  When
Oliver comes back we can ask him why he changed it.  Like Martin said,
I'm assuming it had something to with passing the TCK.  Its possible
the TCK was in error for requiring this but we'll have to wait and
see.

sean

On 9/19/05, Kevin Roast <kevin.roast@alfresco.org> wrote:
>  
> 
> Hi, 
> 
> I'll explain a little about why we need this. 
> 
> In our application, we have the concept of Users and Login/Logout - all
> pretty standard stuff. 
> 
> The app is a faces JSP web application. When the user logs out of the
> application, we want to invalidation or at least clear the session.
> Obviously because we are in a JSF app, we use an action event handler when
> the user clicks "logout". The example code we used with MyFaces 1.0.9 was: 
> 
>    /** 
>     * Invalidate ticket and logout user 
>     */ 
>    public String logout() 
>    { 
>       FacesContext context = FacesContext.getCurrentInstance(); 
>       
>       // clear Session for this user 
>       context.getExternalContext().getSessionMap().clear(); 
> 
>       // invalidate User ticket 
>       ... 
> 
>       return "logout"; 
>    } 
> 
> As you can see, we clear the session for the user. 
> 
> With MyFaces 1.1.0 you cannot call clear() as it throws
> UnsupportedOperationException. 
> 
> I tried this code instead: 
> 
>    /** 
>     * Invalidate ticket and logout user 
>     */ 
>    public String logout() 
>    { 
>       FacesContext context = FacesContext.getCurrentInstance(); 
>       
>       Map session = context.getExternalContext().getSessionMap(); 
>       User user = (User)
> session.get(AuthenticationHelper.AUTHENTICATION_USER); 
>       
>       // clear Session for this user 
>       Object extSession = context.getExternalContext().getSession(false); 
>       if (extSession instanceof HttpSession) 
>       { 
>          ((HttpSession)session).invalidate(); 
>       } 
> 
>       // invalidate User ticket 
>       ... 
> 
>       return "logout"; 
>    } 
> 
> But suprisingly this doesn't work either. Calling invalidate() throws a
> ClassCastException… 
> 
> Any ideas how we do this with the new MyFaces, or am I going to have to
> patch the source for our application? 
> 
> Thanks, 
> 
> Kevin 
> -- 
> http://www.alfresco.org 
>  
> 
> _____________________________________________ 
> From:   Kevin Roast  
> Sent:   19 September 2005 14:45 
> To:     'myfaces-dev@incubator.apache.org' 
> Subject:        Another change since 1.0.9 - SessionMap.clear() 
> 
> Hi, 
> 
> Can I ask why
> org.apache.myfaces.context.servlet.SessionMap.clear() now
> throws UnsupportedOperationException? 
> 
> Thanks, 
> 
> Kevin 
> -- 
> http://www.alfresco.org 
>
Mime
View raw message