Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JBoss User Help »

[jboss-user] [JBoss Seam] - Sometime seam listener does not work
 correctly...

scott.stark@jboss.org

2007-06-13


hi,all
i use Seam 1.2.1GA security and event listener to trigger logout() from authenticator when user session is time out. But it didnot work sometime.

Here is my configuration in components.xml

|  <event type="org.jboss.seam.preDestroyContext.SESSION">
|    <action expression="#{authenticator.logout}" />
|  </event>
|

authenticator:

| @Stateless
| @Name("authenticator")
| public class AuthenticatorBean implements Authenticator{
|
|   @In
|   private Identity identity;
|   @In
|   private FacesMessages facesMessages;
|  
|   @Logger
|   private Log log;
|  
|  public boolean authenticate() {
|    String username = identity.getUsername();
|    String password = identity.getPassword();
|    
|    
|    if(username.equalsIgnoreCase("xinhua")){
|      return true;
|      
|    }else{
|      facesMessages.addFromResourceBundle("loginForm_loginFailed");
|      return false;  
|    }
|    
|    
|  }
|
|  public void logout() {
|    log.info("logout(): user "+identity.getUsername()+" logout");
|    identity.logout();
|  }
|
| }
|
When user session is out of time, a null exception appears sometime.And logout() is skipped...




| 17:52:40,793 ERROR [[/strato]] Session event listener threw exception
| java.lang.NullPointerException: facesContext
|      at org.apache.myfaces.el.MethodBindingImpl.invoke (MethodBindingImpl.java:110)
|      at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper.java:58)
|      at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:75)
|      at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:148)
|      at org.jboss.seam.core.Events.raiseEvent(Events.java:63)
|      at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:215)
|      at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:297)
|      at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:45)
|      at org.apache.catalina.session.StandardSession.expire (StandardSession.java:687)
|      at org.apache.catalina.session.StandardSession.isValid (StandardSession.java:579)
|      at org.apache.catalina.session.ManagerBase.processExpires (ManagerBase.java:678)
|      at org.apache.catalina.session.ManagerBase.backgroundProcess (ManagerBase.java:663)
|      at org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1284)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
|      at java.lang.Thread.run (Thread.java:595)
| 17:52:49,059 INFO [Lifecycle] starting up: org.jboss.seam.security.identity
| 17:54:40,891 ERROR [[/strato]] Session event listener threw exception
| java.lang.IllegalStateException: Please end the HttpSession via Seam.invalidateSession()
|      at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:269)
|      at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:45)
|      at org.apache.catalina.session.StandardSession.expire (StandardSession.java:687)
|      at org.apache.catalina.session.StandardSession.isValid (StandardSession.java:579)
|      at org.apache.catalina.session.ManagerBase.processExpires (ManagerBase.java:678)
|      at org.apache.catalina.session.ManagerBase.backgroundProcess (ManagerBase.java:663)
|      at org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1284)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1569)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1578)
|      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
|      at java.lang.Thread.run (Thread.java:595)
|

the listener is not stable when sessionDestroyed. :(

anyone can tell me why?

thanks!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4054062#4054062

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4054062
_______________________________________________
jboss-user mailing list
jboss-user@(protected)
https://lists.jboss.org/mailman/listinfo/jboss-user
©2008 junlu.com - Jax Systems, LLC, U.S.A.