[appengine-java] New book: Google App Engine Java and GWT Application Development
hi, Some of you may be interested in a book I co-authored that has just been published: "Google App Engine Java and GWT Application Development" by Amy Unruh and Daniel Guermeur, from Packt. The book describes many of the techniques and approaches used to develop GAE+GWT applications, and includes an app developed throughout the book as a running example. It has a particular focus on some of the technologies useful for building scalable social-media- oriented applications, including: MVP and UiBinder, using the Channel API for push, using Facebook and Twitter OAuth for authorization, JDO, the Task Queue, transactions and transactional tasks, Memcache, and XMPP. This is the Packt Publishing link: - http://link.packtpub.com/5XWJBI Book blog w/ table of contents: - http://theconnectr.blogspot.com/ Enjoy. -- Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Channel API still not live...
Hello there, Google announced Channel API for 1.3.6 but it is still not live in 1.3.7. It runs in dev mode but when deployed I get a 'feature not implemented' exception. Does anyone has any updated on this? Google team? Thank you. Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] App Engine Channel API release date on production?
Hello there, I thought Channel API would be enabled with v1.3.6. We are now at v1.3.7, and I get an error when trying it: Uncaught exception from servlet com.google.apphosting.api.ApiProxy$FeatureNotEnabledException: The channel service is not enabled. Could anyone share some info regarding its release? Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: Channel api / Dance dance robot: what is ApplicationError: 2:
Thanks Don. Works perfectly. Here is a recap to summarize all the steps so others can do it too: 1. Extract the "apphosting/tools/dev-channel-js.js" file from appengine-api-1.0-sdk-1.3.5.jar 2. Create a directory _ah/channel in your war directory 3. Rename dev-channel-js.js to jsapi and place it in _ah/channel dir. 4. In your main html file include this jsapi file with
[appengine-java] Re: Dance Dance Robot error / Channel API
Thanks Don. Including dev-channel-js.js works perfectly. Daniel On Jul 27, 10:14 am, Don Schwarz wrote: > Sorry, to be clear, I meant that you should create an /_ah/channel directory > at the top of your war and copy dev-channel-js.js so it is a file named > 'jsapi' in that /_ah/channel directory. This is the path that will work > automatically in the 1.3.6 DevAppServer and in prod when this feature > launches publicly. > > If you name the script something else (as you've done), that will work fine > for now but you'll need to remember to adjust the path later. > > > > On Mon, Jul 26, 2010 at 9:47 PM, GoSharp Lite wrote: > > Thanks, Don. It works like a charm after I include below line in html. > > > > > On Jul 26, 11:03 pm, Don Schwarz wrote: > > > Yes, this feature isn't launched in the production server yet. > > > > You can try it out in the 1.3.5 DevAppServer, but it requires a slightly > > > workaround: > > > > Extract the "apphosting/tools/dev-channel-js.js" file from > > > appengine-api-1.0-sdk-1.3.5.jar and move it to /_ah/channel/jsapi in your > > > war directory (as if it were a static file). > > > > Your HTML should then use
[appengine-java] Channel api / Dance dance robot: what is ApplicationError: 2:
Hello there, I am trying out the Channel API with my own project and the Google demo app Dance Dance Robot. In both cases I get ApplicationError 2 when trying to push a message. There is no doc but all libraries are available in the lastest GAE release. Here is the error: com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred. Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: See trace below. What is ApplicationError2, how to fix it? Any help / pointer would be appreciated. Thanks. Daniel SEVERE: Failed to push the message com.metadot.book.stalkrapp.shared.mess...@1010a3b to client channel- a4kt0t-stalkrappt...@example.com-1 com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred. at com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServ iceImpl.java: 59) at com.metadot.book.stalkrapp.server.PushServer.sendMessageToOneUser(PushServe r.java: 82) at com.metadot.book.stalkrapp.server.FriendsServiceImpl.getFriend(FriendsServi ceImpl.java: 283) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java: 25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime .java: 100) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java: 562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi ceServlet.java: 188) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi ceServlet.java: 224) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract RemoteServiceServlet.java: 62) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 713) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.metadot.book.stalkrapp.server.servlets.LoginFilter.doFilter(LoginFilter .java: 31) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi lter.java: 51) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans actionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFile Filter.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(DevAppEn gineWebAppContext.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: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: at com.google.appengine.api.channel.dev.LocalChannelService.sendChannelMessage (LocalChannelService.java: 91) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl
[appengine-java] Re: Dance Dance Robot error / Channel API
Thanks for the tip about channel.js. This is what I needed. Now I get an error when pushing a message to a client. I get this: com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred. Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: Here is the stack trace. Let me know of any ideas you might have. Thanks! Daniel SEVERE: Failed to push the message com.metadot.book.stalkrapp.shared.mess...@1010a3b to client channel- a4kt0t-stalkrappt...@example.com-1 com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred. at com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServiceImpl.java: 59) at com.metadot.book.stalkrapp.server.PushServer.sendMessageToOneUser(PushServer.java: 82) at com.metadot.book.stalkrapp.server.FriendsServiceImpl.getFriend(FriendsServiceImpl.java: 283) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java: 100) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java: 562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java: 188) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java: 224) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java: 62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.metadot.book.stalkrapp.server.servlets.LoginFilter.doFilter(LoginFilter.java: 31) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: 51) 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: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: at com.google.appengine.api.channel.dev.LocalChannelService.sendChannelMessage(LocalChannelService.java: 91) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.appengine.tools.development.ApiProxyLocalImpl $AsyncApiCall.call(ApiProxyL
[appengine-java] Re: Dance Dance Robot error / Channel API
Yes it is in App Engine 1.3.5. Look in the jar. I've got the backend working already. There is no doc, just classes. Among other things here is what there is: import com.google.appengine.api.channel.ChannelMessage; import com.google.appengine.api.channel.ChannelService; import com.google.appengine.api.channel.ChannelServiceFactory; and it all works. Daniel On Jul 16, 6:42 pm, Rahul Ravikumar wrote: > The Channel API for Google App Engine is not out yet! > > On Jul 15, 6:11 pm, Daniel Guermeur wrote: > > > > > Hello there, > > > I am building a GWT+ GAE app based on Dance Dance Robot app, the demo > > Google IO demo app showcased at Google IO. > > > I am using the Channel API (Java AppEngine 1.3.5) . I am almost there > > but there is one hick up on the GWT client side (Java): > > > When running the app I get an error: > > == > > - Uncaught exception escaped. > > com.google.core.client.JavaScriptException: (TypeError): $wnd.goog is > > undefined. > > == > > > This comes from the ChannelFactory.java on the client side. Here it > > is: > > > public class ChannelFactory { > > public static final native Channel createChannel(String > > channelId) /*-{ > > return new $wnd.goog.appengine.Channel(channelId); > > }-*/; > > > } > > > Again this is straight from the Dance Dance Robot demo app. > > > I am pretty sure it is a stupid mistake on my part but can't find it. > > > Any suggestion would be greatly appreciated. > > > Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Dance Dance Robot error / Channel API
Hello there, I am building a GWT+ GAE app based on Dance Dance Robot app, the demo Google IO demo app showcased at Google IO. I am using the Channel API (Java AppEngine 1.3.5) . I am almost there but there is one hick up on the GWT client side (Java): When running the app I get an error: == - Uncaught exception escaped. com.google.core.client.JavaScriptException: (TypeError): $wnd.goog is undefined. == This comes from the ChannelFactory.java on the client side. Here it is: public class ChannelFactory { public static final native Channel createChannel(String channelId) /*-{ return new $wnd.goog.appengine.Channel(channelId); }-*/; } Again this is straight from the Dance Dance Robot demo app. I am pretty sure it is a stupid mistake on my part but can't find it. Any suggestion would be greatly appreciated. Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] TO GOOGLE GAE Java team: Book author looking for early access to next release (java)
Hello there I am finishing a book on GWT + GAE with Packtpub. I would like to include a chapter on **Browser Push (Comet) communication** feature. This feature is 'on deck' as indicated on the GAE roadmap (http:// code.google.com/appengine/docs/roadmap.html). To write this chapter, I would like to have an early access to the upcoming GAE Java release. Could someone at Google help me with this? Thank you so much. Daniel -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.