AFAIK userForm.edit should never been called. Because if session is not valid
the user has no access right for editProfile.html as specified in
filterInvocationInterceptor:
/**/*.html*=ROLE_ADMIN,ROLE_USER
The resulting acegi exception should be caught by exceptionTranslationFilter
which should forward the user to:
<property name="loginFormUrl" value="/login.jsp"/>

If your settings in security.xml are the same as mine, I have no idea why
you end up with the stack trace.

René


Enrico Goosen wrote:
> 
> Here's the stack trace:
> 
> 
> Yikes!
> 
> javax.servlet.ServletException: javax.servlet.ServletException: Error
> calling action method of component with id userProfile:edit
>       at
> net.sf.ehcache.constructs.web.filter.Filter.logThrowable(Filter.java:152)
>       at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:97)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.ctjug.jobsite.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:74)
>       at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> com.opensymphony.clickstream.ClickstreamFilter.doFilter(ClickstreamFilter.java:42)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
>       at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
>       at
> org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
>       at
> org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
>       at
> org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
>       at
> org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
>       at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>       at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>       at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
>       at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>       at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>       at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>       at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>       at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>       at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
>       at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>       at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.servlet.ServletException: Error calling action method of
> component with id userProfile:edit
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
>       at
> org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.ctjug.jobsite.webapp.filter.MessageFilter.doFilter(MessageFilter.java:62)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
>       at
> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
>       at
> org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
>       at
> org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
>       at
> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406)
>       at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>       at
> net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter(GzipFilter.java:75)
>       at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java:92)
>       ... 47 more
> Caused by: javax.faces.FacesException: Error calling action method of
> component with id userProfile:edit
>       at
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:69)
>       at javax.faces.component.UICommand.broadcast(UICommand.java:121)
>       at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:274)
>       at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:250)
>       at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:405)
>       at
> org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
>       at
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
>       at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
>       ... 71 more
> Caused by: javax.faces.el.EvaluationException: javax.el.ELException:
> /editProfile.xhtml @11,57 action="#{userForm.edit}":
> org.acegisecurity.userdetails.UsernameNotFoundException: user 'null' not
> found...
>       at
> javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:79)
>       at
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
>       ... 79 more
> Caused by: javax.el.ELException: /editProfile.xhtml @11,57
> action="#{userForm.edit}":
> org.acegisecurity.userdetails.UsernameNotFoundException: user 'null' not
> found...
>       at
> com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:74)
>       at
> javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
>       ... 80 more
> Caused by: org.acegisecurity.userdetails.UsernameNotFoundException: user
> 'null' not found...
>       at
> org.ctjug.jobsite.dao.hibernate.UserDaoHibernate.loadUserByUsername(UserDaoHibernate.java:68)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
>       at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
>       at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>       at $Proxy25.loadUserByUsername(Unknown Source)
>       at
> org.ctjug.jobsite.service.impl.UserManagerImpl.getUserByUsername(UserManagerImpl.java:84)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
>       at
> org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:66)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
>       at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
>       at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
>       at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
>       at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>       at $Proxy28.getUserByUsername(Unknown Source)
>       at org.ctjug.jobsite.webapp.action.UserForm.edit(UserForm.java:81)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
>       at
> org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
>       at
> com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
>       ... 81 more
> 
> I haven't modified security.xml, but I noticed that this has been
> commented out (not by me):
> <!-- Changed to use logout.jsp since causes 404 on WebSphere:
> http://issues.appfuse.org/browse/APF-566 -->
>     <!--bean id="logoutFilter"
> class="org.acegisecurity.ui.logout.LogoutFilter">
>         <constructor-arg value="/index.jsp"/>
>         <constructor-arg>
>             <list>
>                 <ref bean="rememberMeServices"/>
>                 <bean
> class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>
>             </list>
>         </constructor-arg>
>         <property name="filterProcessesUrl" value="/logout.jsp"/>
>     </bean-->
> 
> Perhaps this issue has something to do with the "Remember Me" feature??
> 
> 
> 
> Rene Guenther wrote:
>> 
>> Can you post the stack trace?
>> Have you done any changes to security.xml?
>> 
>> I am using same appfuse version. If user session runs out I am redirected
>> to login.jsp automatically.
>> 
>> René
>> 
>> 
>> Enrico Goosen wrote:
>>> 
>>> Hi Matt,
>>> 
>>> I'm using JSF basic on Appfuse 2.0.
>>> 
>>> Regards,
>>> Enrico
>>> 
>>> 
>>> 
>>> mraible wrote:
>>>> 
>>>> Which web framework and version of AppFuse gives you this horrible
>>>> stack trace?
>>>> 
>>>> Matt
>>>> 
>>>> On 12/20/07, Enrico Goosen <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>> I also experienced a problem with the session timeout, and if for
>>>>> example
>>>>> the
>>>>> user clicks on "Edit Profile" after the session times out, you get a
>>>>> horrible stack trace, instead of a graceful redirect to the login
>>>>> page.
>>>>>
>>>>> To overcome this, I put the following code in MessageFilter.java:
>>>>>
>>>>> //redirect to login if session has expired
>>>>>         String username = request.getRemoteUser();
>>>>>         if (username == null){
>>>>>             UrlPathHelper urlPathHelper = new UrlPathHelper();
>>>>>             String path =
>>>>> urlPathHelper.getPathWithinApplication(request);
>>>>>             if (path.contains("mainMenu") || path.contains("signup")
>>>>> ||
>>>>>                     path.contains("passwordHint")){
>>>>>                 //ignore
>>>>>             }else{
>>>>>                 RequestDispatcher rd =
>>>>> request.getRequestDispatcher("/login.jsp");
>>>>>                 rd.forward(request, res);
>>>>>                 return;
>>>>>             }
>>>>>         }
>>>>> In my app, the user isn't required to login to view the mainMenu page,
>>>>> hence
>>>>> it only redirects for other pages that require a valid user.
>>>>>
>>>>>
>>>>> mraible wrote:
>>>>> >
>>>>> > There is no filter that's responsible for detecting a timeout.  You
>>>>> > could create an HttpSessionListener that listens for deactivation,
>>>>> but
>>>>> > I don't believe you can actually detect it with a filter and forward
>>>>> > to a "your session has expired page".
>>>>> >
>>>>> >
>>>>> http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpSessionListener.html
>>>>> >
>>>>> > Matt
>>>>> >
>>>>> > On 4/12/07, VJ22 <[EMAIL PROTECTED]> wrote:
>>>>> >>
>>>>> >> Hello Matt...tks for the answer
>>>>> >>
>>>>> >> I have specified the same in the web.xml file .... but which filter
>>>>> is
>>>>> >> responsible for actually detecting  a session timeout within Acegi
>>>>> within
>>>>> >> Appfuse ?
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> mraible wrote:
>>>>> >> >
>>>>> >> > It should be specified in web.xml.
>>>>> >> >
>>>>> >> > Matt
>>>>> >> >
>>>>> >> >
>>>>> >> > On 4/12/07, VJ22 <[EMAIL PROTECTED]> wrote:
>>>>> >> >>
>>>>> >> >> Hello,
>>>>> >> >>
>>>>> >> >> Which filter in the acegi security filter chain checks for a
>>>>> session
>>>>> >> >> timeout
>>>>> >> >> within the Appfuse configuration ? I am using the default of 30
>>>>> >> minutes
>>>>> >> >> in
>>>>> >> >> the web.xml ?
>>>>> >> >> I need a bit more flexibility in my logout process and was going
>>>>> >> through
>>>>> >> >> the
>>>>> >> >> maze of configuration files to figure out how the framework
>>>>> handles
>>>>> >> >> session
>>>>> >> >> timeouts ?
>>>>> >> >>
>>>>> >> >> tks in advance
>>>>> >> >>
>>>>> >> >> Rgds...VJ
>>>>> >> >> --
>>>>> >> >> View this message in context:
>>>>> >> >>
>>>>> http://www.nabble.com/session-timeout-tf3564175s2369.html#a9955303
>>>>> >> >> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>>>> >> >>
>>>>> >> >>
>>>>> ---------------------------------------------------------------------
>>>>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>> >> >>
>>>>> >> >>
>>>>> >> >
>>>>> >> >
>>>>> >> > --
>>>>> >> > http://raibledesigns.com
>>>>> >> >
>>>>> >> >
>>>>> ---------------------------------------------------------------------
>>>>> >> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> >> > For additional commands, e-mail: [EMAIL PROTECTED]
>>>>> >> >
>>>>> >> >
>>>>> >> >
>>>>> >>
>>>>> >> --
>>>>> >> View this message in context:
>>>>> >> http://www.nabble.com/session-timeout-tf3564175s2369.html#a9958216
>>>>> >> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>>>> >>
>>>>> >>
>>>>> ---------------------------------------------------------------------
>>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>> >>
>>>>> >>
>>>>> >
>>>>> >
>>>>> > --
>>>>> > http://raibledesigns.com
>>>>> >
>>>>> >
>>>>> ---------------------------------------------------------------------
>>>>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> > For additional commands, e-mail: [EMAIL PROTECTED]
>>>>> >
>>>>> >
>>>>> >
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/session-timeout-tp9955303s2369p14437100.html
>>>>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/session-timeout-tp9955303s2369p14453821.html
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to