/ / Проблема з запуском програми GWT 2.4 на Tomcat - gwt, requestfactory

Проблема запуску GWT 2.4 App на Tomcat - gwt, requestfactory

У мене проблема із запуском програми gwt2.4rc1 у tomcat. Проблема виникає, коли я намагаюся здійснити запитфабричний дзвінок. Тоді я отримую виняток внизу.

Коли я запускаю GWT у режимі розробки, всепрацює нормально. Gwt-розробник. jar знаходиться у папці lib мого веб-додатка. Я використовую maven для управління залежностями. Чи може бути проблема з моєю конфігурацією? У мене вже була помилка з бета-версією gwt2.4. Якщо для вирішення цієї проблеми потрібна будь-яка інша інформація, я радий надати їх.

З повагою, Арне

СЕРВЕР: Несподівана помилка com.google.web.bindery.requestfactory.server.UnexpectedException: Unexpected checked exception at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.die(ServiceLayerDecorator.java:216) at com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:242) at com.google.web.bindery.requestfactory.server.ServiceLayerCache.resolveRequestFactory(ServiceLayerCache.java:198) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:201) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:125) at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:261) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:175) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:162) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.NoClassDefFoundError: com/google/gwt/dev/util/StringKey at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2804) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1144) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1639) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateProxy(RequestFactoryInterfaceValidator.java:1594) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateEntityProxy(RequestFactoryInterfaceValidator.java:828) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.maybeCheckProxyType(RequestFactoryInterfaceValidator.java:1540) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.getDomainType(RequestFactoryInterfaceValidator.java:1374) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.createDomainMethod(RequestFactoryInterfaceValidator.java:1192) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.checkClientMethodInDomain(RequestFactoryInterfaceValidator.java:1079) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateRequestContext(RequestFactoryInterfaceValidator.java:909) at com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateRequestFactory(RequestFactoryInterfaceValidator.java:964) at com.google.web.bindery.requestfactory.server.ResolverServiceLayer.resolveRequestFactory(ResolverServiceLayer.java:187) at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) ... 32 more Caused by: java.lang.ClassNotFoundException: com.google.gwt.dev.util.StringKey at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517) ... 57 more

Відповіді:

2 для відповіді № 1

Там виправлення для цього на шляху від RC до магістралі. Тим часом видаліть gwt-servlet зі своїх залежностей і використовуйте натомість requestfactory-servlet.jar.


0 для відповіді № 2

Я завжди розумів gwt-dev.jar, щоб бути компілятором та іншими засобами розробки. Якщо ви вважаєте, що це не повинно залежати від вашого власного коду, і немає жодних причин для того, щоб він знаходився у папці WEB-INF / lib вашого файлу війни.

Я бачу з це питання що принаймні ще один учасник СО відчуває те саме, але переконання не видається універсальним.

Я оновлю цю відповідь, якщо зможу знайти те чи інше в документах GWT.

Оновлення: Найближче, що я міг знайти, було Організовувати проекти який показує gwt-dev як бібліотеку з посиланнями, якої немає в WEB-INF / lib. Я не можу знайти нічого офіційного, що говорить або про те, що ви можете або не можете розгорнути це на своєму веб-сервері. У старій книзі GWT в дії (Hanson, 2007), на сторінці 551

Ніколи не слід розгортати gwt-користувача.jar та gwt-dev.jar на ваш сервер, оскільки вони будуть заважати роботі вашого сервера; ці файли JAR містять свої власні Код сервера Tomcat, який використовується під час тестування в хостинговому режимі.

Це явно застаріло, оскільки хостинговий режим більше не називається і використовує вбудований сервер Jetty, а не Tomcat, але це основа мого переконання.


0 для відповіді № 3

Гаразд, я змусив це працювати :) Я використав версію gwt, складену звідси: http://code.google.com/p/google-web-toolkit/source/browse/#svn%2Freleases%2F2.4

Я все-таки поставив gwt-сервлет.jar і requestfactory-servlet.jar як залежності в моєму проекті. Проблема в іншому потоці виникла, тому що я використав свій власний ідентифікатор групи для скомпільованих банок, тому вони не використовувались gin та gwt-maven-plugin. Ні, все працює нормально :)

Дякую за допомогу!