2011-07-12 117 views
1

在tomcat中运行我的gwt2.4rc1应用程序时出现问题。当我尝试进行请求调用时,会出现问题。然后我在底部得到例外。在Tomcat上运行GWT 2.4应用程序时出现问题

当我在开发模式下运行GWT一切正常。 gwt-dev。 jar在我的webapp的lib文件夹中。我正在使用maven进行依赖管理。我的配置可能有问题吗?我已经有gwt2.4 beta的错误。如果有任何其他信息需要解决这个问题,我很高兴提供他们。

问候, 阿恩

严重:意外的错误 com.google.web.bindery.requestfactory.server.UnexpectedException:意外的checked异常 在com.google.web.bindery.requestfactory.server.ServiceLayerDecorator。 (com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:242) com.google.web.bindery.requestfactory.server.ServiceLayerCache.resolveRequestFactory( ServiceLayerCache.java:198) at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcess or.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.doFilterInternal(AdviceFilter.java:137) at org.apache。org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) 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) 在org.apache.catalina.core.Ap plicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) 在org.apache.catalina.valves。 AccessLogValve.invoke(AccessLogValve.java:558) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) 在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) 在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:259) 在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint。Java的:281) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:603) 在java.lang.Thread中。运行(Thread.java:636) 由java.lang.ClassLoader.defineClass1(Native Method) 引发java.lang.NoClassDefFoundError:com/google/gwt/dev/util/StringKey at java.lang.ClassLoader。的defineClass(ClassLoader.java:634) 在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2804) 在org.apache。 catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1144) at org.a pache.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) 在com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateEntityProxy(RequestFactoryInterfaceValidator.java:828) 在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.RequestFactoryInterfa ceValidator.createDomainMethod(RequestFactoryInterfaceValidator.java:1192) 在com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.checkClientMethodInDomain(RequestFactoryInterfaceValidator.java:1079) 在com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator。 validateRequestContext(RequestFactoryInterfaceValidator.java:909) 在com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateRequestFactory(RequestFactoryInterfaceValidator.java:964) 在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.requestfac tory.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在sun.reflect.DelegatingMethodAccessorImpl.invoke(ServiceLayerDecorator.java:172) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) (DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:616) 在com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) ... 32莫e 引起: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更多

回答

2

从RC到干线的路上有a fix for this。同时,从您的依赖关系中移除gwt-servlet并改为使用requestfactory-servlet.jar。

+0

感谢您的回答!不幸的是我在我的项目中使用了杜松子酒,它增加了对gwt-servlet-2.2的依赖。当我删除我的gwt-servlet-jar我得到另一个错误(发布在这里:[http://stackoverflow.com/questions/6649483/problems-with-gwt-2-4](http://stackoverflow.com/questions/6649483/problems-with-gwt-2-4)我想这是因为我还没有想出如何在我自己的仓库中的一个库上添加一个依赖到gwt-maven-plugin。你能否在这个时候提供任何信息修复被提交给svn仓库? – Arne

+0

FYI:提交并合并到2.4发布分支:http://code.google.com/p/google-web-toolkit/source/detail?r=10453 –

0

我一直都明白gwt-dev.jar是编译器和其他开发工具。如果你相信这一点,那么你的代码不应该依赖它,并且没有理由将它放在war文件的WEB-INF/lib文件夹中。

我从this question看到,至少有一个SO的其他贡献者感觉是相同的方式,但这种信念似乎并不普遍。

我会更新这个答案,如果我能在GWT文档中找到任何一种或另一种方式。

更新: 我能找到最接近的是Organize Projects这说明GWT-dev下一个引用的库在WEB-INF/lib目录不存在。我找不到任何官方说过你可以或不可以将它部署到你的网络服务器。在一本旧书GWT在行动(汉森,2007年),551页说

You should never deploy the gwt-user.jar and gwt-dev.jar files to your server, because they will interfere with your server; these JAR files contain their own Tomcat server code, which is used when you're testing in hosted mode.

这显然是不合时宜的,因为托管模式不叫这样了,并使用嵌入式Jetty服务器,而不是Tomcat的,但这是我信仰的基础。

+0

感谢您的这些信息!即使这不是解决方案,我也会尝试摆脱这些依赖关系。 – Arne

0

好,我做它的工作:) 我使用GWT版本从这里编译: http://code.google.com/p/google-web-toolkit/source/browse/#svn%2Freleases%2F2.4

我没把GWT-的servlet.jar和requestfactory-的servlet.jar作为依赖于我的项目。在另一个线程中出现问题是因为我使用了我自己的group-id作为编译过的jar文件,所以这些文件没有被gin和gwt-maven-plugin使用。没有一切正常:)

虽然感谢您的帮助!

相关问题