ZeroTurnaround Support Forum » JRebel Support

GAE and wicket problem

(7 posts)

No tags yet.


  1. msz

    guest

    I tried to run JRebel with wicket application on Google App Engine. I have created simple wicket app with "wicket-archetype-quickstart" maven archetype and it worked with JRebel (on Tomcat). After few modifications I was able to run it on Google App Engine. Problem occured when I added JRebel support. Any attempt to load a page ends with an error:

    HTTP ERROR: 500

    access denied (java.io.FilePermission /home/marek/myworkspace/wicket_gae_test/src/main/resources/org/apache/wicket/RequestContext.class read)
    RequestURI=/

    Caused by:

    java.security.AccessControlException: access denied (java.io.FilePermission /home/marek/myworkspace/wicket_gae_test/src/main/resources/org/apache/wicket/RequestContext.class read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:151)
    at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
    at java.io.File.exists(File.java:731)
    at com.zeroturnaround.javarebel.ew.a(JRebel:143)
    at com.zeroturnaround.javarebel.ew.a(JRebel:126)
    at com.zeroturnaround.javarebel.ew.getLocalResource(JRebel:106)
    at com.zeroturnaround.javarebel.lq.getLocalResource(JRebel:65)
    at com.zeroturnaround.javarebel.lq.getLocalResource(JRebel:65)
    at com.zeroturnaround.javarebel.hF.getLocalResource(JRebel:27)
    at com.zeroturnaround.javarebel.lu.d(JRebel:308)
    at com.zeroturnaround.javarebel.lu.c(JRebel:190)
    at com.zeroturnaround.javarebel.gd.getClassManager(JRebel:138)
    at com.zeroturnaround.javarebel.gd.a(JRebel:117)
    at com.zeroturnaround.javarebel.gd.loadReloadableClass(JRebel:403)
    at java.net.URLClassLoader.findClass(URLClassLoader.java)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:352)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

    wicket version: 1.4.6
    GAE version: 1.3.0
    JRebel version: 2.2.1

    Have anyone idea how to fix this?

    Posted 7 months ago #
  2. lauri

    Member
    Posts: 480

    Try with the nightly build http://www.zeroturnaround.com/nightly-build/jrebel-nightly-dev.zip

    Posted 7 months ago #
  3. rein

    ExtremeRebel
    Posts: 240

    GAE support is improved in JRebel 3.x (file permissions as well), so try the nightly.

    Posted 7 months ago #
  4. msz

    guest

    With nightly build it works better but still I get an error. Now wicket displays an exception:

    Unexpected RuntimeException

    Root cause:

    java.security.AccessControlException: access denied (java.io.FilePermission /home/marek/myworkspace/wicket_gae_test/src/main/java/com/test/tester/HomePage.html read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:151)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at java.io.File.isDirectory(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.initializeHeaders(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.getContentLength(Unknown Source)
    at org.apache.wicket.util.resource.UrlResourceStream.<init>(UrlResourceStream.java:85)
    at org.apache.wicket.util.resource.locator.ResourceStreamLocator.getResourceStream(ResourceStreamLocator.java:194)
    at org.apache.wicket.util.resource.locator.ResourceStreamLocator.locateByClassLoader(ResourceStreamLocator.java:146)
    at org.apache.wicket.util.resource.locator.ResourceStreamLocator.locate(ResourceStreamLocator.java:98)
    at org.apache.wicket.util.resource.locator.ResourceStreamLocator.locate(ResourceStreamLocator.java:122)
    at org.apache.wicket.markup.DefaultMarkupResourceStreamProvider.getMarkupResourceStream(DefaultMarkupResourceStreamProvider.java:82)
    at org.apache.wicket.markup.MarkupCache.getMarkup(MarkupCache.java:305)
    at org.apache.wicket.markup.MarkupCache.getMarkupStream(MarkupCache.java:216)
    at org.apache.wicket.MarkupContainer.getAssociatedMarkupStream(MarkupContainer.java:351)
    at com.test.tester.HomePage.getAssociatedMarkupStream(HomePage.java:50001)
    at org.apache.wicket.Page.onRender(Page.java:1558)
    at com.test.tester.HomePage.onRender(HomePage.java:50001)
    at org.apache.wicket.Component.render(Component.java:2450)
    at org.apache.wicket.Page.renderPage(Page.java:914)
    at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:261)
    at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:105)
    at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1258)
    at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
    at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
    at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
    at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:51)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:352)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

    If I add to rebel.xml exclusions for .html files JRebel successfully reloads classes but of course it doesn't refresh markup files.

    Posted 7 months ago #
  5. rein

    ExtremeRebel
    Posts: 240

    I was able to reproduce the same error.
    I'm trying to fix this and I'll let you know about the progress.

    Posted 6 months ago #
  6. rein

    ExtremeRebel
    Posts: 240

    Great!
    Seems like I never thought someone to use rebel.xml with GAE.
    Well! As we got you I finally added the integration.
    Get the new nightly and let me know if it solved the problem:

    http://www.zeroturnaround.com/nightly-build/jrebel-nightly-dev.zip

    Posted 6 months ago #
  7. Daniel

    guest

    Great! I will give that a try as well very soon!

    Posted 6 months ago #

RSS feed for this topic

Reply

(required)

(required)

(optional)

(required)

Allowed markup: a blockquote code em strong ul ol li.
Put code in between `backticks`.

Olark Livehelp