已上载项目的图像:“Tapestry 5”
  1. 挂毯5
  2. TAP5-413型

如果存在“脏”ASO,使会话无效可能会在请求结束时导致异常

    XML格式单词可打印JSON格式

细节

    • 缺陷
    • 状态: 关闭
    • 专业
    • 分辨率: 固定的
    • 5.0.18
    • 5.1.0.0
    • 挂毯芯

    描述

      自5.0.18起,Tapestry在从使会话无效的事件处理程序返回时会崩溃(IllegalStateException),并使用ASO。我认为这是TAP-399的意外后果。

      解决方法是取消ASO,但从异常情况来看,这一点并不明显。

      这里有一个例子。除非我们:
      (a) 注释掉onActionFromLogOut()的第一行,因为它引用了_myASO;
      (b) 取消注释将_myASO设置为null的行。

      <html xmlns:t=“http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
      <body>
      注销</a>
      </body>
      </html>

      包jumpstart.web.pages;

      导入org.apache.tapestry5.annotations。应用状态;
      导入org.apache.tapestry5.ioc.annotations。注入;
      导入org.apache.tapestry5.services。RequestGlobals;
      导入org.apache.tapestry5.services。会话;

      公共类TestInvalidate{

      @注入
      private RequestGlobals _RequestGlobals;

      @应用程序状态
      私有字符串_myASO;

      无效设置渲染器()

      {_myASO=“一切都很好”;}

      无效onActionFromLogOut(){
      System.out.println(“_myASO=”+_myASO+“.”);

      会话会话=_requestGlobals.getRequest().getSession(false);
      if(会话!=空)

      {//_myASO=空;session.invalidate();}

      }
      }

      11:55:21811信息[停止]_myASO=一切都很好。
      11:55:21812错误[[默认]]Servlet默认值的Servlet.service()引发异常
      java.lang.IllegalStateException:提交响应后无法创建会话
      在org.apache.catalina.connector上。Request.doGetSession(Request.java:2301)
      在org.apache.catalina.connector上。Request.getSession(Request.java:2075)
      在org.apache.catalina.connector上。RequestFacade.getSession(RequestFacade.java:833)
      在org.apache.tapestry5.internal.services上。请求Impl.getSession(RequestImpl.java:99)
      位于$Request_11e2dd6dd65.getSession($Request_11e2dd6md65.java)
      位于$Request_11e2dd6dd2d.getSession($Request_11e2dd6mdd2d.java)
      在org.apache.tapestry5.internal.services上。SessionApplicationStatePersistenceStrategy.requestDidComplete(会话应用状态持久性策略.java:126)
      在org.apache.tapestry5.internal.services上。EndOfRequestListenerHubImpl.fire(EndOf请求侦听器HubImple.java:40)
      位于$EndOfRequestListenerHub_11e2dd6dd44.fire($EndO fRequestlistenerHub2_11e2D6dd44.java)
      在org.apache.tapestry5.services上。TapestryModule$3.service(Tapestry Module.java:625)
      位于$RequestHandler_11e2dd6dd47.service($RequestHandler.11e2dd6md47.java)
      在org.apache.tapestry5.services上。TapestryModule$2.service(Tapestry Module.java:611)
      位于$RequestHandler_11e2dd6dd47.service($RequestHandler.11e2dd6md47.java)
      在org.apache.tapestry5.internal.services上。静态文件过滤器服务(StaticFilesFilter.java:85)
      位于$RequestHandler_11e2dd6dd47.service($RequestHandler.11e2dd6md47.java)
      在org.apache.tapestry5.internal.services上。CheckForUpdatesFilter$2.invoke(CheckForUpdate过滤器.java:93)
      在org.apache.tapestry5.internal.services上。CheckForUpdatesFilter$2.invoke(CheckForUpdate过滤器.java:84)
      网址:org.apache.tapestry5.ioc.internal.util。ConcurrentBarrier.withRead(Concurrent Barrier.java:83)
      在org.apache.tapestry5.internal.services上。CheckForUpdatesFilter.service(CheckForUpdate过滤器.java:106)
      位于$RequestHandler_11e2dd6dd47.service($RequestHandler.11e2dd6md47.java)
      位于$RequestHandler_11e2dd6dd3e.service($RequestHandler.11e2dd6md3e.java)
      网址:org.apache.tapestry5.services。TapestryModule$16.service(Tapestry Module.java:1007)
      在org.apache.tapestry5.internal.services上。IgnoredPathsFilter.service(IgnoredPath Filter.java:62)
      在$HttpServletRequestFilter_11e2dd6dd3d.service上
      位于$HttpServletRequestHandler_11e2dd6dd3f.service($Http ServletRequest Handler.11e2dd6 dd3f.java)
      位于$HttpServletRequestHandler_11e2dd6dd3c.service($Http ServletRequest Handler_11e2dd6 dd3c.java)
      位于org.apache.tapestry5.TapestryFilter.doFilter(Tapestry Filter.java:179)
      在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      在org.jboss.web.tomcat.filters上。ReplyHeaderFilter.doFilter(ReplyHeader Filter.java:96)
      在org.apache.catalina.core。ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      在org.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      在org.apache.catalina.core。StandardWrapperValve.invoke(StandardWropperValve.java:230)
      在org.apache.catalina.core。调用(StandardContextValve.java:175)
      在org.jboss.web.tomcat.security上。调用(SecurityAssociationValve.java:182)
      在org.jboss.web.tomcat.security上。调用(JaccContextValve.java:84)
      在org.apache.catalina.core。调用(StandardHostValve.java:127)
      在org.apache.catalina.valves。ErrorReportValve.invoke(ErrorReportValve.java:102)
      网址:org.jboss.web.tomcat.service.jca。调用(CachedConnectionValve.java:157)
      在org.apache.catalina.core。StandardEngineValve.invoke(StandardEngine Valve.java:109)
      网址:org.apache.catalina.connector。CoyoteAdapter.service(CoyoteAttapter.java:262)
      位于org.apache.coyote.http11.Http11Processor.process(http11-Processor.java:844)
      位于org.apache.coyote.http11.Http11Protocol$http11-ConnectionHandler.process(http11协议.java:583)
      网址:org.apache.tomcat.util.net。JIoEndpoint$Worker.run(JIoEnppoint.java:446)
      在java.lang.Thread.run(线程.java:613)

      附件

        活动

            hlship公司霍华德·刘易斯船
            杰夫卡伦德杰夫·卡伦德
            投票:
            0 投票支持这个问题
            观察者:
            2 开始关注这个问题

            日期

              创建:
              更新时间:
              断然的: