RESTful application on Google App Engine Java?

JavaGoogle App-EngineRestJerseyRestlet

Java Problem Overview


I would like to create a RESTful app on Google App Engine. I would like to provide XML and JSON services. I have briefly experimented with Restlet, Resteasy, and Jersey. I haven't had much success with any of them, other than some simple examples in Restlet.

Could you share your experiences creating a Restful web application on Google App Engine using Java or provide any insight on the aforementioned toolkits on GAE?

Thanks!

Edit (2009-07-25):

I have decided to use Restlet for the time being. It seems to work flawlessly so far. Please post any other insights/opinions you may have. What problems have you encountered? Have you successfully used Jersey/Restlet/Resteasy on GAE/J? If so, we want to hear about it!

Java Solutions


Solution 1 - Java

I'm happy to report that Restlet M3 works FLAWLESSLY on AppEngine 1.2.2. I have followed the "First steps" and "First resource" tutorials found http://restlet.com/technical-resources/restlet-framework/guide.

So, it seems to me that Restlet is the answer for your GAE/J Restful applications.

Solution 2 - Java

I'm using Jersey on GAE. Here is the link for those who are interested about setting it up: (I'm using GAE SDK v1.4.0):

http://tugdualgrall.blogspot.com/2010/02/create-and-deploy-jax-rs-rest-service.html

Solution 3 - Java

I am going to begin exploring this as well, but haven't started yet. I did find this framework, that says it should work, but like I said haven't tried it yet.

http://wiki.restlet.org/docs_1.2/13-restlet/275-restlet/252-restlet.html

If you get it working, or manage to get one of the above suggestions working, update everyone as I am sure there is interest in this.

Solution 4 - Java

I'm using Restlet together with Guice on Google AppEngine. IMHO they fit together very well. See my recent blog post for further details: http://haraldpehl.blogspot.com/2009/11/google-appengine-restlet.html

Solution 5 - Java

Since these valiant older solutions were patched together, Google has apparently supplied an Eclipse plugin to create a starter project that produces an App Engine app, an Android APK, and a Web app, all talking to one another over an interface defined by a single set of annotated object declarations.

Haven't tried this yet myself, but do have a look before trying any of the more heterogeneous examples described in the earlier messages above:

https://developers.google.com/eclipse/docs/appengine_connected_android

This Google video is also quite informative:

http://www.youtube.com/watch?v=NU_wNR_UUn4

Solution 6 - Java

For what it's worth, there has been quite a bit of discussion on Jersey user lists wrt how to make Jersey work on GAE. It is bit tedious work due to GAE restrictions (missing classes from white lists -- hopefully resolved over time), but apparently can be made to work. So while not trivially easy, that might be your best bet; esp. since many of the problems faced are the same for all frameworks (imposed by GAE).

Solution 7 - Java

Well, I would highly advice you to have a look at play framework

Have a look at the video on the homepage

It has a gae module

With siena as a orm to handle gae datastore

From all the java frameworks I've seen so far, I think it has the easier learning curve,

  • great documentation,

  • a tutorial to develop a complete application

  • very active and helpfull community,

  • free as in beer and also as in speech

  • highly scalable due to it's stateless out of the box design

  • rest friendly

  • highly customizable via it's modules and plugin approach

more over, taking into account it's for a college course, it's really easy to hack into the code, I could handle a couple of tickets and new features without any experience at all with java, just a couple of year developing web applications with php

other benefits

  • it's really easy to start, no complicated setup involved, just download and unzip the file and your are ready

  • great development experience, just fix the code and hit refresh, play autocompiles changes on the fly when running on development mode

  • fast and lightweight

  • fullstack, you don't have to integrate cumbersome frameworks to make it work

  • great errors report, no more endless error stack trace, just shows you the line with error

  • no xml configuration anywhere around

  • great support for tdd with selenium integrated test

I think the main advantage as a learning tool, is that it's possible to peek into the source code without feeling lost and the community support... The documentation is very clear, and you can learn a lot by just having a look at the source code...

Solution 8 - Java

I recently put together a project template with Jersey, Guice and AppEngine at GitHub. It has been developed with SimpleDS, but it can be modified to work with Objectify / JDO easily. The project is live here.

It should be a good starting point for new projects.

Solution 9 - Java

Here is a very very good tutorial Restlet/Android/GAE/Objectify with an example of a simple application. Sorry it's in french, but you can juste copy/paste the code, or use google traduction.

I followed it and had a working Android / GAE server communicating together in a 2 hours. It's a good base to start or test Restlet.

http://www.tutos-android.com/webservice-rest-android-appengine-restlet-objectify

Good Luck

Solution 10 - Java

The 2 most cumbersome GAE REST API actions to make work, whether Java or .py, are graphics and how to undisplay private information. My little gae rest feed forked another project. I'm sure Java succeeds where python stuck due to the Java takes and gives more ways (advantages) as well as longer (slower) time to succeed (disadvantage) while python projects opens less ways to succeed (disadvantageous) and less development time (advantageous rapid development) to succeed the same.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJP RichardsonView Question on Stackoverflow
Solution 1 - JavaJP RichardsonView Answer on Stackoverflow
Solution 2 - JavaVirenView Answer on Stackoverflow
Solution 3 - JavabroschbView Answer on Stackoverflow
Solution 4 - JavaHaraldView Answer on Stackoverflow
Solution 5 - JavaCarlView Answer on Stackoverflow
Solution 6 - JavaStaxManView Answer on Stackoverflow
Solution 7 - JavaopensasView Answer on Stackoverflow
Solution 8 - JavaNacho ColomaView Answer on Stackoverflow
Solution 9 - JavaTyvainView Answer on Stackoverflow
Solution 10 - JavaNiklas RosencrantzView Answer on Stackoverflow