That doesn't look good .. but it is an earlier version of the framework, looks like 5.0.3 or 5.0.4.
Looks like its hitting this code: public CookieSource buildCookieSource() { return new CookieSource() { public Cookie[] getCookies() { return _requestGlobals.getHTTPServletRequest().getCookies(); } }; } That should be pretty bullet proof, since the _requestGlobals field is final and set in the constructor. I'm not sure what other changes may have affected this situation in the intervening releases. On Jan 8, 2008 4:09 AM, Geoff Callender <[EMAIL PROTECTED]> wrote: > While trying to demonstrate the dangers of multiple submits, I found > Tapestry throwing NullPointerException. > > Can someone who understands Tapestry's internals shed some light on > this? > > To make the test possible, I emulated a slow operation by sleeping 2 > seconds. The NPE then occurred on the 3rd or later click - it varied > quite a bit. Here's how I emulated the slow operation... > > @ApplicationState > private MyOrder _myOrder; > > Object onSuccess() { > sleep(2000); // Sleep 2 seconds to simulate slow transaction > > int newQuantity = _myOrder.getQuantity() + 1; > _myOrder.setQuantity(newQuantity); > > return _page2; > } > > private void sleep(long duration) { > try { > Thread.sleep(duration); > } > catch (InterruptedException e) { > } > } > > Here's the exception... > > 22:45:53,443 ERROR [RequestExceptionHandler] Processing of request > failed with uncaught exception: java.lang.NullPointerException > java.lang.NullPointerException > at org.apache.tapestry.internal.services.InternalModule > $2.getCookies(InternalModule.java:307) > at > $CookieSource_11759363dd0.getCookies($CookieSource_11759363dd0.java) > at > org > .apache > .tapestry > .internal.services.CookiesImpl.readCookieValue(CookiesImpl.java:53) > at $Cookies_11759363dcf.readCookieValue($Cookies_11759363dcf.java) > at > org > .apache > .tapestry > .services > .PersistentLocaleImpl.getCookieValue(PersistentLocaleImpl.java:46) > at > org > .apache > .tapestry.services.PersistentLocaleImpl.get(PersistentLocaleImpl.java: > 40) > at > $PersistentLocale_11759363dce.get($PersistentLocale_11759363dce.java) > at > org > .apache > .tapestry > .internal > .services > .LocalizationSetterImpl.setThreadLocale(LocalizationSetterImpl.java:98) > at > $ > LocalizationSetter_11759363dcb > .setThreadLocale($LocalizationSetter_11759363dcb.java) > at > org > .apache > .tapestry > .internal.services.LocalizationFilter.service(LocalizationFilter.java: > 41) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at org.apache.tapestry.services.TapestryModule > $2.service(TapestryModule.java:688) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > org > .apache > .tapestry > .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:97) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:88) > at > org > .apache > .tapestry > .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77) > at > org > .apache > .tapestry > .internal > .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java) > at org.apache.tapestry.services.TapestryModule > $12.service(TapestryModule.java:1086) > at > $ > HttpServletRequestHandler_11759363dc5 > .service($HttpServletRequestHandler_11759363dc5.java) > at > org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135) > at > org > .apache > .catalina > .core > .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: > 235) > at > org > .apache > .catalina > .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org > .jboss > .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java: > 96) > 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: > 230) > at > org > .apache > .catalina.core.StandardContextValve.invoke(StandardContextValve.java: > 175) > at > org > .jboss > .web > .tomcat > .security > .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) > at > org > .jboss > .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) > at > org > .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: > 127) > at > org > .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: > 102) > at > org > .jboss > .web > .tomcat > .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java: > 157) > at > org > .apache > .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > 262) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: > 844) > at org.apache.coyote.http11.Http11Protocol > $Http11ConnectionHandler.process(Http11Protocol.java:583) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: > 446) > at java.lang.Thread.run(Thread.java:613) > 22:45:53,449 ERROR [ExceptionReport] Render queue error in > BeginRender[core/ExceptionReport:renderobject_0]: > org.apache.tapestry.ioc.internal.util.TapestryException > org.apache.tapestry.ioc.internal.util.TapestryException [at > classpath:org/apache/tapestry/corelib/pages/ExceptionReport.tml, line > 45, column 41] > at > org > .apache > .tapestry > .internal > .structure > .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:935) > at > org.apache.tapestry.internal.structure.ComponentPageElementImpl.access > $100(ComponentPageElementImpl.java:69) > at org.apache.tapestry.internal.structure.ComponentPageElementImpl > $10.render(ComponentPageElementImpl.java:349) > at > org > .apache > .tapestry.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:58) > at > org > .apache > .tapestry > .internal > .services > .PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:40) > at > $ > PageMarkupRenderer_11759363e09 > .renderPageMarkup($PageMarkupRenderer_11759363e09.java) > at > org > .apache > .tapestry > .internal > .services > .PageResponseRendererImpl > .renderPageResponse(PageResponseRendererImpl.java:71) > at > $ > PageResponseRenderer_11759363ddb > .renderPageResponse($PageResponseRenderer_11759363ddb.java) > at > org > .apache > .tapestry > .internal > .services > .DefaultRequestExceptionHandler > .handleRequestException(DefaultRequestExceptionHandler.java:60) > at > $ > RequestExceptionHandler_11759363dca > .handleRequestException($RequestExceptionHandler_11759363dca.java) > at org.apache.tapestry.services.TapestryModule > $2.service(TapestryModule.java:697) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > org > .apache > .tapestry > .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:97) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:88) > at > org > .apache > .tapestry > .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77) > at > org > .apache > .tapestry > .internal > .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java) > at org.apache.tapestry.services.TapestryModule > $12.service(TapestryModule.java:1086) > at > $ > HttpServletRequestHandler_11759363dc5 > .service($HttpServletRequestHandler_11759363dc5.java) > at > org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135) > at > org > .apache > .catalina > .core > .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: > 235) > at > org > .apache > .catalina > .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org > .jboss > .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java: > 96) > 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: > 230) > at > org > .apache > .catalina.core.StandardContextValve.invoke(StandardContextValve.java: > 175) > at > org > .jboss > .web > .tomcat > .security > .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) > at > org > .jboss > .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) > at > org > .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: > 127) > at > org > .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: > 102) > at > org > .jboss > .web > .tomcat > .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java: > 157) > at > org > .apache > .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > 262) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: > 844) > at org.apache.coyote.http11.Http11Protocol > $Http11ConnectionHandler.process(Http11Protocol.java:583) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: > 446) > at java.lang.Thread.run(Thread.java:613) > Caused by: java.lang.NullPointerException > at $Request_11759363def.getContextPath($Request_11759363def.java) > at $Request_11759363dc0.getContextPath($Request_11759363dc0.java) > at > org > .apache > .tapestry > .internal.services.RequestRenderer.render(RequestRenderer.java:34) > at > org > .apache > .tapestry > .internal.services.RequestRenderer.render(RequestRenderer.java:24) > at > $ObjectRenderer_11759363ec6.render($ObjectRenderer_11759363ec6.java) > at > $ObjectRenderer_11759363dad.render($ObjectRenderer_11759363dad.java) > at > org > .apache > .tapestry > .corelib.components.RenderObject.beginRender(RenderObject.java:39) > at > org > .apache > .tapestry.corelib.components.RenderObject.beginRender(RenderObject.java) > at org.apache.tapestry.internal.structure.ComponentPageElementImpl > $10$1.run(ComponentPageElementImpl.java:345) > at > org > .apache > .tapestry > .internal > .structure > .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:923) > ... 40 more > 22:45:53,450 ERROR [PagePool] Page Page[core/ExceptionReport en_US] is > dirty, and will be discarded (rather than returned to the page pool). > 22:45:53,450 ERROR [[default]] Servlet.service() for servlet default > threw exception > org.apache.tapestry.ioc.internal.util.TapestryException [at > classpath:org/apache/tapestry/corelib/pages/ExceptionReport.tml, line > 45, column 41] > at > org > .apache > .tapestry > .internal > .structure > .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:935) > at > org.apache.tapestry.internal.structure.ComponentPageElementImpl.access > $100(ComponentPageElementImpl.java:69) > at org.apache.tapestry.internal.structure.ComponentPageElementImpl > $10.render(ComponentPageElementImpl.java:349) > at > org > .apache > .tapestry.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:58) > at > org > .apache > .tapestry > .internal > .services > .PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:40) > at > $ > PageMarkupRenderer_11759363e09 > .renderPageMarkup($PageMarkupRenderer_11759363e09.java) > at > org > .apache > .tapestry > .internal > .services > .PageResponseRendererImpl > .renderPageResponse(PageResponseRendererImpl.java:71) > at > $ > PageResponseRenderer_11759363ddb > .renderPageResponse($PageResponseRenderer_11759363ddb.java) > at > org > .apache > .tapestry > .internal > .services > .DefaultRequestExceptionHandler > .handleRequestException(DefaultRequestExceptionHandler.java:60) > at > $ > RequestExceptionHandler_11759363dca > .handleRequestException($RequestExceptionHandler_11759363dca.java) > at org.apache.tapestry.services.TapestryModule > $2.service(TapestryModule.java:697) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > org > .apache > .tapestry > .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:84) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:97) > at org.apache.tapestry.internal.services.CheckForUpdatesFilter > $2.invoke(CheckForUpdatesFilter.java:88) > at > org > .apache > .tapestry > .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77) > at > org > .apache > .tapestry > .internal > .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:110) > at > $RequestHandler_11759363dcd.service($RequestHandler_11759363dcd.java) > at > $RequestHandler_11759363dc6.service($RequestHandler_11759363dc6.java) > at org.apache.tapestry.services.TapestryModule > $12.service(TapestryModule.java:1086) > at > $ > HttpServletRequestHandler_11759363dc5 > .service($HttpServletRequestHandler_11759363dc5.java) > at > org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135) > at > org > .apache > .catalina > .core > .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: > 235) > at > org > .apache > .catalina > .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org > .jboss > .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java: > 96) > 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: > 230) > at > org > .apache > .catalina.core.StandardContextValve.invoke(StandardContextValve.java: > 175) > at > org > .jboss > .web > .tomcat > .security > .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) > at > org > .jboss > .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) > at > org > .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: > 127) > at > org > .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: > 102) > at > org > .jboss > .web > .tomcat > .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java: > 157) > at > org > .apache > .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: > 262) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: > 844) > at org.apache.coyote.http11.Http11Protocol > $Http11ConnectionHandler.process(Http11Protocol.java:583) > at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: > 446) > at java.lang.Thread.run(Thread.java:613) > Caused by: java.lang.NullPointerException > at $Request_11759363def.getContextPath($Request_11759363def.java) > at $Request_11759363dc0.getContextPath($Request_11759363dc0.java) > at > org > .apache > .tapestry > .internal.services.RequestRenderer.render(RequestRenderer.java:34) > at > org > .apache > .tapestry > .internal.services.RequestRenderer.render(RequestRenderer.java:24) > at > $ObjectRenderer_11759363ec6.render($ObjectRenderer_11759363ec6.java) > at > $ObjectRenderer_11759363dad.render($ObjectRenderer_11759363dad.java) > at > org > .apache > .tapestry > .corelib.components.RenderObject.beginRender(RenderObject.java:39) > at > org > .apache > .tapestry.corelib.components.RenderObject.beginRender(RenderObject.java) > at org.apache.tapestry.internal.structure.ComponentPageElementImpl > $10$1.run(ComponentPageElementImpl.java:345) > at > org > .apache > .tapestry > .internal > .structure > .ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:923) > ... 40 more > > > Thanks, > > Geoff -- Howard M. Lewis Ship Creator Apache Tapestry and Apache HiveMind --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]