I am a total newbie to GWT/GAE framework. I was playing and modifying an objectify sample code myself last night and get into a “deferred binding failure” error. What I did is to add another entity class and extend classes PersistentService, PersistentServiceImp, and PersistentSerivceAsync to persist my data. I first ran the code as Web Application. OnModuleLoad threw an exception and gave me the following rather cryptic errors.
Java.lang.reflect.InvocationTargetException 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.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396) at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:183) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) at java.lang.Thread.run(Thread.java:636) Caused by: java.lang.RuntimeException: Deferred binding failed for 'com.example.myproject.client.PersistentService' (did you forget to inherit a required module?) at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53) at com.google.gwt.core.client.GWT.create(GWT.java:97) at com.example.myproject.client.UserRequestUI.(UserRequestUI.java:31) at com.example.myproject.client.ObjectifyExample.onModuleLoad(ObjectifyExample.java:30) ... 9 more Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries) at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:595) at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455) at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49) ... 12 more
I dug into the web and it seems that there are zillions of ways getting into deferred binding failure. Since I just started yesterday, it took me long time to figure out that I should try compiling first instead. And I got some less obscure (a bit more informative) errors.
Compiling module com.example.myproject.ObjectifyExample [ERROR] Errors in 'file:/home/xxx/workspace/yyy/src/com/example/myproject/client/ObjectifyExample.java' [ERROR] Line 22: Failed to resolve 'com.example.myproject.client.PersistentService' via deferred binding Scanning for additional dependencies: jar:file:/home/xxx/eclipse/plugins/com.google.gwt.eclipse.sdkbundle.2.1.1_2.1.1.v201012170127/gwt-2.1.1/gwt-user.jar!/com/google/gwt/core/client/impl/AsyncFragmentLoader.java [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?) [WARN] com.example.myproject.client.PersistentService_Proxy [ERROR] Errors in 'file:/home/xxx/workspace/yyy/src/com/example/myproject/client/ProviderSearchUI.java' [ERROR] Line 27: Failed to resolve 'com.example.myproject.client.PersistentService' via deferred binding Scanning for additional dependencies: file:/home/xxx/workspace/yyy/src/com/example/myproject/client/UserRequestUI.java [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?) [WARN] com.example.myproject.client.PersistentService_Proxy [ERROR] Errors in 'file:/home/xxx/workspace/yyy/src/com/example/myproject/client/UserRequestUI.java' [ERROR] Line 31: Rebind result 'com.example.myproject.client.PersistentService_Proxy' could not be found [ERROR] Cannot proceed due to previous errors
I was wondering if it was a config problem or if was jetty locking some files. It turns out that it was just a stupid mistake—I forgot to serialize the entity class! After I added back “implements Serializable” to my entity class, everything works fine again. I guess these error messages can be really misleading.
be sure your client classes have default constructor.
In this case, which class are you considering your entity class?
Derek, it depends on your application. But i put my entity classes inside com.example.myproject.client.entities as in the example. Just don’t forget to implement Serializable for them like I did.
I have GWT service that is referring 15+ beans and one of them was missing Serializable declaration. I just got deferred error for the service proxy 8-Z. Thank you for the post – it saved me a lot of time 😉
Thanks! I added implements Serializable to a bunch of classes, and it worked! You saved me a lot of time.
Thank you; Ran into the same issue and your post helped me a lot!
Thanks, I was stuck on the same problem…