Ich stehe vor einem seltsamen Problem und bin nicht in der Lage, die Ursache herauszufinden. Hier ist die Problemstellung.Tapestry5 Logout-Ausnahme
Ich habe eine Tapisserie-Seite mit einem Logout-Button. Wenn ich auf den Logout-Button klicke, wird der folgende Code ausgeführt und ich bekomme die Ausnahme.
// method which called onclick of logout button.
@OnEvent(value = EventConstants.ACTION, component = "tlogout")
public Object logout()
{
request.getSession(false).invalidate();
return "Login";
}
Ausnahme ist:
INFO | net.awl.tapestry5.kawwa.services.KawwaModule.TabLocator | 2011-01-05 14:33:23,321
> Checking for any UPDATES
INFO | net.awl.bfi.websuite.services.AppModule.TimingFilter | 2011-01-05 14:33:23,352
> Request time: 31 ms
ERROR | org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/WebSuiteMoreaTapestry].[default] | 2011-01-05 14:33:23,352
> Servlet.service() for servlet default threw exception
java.lang.IllegalStateException: Cannot create a session after the response has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:2221)
at org.apache.catalina.connector.Request.getSession(Request.java:2031)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:832)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:843)
at net.atos.xa.rm.jaas.openejb.web.RMOpenEJBFilter.doFilter(RMOpenEJBFilter.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.openejb.tomcat.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
Jungs irgendeine Idee? Grüße,
Mahendra
als Methode in dem Stack-Trace nicht erscheint, scheint es in Ordnung auszuführen, aber 'net.atos.xa.rm.jaas.openejb.web.RMOpenEJBFilter' eine Sitzung zu verwenden/erstellen versucht, nach Sie haben es ungültig gemacht, was fehlschlägt. Erfolgt die Ausnahme auf die gleiche Anfrage wie die Abmeldung, oder ist es nach der Umleitung auf die Anmeldeseite? – Henning
Henning ich denke, es ist für die gleiche Anfrage wie die Abmeldung. weil ich versucht habe, system.out.print in @SetupRender-Methode der Anmeldeseite zu setzen, aber es hat nichts auf der Konsole gedruckt.Der nächste Punkt ist, dass ich
net.atos.xa.rm.jaas.openejb.web.RMOpenEJBFilter
doFilter-Methode überprüft und festgestellt habe, dass es einige Attribute von der Sitzung erhält, und deshalb bekomme ich einen Fehler. aber es ist ein Filter, also wird er nach jeder Anfrage/Antwort aufgerufen. Also bedeutet es, dass ich die Sitzung nicht ungültig machen kann? –ein Filter kann es tun, bevor oder nachdem die Anfrage verarbeitet wird. vielleicht müssen Sie openejb benachrichtigen, dass die Sitzung ungültig ist. Ich würde mir den Quellcode, die Dokumente usw. ansehen. Ich glaube nicht, dass es sich um ein Problem mit dem Wandteppich handelt. tagging incase openejb Leute haben Ideen. – pstanton