2009-12-08 2 views
1

학교 과제로 첫 GWT 기반 Java 프로젝트에서 작업하고 있습니다. 채팅 응용 프로그램이며 클라이언트는 새 이벤트를 위해 서버를 폴링하며 서버는 각 사용자가 비활성 상태를 감지 할 수있는 타이머를 유지합니다.GWT : 타이머로 인해 런타임 경고가 발생합니다.

다음 문제는 런타임에 발생

Dec 8, 2009 7:41:17 PM com.google.apphosting.utils.jetty.JettyLogger warn 
WARNING: /GAEChat/chat 
java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup) 
    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 com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:176) 
    at java.lang.ThreadGroup.checkAccess(Unknown Source) 
    at java.lang.Thread.init(Unknown Source) 
    at java.lang.Thread.<init>(Unknown Source) 
    at java.util.TimerThread.<init>(Unknown Source) 
    at java.util.Timer.<init>(Unknown Source) 
    at java.util.Timer.<init>(Unknown Source) 
    at gaechat.server.ChatServiceImpl.<init>(ChatServiceImpl.java:22) 
    at sun.reflect.GeneratedConstructorAccessor14.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) 
    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.content(HttpConnection.java:844) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205) 
    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) 

Here's the code repository. 문제는 server/ChatServiceImpl.java 인 것 같습니다.

내가 잘못 했나요? 나는 붙어있다.

답변

2

학교 지정이므로 SecurityManager를 먼저 비활성화하십시오.

업데이트 : 어딘가에 -Djava.security.manager이 설정되어 있지 않으면 사용 중지해야합니다. How to disable Java security manager?

자세히 알아 보려면 this 링크를 참조하십시오.) 페이지에 다운로드 할 수있는 소스 코드가 있습니다.

+0

책을 가르쳐 주셔서 감사합니다. 훌륭한 자원처럼 보입니다! 이제 SecurityManager를 비활성화하는 방법 만 알아낼 수 있다면 ... :) – Dan

+0

호스트 된 모드에서 실행 중일 때 해당 오류가 발생합니까? warcat 폴더를 표준 tomcat 설치에 배포하여 여전히 동일한 오류가 발생하는지 확인해 보셨습니까? –

+0

모든 도움에 감사드립니다. 나는 타이머를 가진 부분을 일시적으로 주석 처리했기 때문에 무언가를 할 수있다. 비활성 타이머를 다시 가져 오면 보안 관리자를 비활성화하려고 시도합니다. – Dan

0

Google App Engine에서 서블릿 애플리케이션을 실행하려고 시도하는 중 스택 추적에서 현재 상태를 나타내는 것으로 보이면 새 스레드를 생성 할 수 없습니다. App Engine에서 허용하지 않습니다.

관련 문제