2009-12-08 2 views
1

Я работаю над своим первым проектом Java на основе GWT для школьного задания. Это чат-приложение, и клиент опроса сервера для новых событий, в то время как сервер хранит таймер для каждого пользователя, чтобы обнаружить бездействие.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?

BTW, возможно, вас заинтересует this link;) Страница содержит исходный код для скачивания.

+0

Спасибо, что указал мне на книгу. Кажется, замечательный ресурс! Теперь, если я могу только выяснить, как отключить SecurityManager ... :) – Dan

+0

Получаете ли вы эту ошибку при работе в режиме размещения? попробовали ли вы развертывать папку войны в стандартной установке tomcat, чтобы убедиться, что вы все еще получаете ту же ошибку? –

+0

Спасибо за помощь. Я временно прокомментировал часть с таймером, чтобы я мог что-то сделать. Я попытаюсь отключить диспетчера безопасности, когда верну его таймер бездействия. – Dan

0

Если вы пытаетесь запустить приложение сервлета в Google App Engine, которое, по-видимому, показывает, что вы используете трассировку стека, то вы не можете создавать новые потоки. App Engine не позволяет.