Thanks.
Gianny Damour-2 wrote: > > Hi Adam, > > This is the correct way to invalidate a session. You have just found an > integration problem with Tomcat which was not tested by the session > invalidation unit test. > > I have improved the unit test and updated the relevant class, namely > ClusteredManager (will commit when I get better connectivity). > > You will need to upgrade the geronimo-tomcat6-clustering-wadi-2.1.2.jar > artifact in order to use the updated class. I attached a new jar > geronimo-tomcat6-clustering-wadi-2.1.2.1.jar packaging the new > ClusteredManager (this is not a released jar and I made up the version > number). Put it in your repository, folder: > repository/org/apache/geronimo/modules/geronimo-tomcat6-clustering-wadi/2.1.2.1/ > > Add the following artifact alias to var/config/artifact_aliases.properties > so that 2.1.2.1 is used instead of 2.1.2: > org.apache.geronimo.modules/geronimo-tomcat6-clustering-wadi/2.1.2/jar=org.apache.geronimo.modules/geronimo-tomcat6-clustering-wadi/2.1.2.1/jar > > Sessions are now successfully invalidated. > > I will work on the proper release of new geronimo-tomcat6-clustering-wadi > artifact and ping you as soon as it is released. > > Thanks, > Gianny > >> Adam Ruggles <[EMAIL PROTECTED]> wrote: >> >> >> I'm using a WADI Clustering with Geronimo 2.1.2/tomcat. >> >> After I call Session.invalidate(); when a user logs out I receive the >> following exception: >> >> java.lang.IllegalStateException: Cannot release session >> [EMAIL PROTECTED] >> at >> org.apache.geronimo.clustering.wadi.WADISessionAdaptor.release(WADISessio >> nAdaptor.java:42) >> at >> org.apache.geronimo.tomcat.cluster.ClusteredManager$ClusteredSession.inva >> lidate(ClusteredManager.java:118) >> at >> org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSess >> ionFacade.java:150) >> at >> com.pearson.powerschool.am.authentication.action.SSOLogoutAction.execute( >> SSOLogoutAction.java:74) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java >> :39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI >> mpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:585) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActio >> nInvocation.java:404) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultA >> ctionInvocation.java:267) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:229) >> at >> com.pearson.powerschool.am.persistence.interceptor.LoggingInterceptor.int >> ercept(LoggingInterceptor.java:76) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercep >> t(DefaultWorkflowInterceptor.java:221) >> at >> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Met >> hodFilterInterceptor.java:86) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Valid >> ationInterceptor.java:150) >> at >> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor >> .doIntercept(AnnotationValidationInterceptor.java:48) >> at >> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Met >> hodFilterInterceptor.java:86) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept( >> ConversionErrorInterceptor.java:123) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Par >> ametersInterceptor.java:167) >> at >> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Met >> hodFilterInterceptor.java:86) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept >> (StaticParametersInterceptor.java:105) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInte >> rceptor.java:83) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUpload >> Interceptor.java:207) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(Chainin >> gInterceptor.java:115) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterce >> ptor.java:143) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(Prepar >> eInterceptor.java:121) >> at >> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Met >> hodFilterInterceptor.java:86) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(Servlet >> ConfigInterceptor.java:170) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInter >> ceptor.java:123) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept >> (ExceptionMappingInterceptor.java:176) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:224) >> at >> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActi >> onInvocation.java:223) >> at >> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerSt >> ack.java:455) >> at >> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvoc >> ation.java:221) >> at >> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java: >> 50) >> at >> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:50 >> 4) >> at >> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher. >> java:419) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat >> ionFilterChain.java:235) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte >> rChain.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.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjec >> tValve.java:56) >> at >> org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invo >> ke(GeronimoStandardContext.java:406) >> at >> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(Geronimo >> BeforeAfterValve.java:47) >> at >> org.apache.geronimo.tomcat.cluster.AbstractClusteredValve$WebClusteredInv >> ocation.invokeLocally(AbstractClusteredValve.java:68) >> at >> org.apache.geronimo.tomcat.cluster.wadi.WADIClusteredValve$WADIWebCluster >> edInvocation.access$000(WADIClusteredValve.java:65) >> at >> org.apache.geronimo.tomcat.cluster.wadi.WADIClusteredValve$WADIWebCluster >> edInvocation$1.doFilter(WADIClusteredValve.java:76) >> at >> org.codehaus.wadi.web.impl.WebInvocation.invoke(WebInvocation.java:115) >> at >> org.codehaus.wadi.core.contextualiser.MemoryContextualiser.handleLocally( >> MemoryContextualiser.java:67) >> at >> org.codehaus.wadi.core.contextualiser.AbstractExclusiveContextualiser.han >> dle(AbstractExclusiveContextualiser.java:108) >> at >> org.codehaus.wadi.core.contextualiser.AbstractMotingContextualiser.contex >> tualise(AbstractMotingContextualiser.java:37) >> at >> org.codehaus.wadi.core.manager.StandardManager.processStateful(StandardMa >> nager.java:150) >> at >> org.codehaus.wadi.core.manager.StandardManager.contextualise(StandardMana >> ger.java:142) >> at >> org.codehaus.wadi.core.manager.ClusteredManager.contextualise(ClusteredMa >> nager.java:81) >> at >> org.apache.geronimo.tomcat.cluster.wadi.WADIClusteredValve$WADIWebCluster >> edInvocation.invoke(WADIClusteredValve.java:84) >> at >> org.apache.geronimo.tomcat.cluster.AbstractClusteredValve.invoke(Abstract >> ClusteredValve.java:42) >> 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.j >> ava:109) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) >> >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28 >> 6) >> at >> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844 >> ) >> at >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H >> ttp11Protocol.java:583) >> at >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) >> at java.lang.Thread.run(Thread.java:613) >> Caused by: java.lang.NullPointerException >> at >> org.apache.catalina.session.ManagerBase.remove(ManagerBase.java:885) >> at >> org.apache.geronimo.tomcat.cluster.ClusteredManager$MigrationListener.not >> ifySessionDestruction(ClusteredManager.java:77) >> at >> org.apache.geronimo.clustering.wadi.BasicWADISessionManager.notifySession >> Destruction(BasicWADISessionManager.java:183) >> at >> org.apache.geronimo.clustering.wadi.BasicWADISessionManager.access$100(Ba >> sicWADISessionManager.java:51) >> at >> org.apache.geronimo.clustering.wadi.BasicWADISessionManager$SessionListen >> erAdapter.onSessionDestruction(BasicWADISessionManager.java:193) >> at >> org.codehaus.wadi.core.manager.BasicSessionMonitor.notifySessionDestructi >> on(BasicSessionMonitor.java:67) >> at >> org.codehaus.wadi.core.manager.StandardManager.destroy(StandardManager.ja >> va:116) >> at >> org.codehaus.wadi.core.session.StandardSession.destroy(StandardSession.ja >> va:66) >> at >> org.codehaus.wadi.core.session.AbstractReplicableSession.destroy(Abstract >> ReplicableSession.java:55) >> at >> org.apache.geronimo.clustering.wadi.WADISessionAdaptor.release(WADISessio >> nAdaptor.java:40) >> ... 116 more >> >> >> Is that an invalid call for a WADI session? If so what would be the >> recommended method for ending a session? >> -- >> View this message in context: >> http://www.nabble.com/WADI-Session-invalidate-causes-an-error-tp19384273s >> 134p19384273.html >> Sent from the Apache Geronimo - Users mailing list archive at >> Nabble.com. > > > > -- View this message in context: http://www.nabble.com/WADI-Session-invalidate-causes-an-error-tp19384273s134p19402942.html Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.