I found the solution here: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/a8c48b6ad09721c2
It says to do the following (in case you do not use maven): <http://groups.google.com/group/google-web-toolkit/browse_thread/thread/a8c48b6ad09721c2>"Otherwise, you can just add gwt-servlet- deps.jar to your WEB-INF/lib in addition to gwt-servlet.jar" Google should be more careful with RequestFactory. The samples they provide work with maven plus they use JPA although so far I was under the impression they suggested JDO (at least their appengine samples use JDO). Why creating such a polyphony with their samples I do not get it? Anyway... On Sun, Dec 19, 2010 at 10:09 PM, Efstathios Kalyvas <[email protected]>wrote: > Hi, I have exactly the same error > I cannot resolve it. > > I am using google eclipse plug in to create my project. > Google is not providing a simple working demo of RequestFactory (including > all the jar references the web.xml etc). > They make things difficult for no reason. > > So far I am using RPC to manipulate read/write/edit data. > > Thanks > Savilak > > On Sun, Dec 5, 2010 at 6:41 AM, ali <[email protected]> wrote: > >> I am hitting the following error when using RequestFactory (it's about >> ValidatorFactory impl not available). Does any one know why ? >> >> 20:32:35.092 [ERROR] [Skulgia] Uncaught exception escaped >> java.lang.RuntimeException: Server Error 500 <html> >> <head> >> <meta http-equiv="Content-Type" content="text/html; >> charset=ISO-8859-1"/> >> <title>Error 500 javax/validation/ValidatorFactory</title> >> </head> >> <body><h2>HTTP ERROR 500</h2> >> <p>Problem accessing /Skulgia/gwtRequest. Reason: >> <pre> javax/validation/ValidatorFactory</pre></p><h3>Caused by:</ >> h3><pre>java.lang.NoClassDefFoundError: javax/validation/ >> ValidatorFactory >> at >> >> com.google.gwt.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java: >> 111) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >> at >> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: >> 511) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1166) >> at >> >> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: >> 58) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> >> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: >> 43) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> >> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java: >> 122) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: >> 388) >> at >> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: >> 216) >> at >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: >> 182) >> at >> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: >> 765) >> at >> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) >> at >> >> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java: >> 70) >> at >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: >> 152) >> at com.google.appengine.tools.development.JettyContainerService >> $ApiProxyHandler.handle(JettyContainerService.java:349) >> at >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: >> 152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at >> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: >> 542) >> at org.mortbay.jetty.HttpConnection >> $RequestHandler.content(HttpConnection.java:938) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java: >> 218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java: >> 404) >> at >> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: >> 409) >> at org.mortbay.thread.QueuedThreadPool >> $PoolThread.run(QueuedThreadPool.java:582) >> Caused by: java.lang.ClassNotFoundException: >> javax.validation.ValidatorFactory >> at java.net.URLClassLoader$1.run(Unknown Source) >> at java.security.AccessController.doPrivileged(Native Method) >> at java.net.URLClassLoader.findClass(Unknown Source) >> at java.lang.ClassLoader.loadClass(Unknown Source) >> at >> >> com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java: >> 151) >> at java.lang.ClassLoader.loadClass(Unknown Source) >> ... 28 more >> </pre> >> <h3>Caused by:</h3><pre>java.lang.ClassNotFoundException: >> javax.validation.ValidatorFactory >> at java.net.URLClassLoader$1.run(Unknown Source) >> at java.security.AccessController.doPrivileged(Native Method) >> at java.net.URLClassLoader.findClass(Unknown Source) >> at java.lang.ClassLoader.loadClass(Unknown Source) >> at >> >> com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java: >> 151) >> at java.lang.ClassLoader.loadClass(Unknown Source) >> at >> >> com.google.gwt.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java: >> 111) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >> at >> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: >> 511) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1166) >> at >> >> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: >> 58) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> >> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: >> 43) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> >> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java: >> 122) >> at org.mortbay.jetty.servlet.ServletHandler >> $CachedChain.doFilter(ServletHandler.java:1157) >> at >> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: >> 388) >> at >> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: >> 216) >> at >> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: >> 182) >> at >> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: >> 765) >> at >> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) >> at >> >> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java: >> 70) >> at >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: >> 152) >> at com.google.appengine.tools.development.JettyContainerService >> $ApiProxyHandler.handle(JettyContainerService.java:349) >> at >> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: >> 152) >> at org.mortbay.jetty.Server.handle(Server.java:326) >> at >> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: >> 542) >> at org.mortbay.jetty.HttpConnection >> $RequestHandler.content(HttpConnection.java:938) >> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) >> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java: >> 218) >> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java: >> 404) >> at >> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: >> 409) >> at org.mortbay.thread.QueuedThreadPool >> $PoolThread.run(QueuedThreadPool.java:582) >> </pre> >> <hr /><i><small>Powered by Jetty://</small></i><br/> >> <br/> >> <br/> >> <br/> >> >> >> On Dec 4, 8:14 pm, ali <[email protected]> wrote: >> > I haven't seen any of this in the documentation either! >> > >> > On Nov 18, 4:57 pm, Nicholas <[email protected]> wrote: >> > >> > >> > >> > >> > >> > >> > >> > > One more thing I forgot to mention. You have to add an init-param to >> > > therequestFactoryServletto identify your implementation class for >> > > the user information class. (This is in your web.xml). Mine looks >> > > like this. >> > >> > > <servlet> >> > > <servlet-name>requestFactoryServlet</servlet-name> >> > > <servlet- >> > > class>com.google.gwt.requestfactory.server.RequestFactoryServlet</ >> > > servlet-class> >> > > <init-param> >> > > <param-name>userInfoClass</param-name> >> > > >> <param-value>com.eatrightapp.server.domain.GaeUserInformation</ >> > > param-value> >> > > </init-param> >> > > </servlet> >> > >> > > Without that specified, your login widget will always show the user as >> > > "Dummy User" and the logout link will not be functional. Now that all >> > > this is in place, mine is completely working as expected. >> > >> > > Thanks, >> > > Nick >> > >> > > On Nov 18, 6:18 pm, Nicholas <[email protected]> wrote: >> > >> > > > Richard, I was missing that initialization to requestFactory as >> well. >> > > > I had to add that, and I had to add the following sections to my >> > > > web.xml: >> > >> > > > <servlet> >> > > > <servlet-name>requestFactoryServlet</servlet-name> >> > > > <servlet- >> > > > class>com.google.gwt.requestfactory.server.RequestFactoryServlet</ >> > > > servlet-class> >> > > > </servlet> >> > >> > > > <servlet> >> > > > <servlet-name>remoteapi</servlet-name> >> > > > <servlet- >> > > > >> class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet- >> > > > class> >> > > > </servlet> >> > >> > > > <servlet-mapping> >> > > > <servlet-name>remoteapi</servlet-name> >> > > > <url-pattern>/remote_api</url-pattern> >> > > > </servlet-mapping> >> > >> > > > <servlet-mapping> >> > > > <servlet-name>requestFactoryServlet</servlet-name> >> > > > <url-pattern>/gwtRequest</url-pattern> >> > > > </servlet-mapping> >> > >> > > > In addition, I added the appengine-tools-api.jar files to my >> web-inf/ >> > > > lib folder. >> > >> > > > I had to add the following to my apps gwt.xml file: >> > >> > > > <inherits name='com.google.gwt.json.JSON'/> >> > >> > > > Finally, I added json.jar to my web-inf/lib folder. I'm not sure >> > > > where this file originated, but I finally tracked down a copy at: >> http://google-web-toolkit.googlecode.com/svn-history/r7687/trunk/bike... >> > >> > > > Now the app seems to be running without any errors. I think some of >> > > > this needs to go into the RequestBuilder/MVP documentation. If it's >> > > > there I completely overlooked it. >> > >> > > > Nick >> > >> > > > On Nov 18, 2:05 pm, Richard Berger <[email protected]> wrote: >> > >> > > > > As is typical - after working on this for hours, I think I found >> my >> > > > > problem 10 minutes after posting. Since I am trying to avoid MVP >> (for >> > > > > now, until the brain cell count improves), I had not initialized >> my >> > > > > RequestFactory. Adding: >> > > > > final EventBus eventBus = new SimpleEventBus(); >> > > > > requestFactory.initialize(eventBus); >> > > > > has moved me past my NPE. Into other errors of course... >> > >> > > > > Thanks for listening.... >> > >> > > > > RB >> > >> > > > > On Nov 18, 11:50 am, Richard Berger <[email protected]> >> wrote: >> > >> > > > > > I am having a very similar problem - NullPointerException when I >> call >> > > > > > fire() (the NPE is in AbstractRequestContext.doFire()). So I am >> > > > > > wondering if you have found a solution to your problem. >> > >> > > > > > The code with the fire() is: >> > > > > > CommitmentSystemRequestFactory requestFactory = >> > > > > > GWT.create(CommitmentSystemRequestFactory.class); >> > > > > > requestFactory.commitmentRequest().countCommitments().fire( >> > > > > > new Receiver<Long>() { >> > > > > > @Override >> > > > > > public void onSuccess(Long response) { >> > > > > > Window.alert("Done!"); >> > > > > > } >> > > > > > }); >> > >> > > > > > My CommitmentRequest class has: >> > > > > > @Service (Commitment.class) >> > > > > > public interface CommitmentRequest extends RequestContext { >> > > > > > Request<Long> countCommitments(); >> > >> > > > > > My Commitment.java class has: >> > > > > > public static long countCommitments() { >> > > > > > .... >> > > > > > } >> > >> > > > > > Some other notes... >> > > > > > * I have also been going through the Expenses sample app, both >> the >> > > > > > description at: >> http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.h... >> > > > > > and the sample code. >> > > > > > * I am NOT using JPA. My first learning project for GWT/GAE was >> with >> > > > > > JPA, but now I wanted to try the RequestFactory and then add >> > > > > > Objectify. >> > > > > > * I am NOT using MVP. I just don't yet have the critical mass >> of >> > > > > > brain cells necessary. >> > >> > > > > > Thanks for any updates or advice... >> > > > > > RB >> > >> > > > > > On Nov 18, 9:05 am, Nicholas <[email protected]> wrote: >> > >> > > > > > > Thanks, you got me on the right rack. I didn't realize that >> more >> > > > > > > information on the exceptions was available in the dev mode >> console of >> > > > > > > eclipse. My domain entity objects had some Boolean accessors >> which I >> > > > > > > had named isProperty() instead of getProperty(). I changed >> all of >> > > > > > > those, and also made the domain service methods 'static' like >> you >> > > > > > > suggested. >> > >> > > > > > > Now the application is running, but when it fires a request >> for >> > > > > > > UserInformation, I get a null pointer exception. After >> debugging, it >> > > > > > > gets into AbstractRequestContext.doFire(receiver) method, >> which >> > > > > > > attempts to call >> requestFactory.getRequestTransport().send(...). >> > > > > > > requestFactory.getRequestTransport() returns NULL so it throws >> a Null >> > > > > > > Pointer Exception. Do I need to configure the transport >> somewhere? I >> > > > > > > didn't see anything in the documentation or the Expenses >> sample app. >> > >> > > > > > > The portion of my code that is initiating this is (~ line 60) >> in:http://code.google.com/p/eatright/source/browse/trunk/EatRightApp/src. >> .. >> > >> > > > > > > On Nov 17, 6:28 pm, Thomas Broyer <[email protected]> wrote: >> > >> > > > > > > > On 17 nov, 21:06, Nicholas <[email protected]> wrote: >> > >> > > > > > > > > I am working on a small GWT app (I have used GWT in the >> past but it >> > > > > > > > > was a while ago), trying to learn the new MVP and >> RequestFactory. I >> > > > > > > > > am not sure if I am just approaching this wrong, or have >> some error I >> > > > > > > > > can't spot. When I add a call to instantiate my app's >> RequestFactory, >> > > > > > > > > it no longer runs. It gives me "Deferred Binding Failed" >> for my >> > > > > > > > > request factory. >> > >> > > > > > > > > I went back and double-checked the domain / entity objects >> and I think >> > > > > > > > > I have the required pattern in place (implicit no-arg >> constructor, >> > > > > > > > > getId(), findEntity(id) and getVersion()). >> > >> > > > > > > > > Some of the relevant code: >> > >> > > > > > > > > Domain objects: >> http://code.google.com/p/eatright/source/browse/#svn/trunk/EatRightAp... >> > >> > > > > > > > > EntityRequest and Proxy objects: >> http://code.google.com/p/eatright/source/browse/#svn/trunk/EatRightAp... >> > >> > > > > > > > > This class instantiates the RequestFactory (line 35) and >> passes it to >> > > > > > > > > the Activity (line 41) >> http://code.google.com/p/eatright/source/browse/trunk/EatRightApp/src... >> > >> > > > > > > > > This class is where I have a method utilizing the request >> factory. (~ >> > > > > > > > > line 49) >> http://code.google.com/p/eatright/source/browse/trunk/EatRightApp/src... >> > >> > > > > > > > > >> http://code.google.com/p/eatright/source/browse/trunk/EatRightApp/src... >> > >> > > > > > > > > Any ideas? >> > >> > > > > > > > Your "service methods" in your domain objects aren't static, >> but >> > > > > > > > aren't declared as InstanceRequest in your RequestContext. >> > > > > > > > (don't you have more specific errors than "deferred binding >> failed"?) >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google Web Toolkit" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-web-toolkit%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-web-toolkit?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
