2011-06-06 51 views
2

我的基本DWR代碼在tomcat上正常工作,在GAE中不起作用。根據http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine,GAE支持dwr.3.0.0.RC1.jar。谷歌應用程序引擎modifyThreadGroup問題不讓我使用DWR

我沒有看到任何servlet參數在DwrServlet(http://directwebremoting.org/dwr/documentation/server/configuration/servlet/index.html)

任何幫助表示讚賞禁用線程。

謝謝

我得到的錯誤是

runserver: 
    [java] 2011-06-06 15:18:19.144 java[1170:903] [Java CocoaComponent compatibility mode]: Enabled 
    [java] 2011-06-06 15:18:19.146 java[1170:903] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000 
    [java] Jun 6, 2011 10:18:20 PM com.google.apphosting.utils.jetty.JettyLogger info 
    [java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger 
    [java] Jun 6, 2011 10:18:20 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml 
    [java] INFO: Successfully processed /Users/mbustany/parents-portal/prototype/mo/geolocation-appengine/build/WEB-INF/appengine-web.xml 
    [java] Jun 6, 2011 10:18:20 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml 
    [java] INFO: Successfully processed /Users/mbustany/parents-portal/prototype/mo/geolocation-appengine/build/WEB-INF/web.xml 
    [java] Jun 6, 2011 10:18:20 PM com.google.apphosting.utils.jetty.JettyLogger info 
    [java] INFO: jetty-6.1.x 
    [java] Jun 6, 2011 10:18:20 PM com.google.apphosting.utils.jetty.JettyLogger info 
    [java] INFO: Started [email protected]:8080 
    [java] Jun 6, 2011 10:18:20 PM com.google.appengine.tools.development.DevAppServerImpl start 
    [java] INFO: The server is running at http://localhost:8080/ 




    [java] Jun 6, 2011 10:18:32 PM org.directwebremoting.impl.StartupUtil logStartup 
    [java] INFO: Starting: DwrServlet v3.0.0.116.rc1 on Google App Engine Development/1.5.0/JDK 1.6.0_24 from Apple Inc. at 
    [java] Jun 6, 2011 10:18:33 PM org.directwebremoting.impl.DefaultContainer invoke 
    [java] SEVERE: - Exception during auto-wire: 
    [java] java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    [java]  at java.security.AccessController.checkPermission(AccessController.java:546) 
    [java]  at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:191) 
    [java]  at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299) 
    [java]  at java.lang.Thread.init(Thread.java:336) 
    [java]  at java.lang.Thread.<init>(Thread.java:626) 
    [java]  at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Executors.java:542) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addThread(ThreadPoolExecutor.java:672) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:697) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.prestartCoreThread(ThreadPoolExecutor.java:1381) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:222) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(ScheduledThreadPoolExecutor.java:443) 
    [java]  at org.directwebremoting.impl.PurgingDownloadManager.setScheduledThreadPoolExecutor(PurgingDownloadManager.java:71) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    [java]  at java.lang.reflect.Method.invoke(Method.java:597) 
    [java]  at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100) 
    [java]  at org.directwebremoting.impl.DefaultContainer.invoke(DefaultContainer.java:282) 
    [java]  at org.directwebremoting.impl.DefaultContainer.initializeBean(DefaultContainer.java:260) 
    [java]  at org.directwebremoting.impl.DefaultContainer.setupFinished(DefaultContainer.java:177) 
    [java]  at org.directwebremoting.impl.StartupUtil.setupDefaultContainer(StartupUtil.java:264) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:188) 
    [java]  at org.directwebremoting.servlet.DwrServlet.createContainer(DwrServlet.java:97) 
    [java]  at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:64) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    [java]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:94) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    [java]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    [java]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    [java]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    [java]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    [java]  at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at org.mortbay.jetty.Server.handle(Server.java:326) 
    [java]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    [java]  at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    [java]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    [java]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    [java]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    [java]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    [java]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
    [java] Jun 6, 2011 10:18:33 PM org.directwebremoting.servlet.DwrServlet init 
    [java] SEVERE: init failed 
    [java] org.directwebremoting.extend.ContainerConfigurationException: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:193) 
    [java]  at org.directwebremoting.servlet.DwrServlet.createContainer(DwrServlet.java:97) 
    [java]  at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:64) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    [java]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:94) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    [java]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    [java]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    [java]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    [java]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    [java]  at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at org.mortbay.jetty.Server.handle(Server.java:326) 
    [java]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    [java]  at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    [java]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    [java]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    [java]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    [java]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    [java]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
    [java] Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    [java]  at java.security.AccessController.checkPermission(AccessController.java:546) 
    [java]  at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:191) 
    [java]  at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299) 
    [java]  at java.lang.Thread.init(Thread.java:336) 
    [java]  at java.lang.Thread.<init>(Thread.java:626) 
    [java]  at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Executors.java:542) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addThread(ThreadPoolExecutor.java:672) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:697) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.prestartCoreThread(ThreadPoolExecutor.java:1381) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:222) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(ScheduledThreadPoolExecutor.java:443) 
    [java]  at org.directwebremoting.impl.DefaultScriptSessionManager.afterContainerSetup(DefaultScriptSessionManager.java:70) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:55) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:39) 
    [java]  at org.directwebremoting.impl.DefaultContainer.setupFinished(DefaultContainer.java:180) 
    [java]  at org.directwebremoting.impl.StartupUtil.setupDefaultContainer(StartupUtil.java:264) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:188) 
    [java]  ... 33 more 
    [java] Jun 6, 2011 10:18:33 PM com.google.appengine.tools.development.ApiProxyLocalImpl log 
    [java] SEVERE: javax.servlet.ServletContext log: unavailable 
    [java] org.directwebremoting.extend.ContainerConfigurationException: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:193) 
    [java]  at org.directwebremoting.servlet.DwrServlet.createContainer(DwrServlet.java:97) 
    [java]  at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:64) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    [java]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:94) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    [java]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    [java]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    [java]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    [java]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    [java]  at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at org.mortbay.jetty.Server.handle(Server.java:326) 
    [java]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    [java]  at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    [java]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    [java]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    [java]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    [java]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    [java]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
    [java] Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    [java]  at java.security.AccessController.checkPermission(AccessController.java:546) 
    [java]  at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:191) 
    [java]  at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299) 
    [java]  at java.lang.Thread.init(Thread.java:336) 
    [java]  at java.lang.Thread.<init>(Thread.java:626) 
    [java]  at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Executors.java:542) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addThread(ThreadPoolExecutor.java:672) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:697) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.prestartCoreThread(ThreadPoolExecutor.java:1381) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:222) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(ScheduledThreadPoolExecutor.java:443) 
    [java]  at org.directwebremoting.impl.DefaultScriptSessionManager.afterContainerSetup(DefaultScriptSessionManager.java:70) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:55) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:39) 
    [java]  at org.directwebremoting.impl.DefaultContainer.setupFinished(DefaultContainer.java:180) 
    [java]  at org.directwebremoting.impl.StartupUtil.setupDefaultContainer(StartupUtil.java:264) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:188) 
    [java]  ... 33 more 
    [java] 
    [java] Jun 6, 2011 10:18:33 PM com.google.apphosting.utils.jetty.JettyLogger warn 
    [java] WARNING: /dwr/engine.js 
    [java] org.directwebremoting.extend.ContainerConfigurationException: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:193) 
    [java]  at org.directwebremoting.servlet.DwrServlet.createContainer(DwrServlet.java:97) 
    [java]  at org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:64) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    [java]  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    [java]  at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:94) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    [java]  at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    [java]  at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    [java]  at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    [java]  at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    [java]  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    [java]  at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) 
    [java]  at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    [java]  at org.mortbay.jetty.Server.handle(Server.java:326) 
    [java]  at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    [java]  at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    [java]  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    [java]  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    [java]  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    [java]  at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    [java]  at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
    [java] Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    [java]  at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    [java]  at java.security.AccessController.checkPermission(AccessController.java:546) 
    [java]  at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166) 
    [java]  at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:191) 
    [java]  at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299) 
    [java]  at java.lang.Thread.init(Thread.java:336) 
    [java]  at java.lang.Thread.<init>(Thread.java:626) 
    [java]  at java.util.concurrent.Executors$DefaultThreadFactory.newThread(Executors.java:542) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addThread(ThreadPoolExecutor.java:672) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:697) 
    [java]  at java.util.concurrent.ThreadPoolExecutor.prestartCoreThread(ThreadPoolExecutor.java:1381) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:222) 
    [java]  at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(ScheduledThreadPoolExecutor.java:443) 
    [java]  at org.directwebremoting.impl.DefaultScriptSessionManager.afterContainerSetup(DefaultScriptSessionManager.java:70) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:55) 
    [java]  at org.directwebremoting.impl.AbstractContainer.callInitializingBeans(AbstractContainer.java:39) 
    [java]  at org.directwebremoting.impl.DefaultContainer.setupFinished(DefaultContainer.java:180) 
    [java]  at org.directwebremoting.impl.StartupUtil.setupDefaultContainer(StartupUtil.java:264) 
    [java]  at org.directwebremoting.impl.StartupUtil.createAndSetupDefaultContainer(StartupUtil.java:188) 
    [java]  ... 33 more 

而簡單的HTML文件是:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Test</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"/> 
    <script type='text/javascript' src='../dwr/engine.js'></script> 
    <script type='text/javascript' src='../dwr/util.js'></script> 
    <script type='text/javascript' src='../dwr/interface/IPAddress.js'></script> 
</head> 
<body> 
<p> 
    <input value="Fetch" type="button" onclick="fetch()"/> 
    <br/> 
    Reply: <span id="ipaddress"></span> 
</p> 

<script lang="javascript"> 
    function fetch() { 
     IPAddress.getDate(function(data) { 
      dwr.util.setValue("ipaddress", data); 
     }); 
    } 
</script> 
</body> 
</html> 

回答

0

雖然GAE聲稱它支持DWR,但它顯然不支持。根據文獻,我認爲它不會在不久的將來支持它。

如果遇到同樣的問題,請查看Channel API。

0

隨着錯誤消息意味着,你不能執行操作在App Engine的線程中,包括modifyThreadGroup。我不確定dwr爲什麼試圖這樣做,但是你需要避免導致它的操作,或者修改dwr而不嘗試執行線程操作。

+6

我使用的是appengine-java-sdk-1.7.2.1,它是線程安全的。但我仍然有同樣的道具。 – 2012-10-17 08:20:46

0

即使是現在,您仍然可以使用DWR 2.0.10。它不產生線程。