【问题标题】:Java Web App over App Engine error accessJava Web App over App Engine 错误访问
【发布时间】:2015-03-24 06:15:45
【问题描述】:

我正在使用 Google App Engine 开发 Java Web 应用程序,该应用程序使用 Maven、JSF 和 Objectify,并且在 devserver 中运行良好,但在生产中出现以下错误:

com.sun.faces.config.ConfigureListener contextInitialized: Critical error during deployment: 
  java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:375)
    at java.security.AccessController.checkPermission(AccessController.java:565)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:56)
    at com.google.apphosting.runtime.security.CustomSecurityManager.checkAccess(CustomSecurityManager.java:131)
    at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
    at java.lang.Thread.init(Thread.java:378)
    at java.lang.Thread.<init>(Thread.java:575)
    at com.sun.faces.util.MojarraThreadFactory.newThread(MojarraThreadFactory.java:74)
    at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:599)
    at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:931)
    at java.util.concurrent.ThreadPoolExecutor.ensurePrestart(ThreadPoolExecutor.java:1611)
    at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:305)
    at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleAtFixedRate(ScheduledThreadPoolExecutor.java:542)
    at com.sun.faces.config.ConfigureListener.initConfigMonitoring(ConfigureListener.java:480)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:227)
    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:199)
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174)
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:484)
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:438)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442)
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
    at java.lang.Thread.run(Thread.java:724)

有人遇到过类似的问题,可以帮助我提示或知道解决方案吗?

【问题讨论】:

    标签: java google-app-engine maven objectify


    【解决方案1】:

    这个问题已经被问过很多次了,例子看下面的问题:

    线程 are disallowed in App Engine 的某些操作,并且您的某些代码违反了规则。

    【讨论】:

    • 是的,感谢您的回答,确实,应用引擎不允许对属于 jsf 一部分的线程进行某些操作,我找到了解决此问题的具体解决方案,很快我将发布此问题。
    【解决方案2】:

    就像 Adam 指出的那样,Google App Engine 有一些限制,尤其是对于本机线程,如下所述:
    https://cloud.google.com/appengine/docs/java/#threads
    在 JSF 中,这里描述了 Google App Engine 使用的单线程环境的解决方案:
    http://java.wildstartech.com/Java-Platform-Enterprise-Edition/JavaServer-Faces/javaserver-faces-20/configuring-javaserver-faces-20-to-run-on-the-google-appengine/javaserverfaces-20-and-google-app-engine-compatibility-issues
    此外,处理 JSF 会话可能存在另一个问题,此处描述了一个可能的解决方案: Session lost in Google App Engine using JSF

    最后,这里描述了 App Engine 中 JSF 的一个很好的详细示例: http://java.wildstartech.com/Java-Platform-Enterprise-Edition/JavaServer-Faces/javaserver-faces-22/configuring-jsf-22-to-run-on-the-google-app-engine-using-eclipse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多