cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with RepositorySession+Acegi

walbar
Champ in-the-making
Champ in-the-making
Hi all,

I'm writing a web page (using SpringMVC) which lists nodes from Alfresco, using JDK 1.4. It's a read-only page that keeps the repositorySession in the HttpSession and uses it several times. I refresh my page several times and it works fine, but if I leave it for a while (let's say 3 minutes) and then refresh my page I get the following:

- Should roll back transaction but cannot - no transaction available- Could not complete requestnet.sf.acegisecurity.AuthenticationCredentialsNotFoundException: A valid SecureContext was not provided in the RequestContext   at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:477)   at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:355)   at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:77)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:41)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:210)   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:156)   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:61)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)   at $Proxy21.getCurrentUserName(Unknown Source)   at org.alfresco.jcr.util.JCRProxyFactory$SessionContextInvocationHandler.invoke(JCRProxyFactory.java:116)   at $Proxy72.getRootNode(Unknown Source)   at org.suyuntinframework.controllers.FragmentInstancesController.handleLoggedRequestInternal(FragmentInstancesController.java:21)   at org.suyuntinframework.controllers.AbstractLoggedController.handleRequestInternal(AbstractLoggedController.java:31)   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)   at java.lang.Thread.run(Unknown Source)- Servlet.service() for servlet suyuntin-front threw exceptionnet.sf.acegisecurity.AuthenticationCredentialsNotFoundException: A valid SecureContext was not provided in the RequestContext   at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:477)   at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:355)   at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:77)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:41)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:210)   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:156)   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:61)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)   at $Proxy21.getCurrentUserName(Unknown Source)   at org.alfresco.jcr.util.JCRProxyFactory$SessionContextInvocationHandler.invoke(JCRProxyFactory.java:116)   at $Proxy72.getRootNode(Unknown Source)   at org.suyuntinframework.controllers.FragmentInstancesController.handleLoggedRequestInternal(FragmentInstancesController.java:21)   at org.suyuntinframework.controllers.AbstractLoggedController.handleRequestInternal(AbstractLoggedController.java:31)   at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)   at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:717)   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)   at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)   at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)   at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)   at java.lang.Thread.run(Unknown Source)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Here's my controller:

protected ModelAndView handleLoggedRequestInternal(HttpServletRequest request, HttpServletResponse response)            throws Exception {        Node rootNode = SessionUtils.getRepositorySession(request.getSession()).getRootNode();        Node instancesFolder = rootNode.getNode("sy:instancesFolder");        NodeIterator i = instancesFolder.getNodes();        List<Node> list = new LinkedList<Node>();        while (i.hasNext()) {            list.add(i.nextNode());        }        return new ModelAndView("instances-view", "nodes", list);    }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

SessionUtils just brings the Repository Session from the HttpSession. It was saved there when the user logged.

Any comment would be of great help.

Thanks in advance.

Waldemar
1 REPLY 1

walbar
Champ in-the-making
Champ in-the-making
Besides, after this exception, if I press refresh again, it works fine. Again if I leave it for a little while the exception reappears.

Thanks,

Waldemar