Hi,

I have groovy script that read an image from a Blob field, and write
it to the response.  It runs well on my local environment, but causes
java.security.AccessControlException  on the google app engine.

Any idea why it happened and how to fix it?

The script (image.groovy) looks like this:
import com.google.appengine.api.datastore.*
import com.google.appengine.api.images.*

def k = KeyFactory.stringToKey( params.key )
def img = datastore.get(k).content.getBytes();

if ( img ){

        def width = params.width;
        def height = params.height;
        if ( width && height ){
                Image oldImage = ImagesServiceFactory.makeImage(img);
                Transform resize =
ImagesServiceFactory.makeResize(width.toInteger(),
height.toInteger());
                Image newImage = images.applyTransform(resize,
oldImage);
                img = newImage.getImageData();
        }

        response.getOutputStream().write(img)
}else{

        println "failed to find img"

}

And the error:
04-07 08:44PM 14.540  GroovyServlet Error: script: '/image.groovy':
Script processing failed.access denied (java.lang.Runti
04-07 08:44PM 14.540  java.security.AccessControlException: access
denied (java.lang.RuntimePermission getClassLoader)
04-07 08:44PM 14.540  at
com.google.appengine.runtime.Request.process-7950a73f1237deb5(Request.java)
04-07 08:44PM 14.540  at
org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.<init>(ClassLoaderForClassArtifacts.jav
04-07 08:44PM 14.540  at
org.codehaus.groovy.runtime.callsite.CallSiteClassLoader.<init>(CallSiteClassLoader.java:
40)
04-07 08:44PM 14.541  at org.codehaus.groovy.reflection.CachedClass
$5$1.run(CachedClass.java:144)
04-07 08:44PM 14.541  at org.codehaus.groovy.reflection.CachedClass
$5$1.run(CachedClass.java:142)
04-07 08:44PM 14.541  at
java.security.AccessController.doPrivileged(AccessController.java:34)
04-07 08:44PM 14.541  at org.codehaus.groovy.reflection.CachedClass
$5.initValue(CachedClass.java:141)
04-07 08:44PM 14.541  at org.codehaus.groovy.reflection.CachedClass
$5.initValue(CachedClass.java:139)
04-07 08:44PM 14.541  at
org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:
33)
04-07 08:44PM 14.541  at
org.codehaus.groovy.util.LazyReference.get(LazyReference.java:20)
04-07 08:44PM 14.541  at
org.codehaus.groovy.reflection.CachedClass.getCallSiteLoader(CachedClass.java:
464)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compilePojoMethod(CallSiteGenerator.java:
222
04-07 08:44PM 14.541  at
org.codehaus.groovy.reflection.CachedMethod.createPojoMetaMethodSite(CachedMethod.java:
244)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createCachedMethodSite(PojoMetaMethodSite.j
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createPojoMetaMethodSite(PojoMetaMethodSite
04-07 08:44PM 14.541  at
groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:2987)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:
114)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:
148)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
40)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
117)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
125)
04-07 08:44PM 14.541  at image.run(image.groovy:18)
04-07 08:44PM 14.541  at
groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:464)
04-07 08:44PM 14.541  at groovy.servlet.GroovyServlet
$1.call(GroovyServlet.java:120)
04-07 08:44PM 14.541  at
org.codehaus.groovy.runtime.GroovyCategorySupport
$ThreadCategoryInfo.use(GroovyCategorySupport.java
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.GroovyCategorySupport
$ThreadCategoryInfo.access$200(GroovyCategorySuppo
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:
201)
04-07 08:44PM 14.542  at
groovy.servlet.GroovyServlet.service(GroovyServlet.java:129)
04-07 08:44PM 14.542  at groovyx.gaelyk.GaelykServlet.super
$5$service(GaelykServlet.groovy)
04-07 08:44PM 14.542  at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
04-07 08:44PM 14.542  at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.542  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.542  at java.lang.reflect.Method.invoke(Method.java:
43)
04-07 08:44PM 14.542  at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
88)
04-07 08:44PM 14.542  at
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
04-07 08:44PM 14.542  at
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:
1
04-07 08:44PM 14.542  at groovyx.gaelyk.GaelykServlet
$_service_closure1.doCall(GaelykServlet.groovy:45)
04-07 08:44PM 14.542  at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
04-07 08:44PM 14.542  at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.542  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.542  at java.lang.reflect.Method.invoke(Method.java:
43)
04-07 08:44PM 14.542  at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
88)
04-07 08:44PM 14.542  at
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
272)
04-07 08:44PM 14.542  at
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:
66)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
44)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
143)
04-07 08:44PM 14.542  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
151)
04-07 08:44PM 14.543  at groovyx.gaelyk.GaelykServlet
$_service_closure1.doCall(GaelykServlet.groovy)
04-07 08:44PM 14.543  at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
04-07 08:44PM 14.543  at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.543  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.543  at java.lang.reflect.Method.invoke(Method.java:
43)
04-07 08:44PM 14.543  at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
88)
04-07 08:44PM 14.543  at
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
272)
04-07 08:44PM 14.543  at
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
04-07 08:44PM 14.543  at groovy.lang.Closure.call(Closure.java:276)
04-07 08:44PM 14.543  at groovy.lang.Closure.call(Closure.java:271)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.GroovyCategorySupport
$ThreadCategoryInfo.use(GroovyCategorySupport.java
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.GroovyCategorySupport
$ThreadCategoryInfo.access$200(GroovyCategorySuppo
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:
201)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.DefaultGroovyMethods.use(DefaultGroovyMethods.java:
315)
04-07 08:44PM 14.543  at org.codehaus.groovy.runtime.dgm
$644.invoke(Unknown Source)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite
$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(P
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:
51)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
44)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
143)
04-07 08:44PM 14.543  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
155)
04-07 08:44PM 14.543  at
groovyx.gaelyk.GaelykServlet.service(GaelykServlet.groovy:44)
04-07 08:44PM 14.543  at
javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
04-07 08:44PM 14.543  at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
04-07 08:44PM 14.544  at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
04-07 08:44PM 14.544  at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
04-07 08:44PM 14.544  at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.544  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
04-07 08:44PM 14.544  at java.lang.reflect.Method.invoke(Method.java:
43)
04-07 08:44PM 14.544  at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite
$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke
04-07 08:44PM 14.545  at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
52)
04-07 08:44PM 14.545  at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
40)
04-07 08:44PM 14.545  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
117)
04-07 08:44PM 14.545  at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
129)
04-07 08:44PM 14.545  at
groovyx.gaelyk.routes.RoutesFilter.doFilter(RoutesFilter.groovy:116)
04-07 08:44PM 14.545  at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
04-07 08:44PM 14.545  at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
04-07 08:44PM 14.545  at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
04-07 08:44PM 14.545  at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
04-07 08:44PM 14.545  at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
04-07 08:44PM 14.545  at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java
04-07 08:44PM 14.545  at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
04-07 08:44PM 14.545  at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
04-07 08:44PM 14.545  at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
04-07 08:44PM 14.546  at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
04-07 08:44PM 14.546  at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
04-07 08:44PM 14.546  at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
04-07 08:44PM 14.546  at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
04-07 08:44PM 14.546  at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
04-07 08:44PM 14.546  at org.mortbay.jetty.Server.handle(Server.java:
326)
04-07 08:44PM 14.546  at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
04-07 08:44PM 14.546  at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
04-07 08:44PM 14.546  at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
04-07 08:44PM 14.546  at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
04-07 08:44PM 14.546  at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdap
04-07 08:44PM 14.546  at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
243)
04-07 08:44PM 14.546  at com.google.apphosting.base.RuntimePb
$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5485)
04-07 08:44PM 14.546  at com.google.apphosting.base.RuntimePb
$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:5483)
04-07 08:44PM 14.546  at
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
24
04-07 08:44PM 14.546  at
com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:398)
04-07 08:44PM 14.546  at com.google.net.rpc.impl.Server
$2.run(Server.java:852)
04-07 08:44PM 14.546  at
com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:
56)
04-07 08:44PM 14.546  at
com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:
536)
04-07 08:44PM 14.546  at
com.google.net.rpc.impl.Server.startRpc(Server.java:807)
04-07 08:44PM 14.546  at
com.google.net.rpc.impl.Server.processRequest(Server.java:369)
04-07 08:44PM 14.546  at
com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:
442)
04-07 08:44PM 14.547  at
com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:
319)
04-07 08:44PM 14.547  at
com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:
290)
04-07 08:44PM 14.547  at
com.google.net.async.Connection.handleReadEvent(Connection.java:474)
04-07 08:44PM 14.547  at
com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:
831)
04-07 08:44PM 14.547  at
com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
207)
04-07 08:44PM 14.547  at
com.google.net.async.EventDispatcher.loop(EventDispatcher.java:103)
04-07 08:44PM 14.547  at
com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
251)
04-07 08:44PM 14.547  at com.google.apphosting.runtime.JavaRuntime
$RpcRunnable.run(JavaRuntime.java:404)
04-07 08:44PM 14.547  at java.lang.Thread.run(Unknown Source)

Thanks

Daisy

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to