struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kent R. Spillner (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-3114) Work around getSystemClassloader call for compatibility with GAE
Date Thu, 21 May 2009 17:59:44 GMT

    [ https://issues.apache.org/struts/browse/WW-3114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46229#action_46229
] 

Kent R. Spillner commented on WW-3114:
--------------------------------------

Hi, Musachy-

Thanks for the feedback!

Like I said, I don't know if it's a Struts 2 bug, or a Google AppEngine bug.  Either way,
you can't attach a debugger to apps running on AppEngine. :(

I've reported the issue to Google, as well: http://code.google.com/p/googleappengine/issues/detail?id=1580

Best,
Kent



> Work around getSystemClassloader call for compatibility with GAE
> ----------------------------------------------------------------
>
>                 Key: WW-3114
>                 URL: https://issues.apache.org/struts/browse/WW-3114
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Convention
>    Affects Versions: 2.1.7
>            Reporter: Leonard Broman
>            Assignee: Wes Wannemacher
>             Fix For: 2.1.7
>
>         Attachments: demonstrate-gae-security-hole.war, gae-patch.txt
>
>
> The Google App Engine sandbox does not allow application to access the system classloader
using the ClassLoader.getSystemClassLoader() accessor. The convention plugin uses this to
exclude urls to scan in PackageBasedActionConfigBuilder.java. 
> Due to this, convention plugin is not functioning properly in the GAE sandbox.
> Stacktrace from app engine:
> com.opensymphony.xwork2.util.logging.jdk.JdkLogger error: Unable to scan named packages
> java.security.AccessControlException: access denied (java.lang.RuntimePermission getClassLoader)
> 	at java.security.AccessControlContext.checkPermission(Unknown Source)
> 	at java.security.AccessController.checkPermission(Unknown Source)
> 	at java.lang.SecurityManager.checkPermission(Unknown Source)
> 	at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
> 	at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildUrlSet(PackageBasedActionConfigBuilder.java:324)
> 	at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:295)
> 	at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:277)
> 	at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:52)
> 	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:200)
> 	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
> 	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
> 	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
> 	at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
> 	at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
> 	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
> 	at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:589)
> 	at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
> 	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
> 	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
> 	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
> 	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
> 	at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:190)
> 	at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:167)
> 	at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:113)
> 	at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:235)
> 	at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:4547)
> 	at com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:4545)
> 	at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24)
> 	at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:359)
> 	at com.google.net.rpc.impl.Server$2.run(Server.java:792)
> 	at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:56)
> 	at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:489)
> 	at com.google.net.rpc.impl.Server.startRpc(Server.java:748)
> 	at com.google.net.rpc.impl.Server.processRequest(Server.java:340)
> 	at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:422)
> 	at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:319)
> 	at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:290)
> 	at com.google.net.async.Connection.handleReadEvent(Connection.java:419)
> 	at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:733)
> 	at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:207)
> 	at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:101)
> 	at com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:249)
> 	at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run(JavaRuntime.java:373)
> 	at java.lang.Thread.run(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message