GAE doesn't like user code calling ThreadGroup.getParent() (line 597 of
TapestryInternalUtils, in your stack trace) which seems an unnecessary
restriction given that access to Thread.currentThread().getThreadGroup() is
allowed. I wouldn't be surprised if there was a bug open against GAE on
that.

Anyway, you can certainly get it to work on GAE as well. The simple answer
is that you probably don't want to show the development exception page on
production anyway. Beyond that, you might need to override
ExceptionReport.getThreads() to return perhaps just the current thread. I
don't think the default behavior of Tapestry should change just for GAE.

Kalle

On Fri, Nov 14, 2014 at 3:15 PM, Alex Kotchnev <[email protected]> wrote:

> Bummer, I just confirmed that the same error happens when deployed in
> AppEngine. At first glance this looked similar to an issue that was fixed a
> couple of years ago (https://issues.apache.org/jira/browse/TAP5-1616), but
> this is definitely different. I do recall that in general in production one
> might want to have a different exception page (than this default), yet I
> wonder if there is anything that can still be done about this before 5.4
> goes out (if it's considered important enough for a 5.4 release).
>
> Cheers - Alex K
>
> On Fri, Nov 14, 2014 at 6:08 PM, Alex Kotchnev <[email protected]> wrote:
>
> > I took 5.4-beta-22 out for a spin yesterday and I ran into the following
> exception when trying to run the AppEngine local dev server and there is an
> error on the page and Tapestry attempts to display the exception page. I'm
> not yet sure if this is going to work when deployed to AppEngine proper,
> but I was wondering if there is a way to override either whether the
> exception page attempts to do this.
> >
> >
> > In the local environment, I can certainly start the local dev server
> with a <jvmFlag>-Denable_all_permissions=true</jvmFlag> option that avoids
> the issue in my local setup, so it's not a massive deal. Yet, this was
> certainly not happening in 5.3.7 so I wonder what changed.
> >
> >
> > Other than that, 5.4 just looks fantastic - I had been holding off on
> trying it out , but now I can't wait this release to go out !
> >
> > Any ideas ?
> >
> >
> > Cheers -
> >
> > org.apache.tapestry5.internal.services.RenderQueueException: Render
> queue error in SetupRender[core/ExceptionReport:loop_0]: Failure reading
> parameter 'source' of component core/ExceptionReport:loop_0: access denied
> ("java.lang.RuntimePermission" "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:87)
> >       at
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:114)
> >       at $PageRenderQueue_954065d89e49.render(Unknown Source)
> >       at $PageRenderQueue_954065d89e48.render(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
> >       at
> org.apache.tapestry5.internal.services.PageNameMetaInjector.renderMarkup(PageNameMetaInjector.java:41)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$29.renderMarkup(TapestryModule.java:1810)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$28.renderMarkup(TapestryModule.java:1800)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$27.renderMarkup(TapestryModule.java:1784)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$26.renderMarkup(TapestryModule.java:1768)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.javascript.AddBrowserCompatibilityStyles.renderMarkup(AddBrowserCompatibilityStyles.java:45)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.javascript.ConfigureHTMLElementFilter.renderMarkup(ConfigureHTMLElementFilter.java:45)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.JavaScriptModule$1.renderMarkup(JavaScriptModule.java:259)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$25.renderMarkup(TapestryModule.java:1751)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at $MarkupRenderer_954065d89e47.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:47)
> >       at $PageMarkupRenderer_954065d89e45.renderPageMarkup(Unknown
> Source)
> >       at
> org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:64)
> >       at $PageResponseRenderer_954065d89dbf.renderPageResponse(Unknown
> Source)
> >       at
> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.renderException(DefaultRequestExceptionHandler.java:261)
> >       at
> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:144)
> >       at
> $RequestExceptionHandler_954065d89d7c.handleRequestException(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:854)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:844)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
> >       at
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at $RequestHandler_954065d89d6d.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:255)
> >       at
> org.tynamo.resteasy.JSAPIRequestFilter.service(JSAPIRequestFilter.java:80)
> >       at $HttpServletRequestFilter_954065d89d6c.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:106)
> >       at $HttpServletRequestFilter_954065d89d6b.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
> >       at $HttpServletRequestFilter_954065d89d68.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:804)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d67.service(Unknown Source)
> >       at
> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
> >       at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> >       at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> >       at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> >       at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
> >       at
> com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
> >       at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >       at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:491)
> >       at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >       at org.mortbay.jetty.Server.handle(Server.java:326)
> >       at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> >       at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
> >       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
> >       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> >       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> >       at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> >       at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> Failure reading parameter 'source' of component
> core/ExceptionReport:loop_0: access denied ("java.lang.RuntimePermission"
> "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:155)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.render(ComponentPageElementImpl.java:183)
> >       at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:79)
> >       ... 94 more
> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> Failure reading parameter 'source' of component
> core/ExceptionReport:loop_0: access denied ("java.lang.RuntimePermission"
> "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:268)
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:381)
> >       at
> org.apache.tapestry5.corelib.components.Loop.conduit_get_source(Loop.java)
> >       at
> org.apache.tapestry5.corelib.components.Loop.setup(Loop.java:324)
> >       at
> org.apache.tapestry5.corelib.components.Loop.setupRender(Loop.java)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:176)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:135)
> >       ... 96 more
> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> access denied ("java.lang.RuntimePermission" "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:67)
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:263)
> >       ... 102 more
> > Caused by: java.security.AccessControlException: access denied
> ("java.lang.RuntimePermission" "modifyThreadGroup")
> >       at
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
> >       at
> java.security.AccessController.checkPermission(AccessController.java:559)
> >       at
> java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
> >       at
> com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429)
> >       at
> com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454)
> >       at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
> >       at java.lang.ThreadGroup.getParent(ThreadGroup.java:167)
> >       at
> org.apache.tapestry5.internal.TapestryInternalUtils.getAllThreads(TapestryInternalUtils.java:597)
> >       at
> org.apache.tapestry5.corelib.pages.ExceptionReport.getThreads(ExceptionReport.java:213)
> >       at $InternalPropertyConduit_954065d89f01.get(Unknown Source)
> >       at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:63)
> >       ... 103 more
> >
> > Caused by:
> >
> > org.apache.tapestry5.ioc.internal.util.TapestryException: Failure
> reading parameter 'source' of component core/ExceptionReport:loop_0: access
> denied ("java.lang.RuntimePermission" "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:155)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.render(ComponentPageElementImpl.java:183)
> >       at
> org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:79)
> >       at
> org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:114)
> >       at $PageRenderQueue_954065d89e49.render(Unknown Source)
> >       at $PageRenderQueue_954065d89e48.render(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
> >       at
> org.apache.tapestry5.internal.services.PageNameMetaInjector.renderMarkup(PageNameMetaInjector.java:41)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$29.renderMarkup(TapestryModule.java:1810)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$28.renderMarkup(TapestryModule.java:1800)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$27.renderMarkup(TapestryModule.java:1784)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$26.renderMarkup(TapestryModule.java:1768)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.javascript.AddBrowserCompatibilityStyles.renderMarkup(AddBrowserCompatibilityStyles.java:45)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.javascript.ConfigureHTMLElementFilter.renderMarkup(ConfigureHTMLElementFilter.java:45)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.JavaScriptModule$1.renderMarkup(JavaScriptModule.java:259)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$25.renderMarkup(TapestryModule.java:1751)
> >       at $MarkupRenderer_954065d89e4c.renderMarkup(Unknown Source)
> >       at $MarkupRenderer_954065d89e47.renderMarkup(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:47)
> >       at $PageMarkupRenderer_954065d89e45.renderPageMarkup(Unknown
> Source)
> >       at
> org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:64)
> >       at $PageResponseRenderer_954065d89dbf.renderPageResponse(Unknown
> Source)
> >       at
> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.renderException(DefaultRequestExceptionHandler.java:261)
> >       at
> org.apache.tapestry5.internal.services.DefaultRequestExceptionHandler.handleRequestException(DefaultRequestExceptionHandler.java:144)
> >       at
> $RequestExceptionHandler_954065d89d7c.handleRequestException(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:854)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:844)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
> >       at
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> >       at
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
> >       at $RequestHandler_954065d89d7e.service(Unknown Source)
> >       at $RequestHandler_954065d89d6d.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:255)
> >       at
> org.tynamo.resteasy.JSAPIRequestFilter.service(JSAPIRequestFilter.java:80)
> >       at $HttpServletRequestFilter_954065d89d6c.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:106)
> >       at $HttpServletRequestFilter_954065d89d6b.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
> >       at $HttpServletRequestFilter_954065d89d68.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at
> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:804)
> >       at $HttpServletRequestHandler_954065d89d6f.service(Unknown Source)
> >       at $HttpServletRequestHandler_954065d89d67.service(Unknown Source)
> >       at
> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
> >       at
> com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
> >       at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
> >       at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
> >       at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> >       at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> >       at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> >       at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
> >       at
> com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
> >       at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >       at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:491)
> >       at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> >       at org.mortbay.jetty.Server.handle(Server.java:326)
> >       at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> >       at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
> >       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
> >       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> >       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> >       at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> >       at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> Failure reading parameter 'source' of component
> core/ExceptionReport:loop_0: access denied ("java.lang.RuntimePermission"
> "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:268)
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:381)
> >       at
> org.apache.tapestry5.corelib.components.Loop.conduit_get_source(Loop.java)
> >       at
> org.apache.tapestry5.corelib.components.Loop.setup(Loop.java:324)
> >       at
> org.apache.tapestry5.corelib.components.Loop.setupRender(Loop.java)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:176)
> >       at
> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:135)
> >       ... 96 more
> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> access denied ("java.lang.RuntimePermission" "modifyThreadGroup") [at
> classpath:org/apache/tapestry5/corelib/pages/ExceptionReport.tml, line 110]
> >       at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:67)
> >       at
> org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:263)
> >       ... 102 more
> >
> >
> > Caused by: java.security.AccessControlException: access denied
> ("java.lang.RuntimePermission" "modifyThreadGroup")
> >       at
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
> >       at
> java.security.AccessController.checkPermission(AccessController.java:559)
> >       at
> java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
> >       at
> com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429)
> >       at
> com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454)
> >       at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
> >       at java.lang.ThreadGroup.getParent(ThreadGroup.java:167)
> >       at
> org.apache.tapestry5.internal.TapestryInternalUtils.getAllThreads(TapestryInternalUtils.java:597)
> >       at
> org.apache.tapestry5.corelib.pages.ExceptionReport.getThreads(ExceptionReport.java:213)
> >       at $InternalPropertyConduit_954065d89f01.get(Unknown Source)
> >       at
> org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:63)
> >
> >
>

Reply via email to