/ / Problem beim Ausführen einer GWT 2.4-App auf Tomcat - gwt, requestfactory

Problem beim Ausführen einer GWT 2.4-App auf Tomcat - gwt, requestfactory

Ich habe ein Problem beim Ausführen meiner Anwendung gwt2.4rc1 in einem Tomcat. Das Problem tritt auf, wenn ich versuche, einen requestfactory-Anruf zu tätigen. Dann bekomme ich die Ausnahme unten.

Wenn ich GWT im Entwicklungsmodus laufen lasse allesfunktioniert gut. Der gwt-dev. jar befindet sich im lib ordner meiner webapp. Ich benutze Maven für das Abhängigkeitsmanagement. Könnte es ein Problem mit meiner Konfiguration geben? Ich hatte schon den fehler mit gwt2.4 beta. Wenn weitere Informationen zur Lösung dieses Problems erforderlich sind, gebe ich diese gerne weiter.

Grüße, Arne

SEVERE: Unerwarteter Fehler com.google.web.bindery.requestfactory.server.UnexpectedException: Unerwartete aktivierte Ausnahme at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.die (ServiceLayerDecorator.java:216) unter 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) unter javax.servlet.http.HttpServlet.service (HttpServlet.java:641) unter javax.servlet.http.HttpServlet.service (HttpServlet.java:722) unter com.google.inject.servlet.ServletDefinition.doService (ServletDefinition.java:261) um com.google.inject.servlet.ServletDefinition.service (ServletDefinition.java:175) um 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) um 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) bei 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) bei 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) um java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1110) um java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:603) bei java.lang.Thread.run (Thread.java:636) Auslöser: java.lang.NoClassDefFoundError: com / google / gwt / dev / util / StringKey um java.lang.ClassLoader.defineClass1 (native Methode) um java.lang.ClassLoader.defineClass (ClassLoader.java:634) um java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) um org.apache.catalina.loader.WebappClassLoader.findClassInternal (WebappClassLoader.java:2804) um org.apache.catalina.loader.WebappClassLoader.findClass (WebappClassLoader.java:1144) um org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1639) um 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 Methode) 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) unter com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache (ServiceLayerCache.java:233) ... 32 mehr Auslöser: java.lang.ClassNotFoundException: com.google.gwt.dev.util.StringKey um org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1672) um org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1517) ... 57 mehr

Antworten:

2 für die Antwort № 1

Dort "s ein Update dafür auf dem Weg von RC zum Kofferraum. Entfernen Sie in der Zwischenzeit gwt-servlet aus Ihren Abhängigkeiten und verwenden Sie stattdessen requestfactory-servlet.jar.


0 für die Antwort № 2

Ich habe gwt-dev immer verstanden.jar soll der Compiler und andere Entwicklungswerkzeuge sein. Wenn Sie das glauben, sollte es keine Abhängigkeit von Ihrem eigenen Code geben, und es gibt keinen Grund dafür, dass er sich im Ordner WEB-INF / lib Ihrer Kriegsdatei befindet.

Ich sehe von diese Frage Dass mindestens ein anderer Mitwirkender an SO genauso denkt, aber der Glaube scheint nicht universell zu sein.

Ich werde diese Antwort aktualisieren, wenn ich irgendetwas in der einen oder anderen Weise in den GWT-Dokumenten finden kann.

Aktualisieren: Das nächste, was ich finden konnte, war Projekte organisieren Dies zeigt gwt-dev als referenzierte Bibliothek, die in WEB-INF / lib nicht vorhanden ist. Ich kann nichts Offizielles finden, das besagt, dass Sie es entweder auf Ihrem Webserver bereitstellen können oder nicht. In einem alten Buch GWT in Aktion (Hanson, 2007), Seite 551, sagt

Sie sollten den gwt-Benutzer niemals bereitstellen.jar- und gwt-dev.jar-Dateien auf Ihren Server, weil sie Ihren Server stören werden; Diese JAR-Dateien enthalten ihre eigenen Tomcat-Servercode, der verwendet wird, wenn Sie im gehosteten Modus testen.

Dies ist eindeutig veraltet, da der gehostete Modus nicht mehr so ​​heißt und statt Tomcat einen eingebetteten Jetty-Server verwendet, aber das ist die Basis für meine Überzeugung.


0 für die Antwort № 3

Ok, ich habe es geschafft :) Ich habe die von hier kompilierte GWT-Version verwendet: http://code.google.com/p/google-web-toolkit/source/browse/#svn%2Freleases%2F2.4

Ich habe gwt-servlet gesetzt.jar und requestfactory-servlet.jar als Abhängigkeiten in meinem Projekt. Das Problem im anderen Thread trat auf, weil ich meine eigene Gruppen-ID für die kompilierten Gläser verwendete, sodass diese nicht von gin und dem gwt-maven-plugin verwendet wurden. Nein, alles funktioniert gut :)

Vielen Dank für die Hilfe!