2012-02-19 50 views
4

首先我需要说的是,我对Google App Engine的经验不是很丰富。Google App Engine上的REST风格的Web服务

我知道这是可能的,我们在GAE部署基于REST的Web服务(JERSEY)

而且我也知道,的Restlet有一个版本专门为GAE。

我想从那些使用两种方法的人那里得到建议,哪一个更好。

例如,配置GAE应用程序的JERSEY太困难或挣扎?或者例如使用RESTLET有什么缺点?或者它太厚(RESTLET)?

感谢

回答

2

我开始一年前发展与新泽西州和谷歌应用程序引擎的应用程序。从我的身边伟大的经验,但我从来没有用的Restlet工作..

我试图在这里总结一下我在GAE的整合中发现的主要困难:

  • 新泽西版本:1.6作品
  • 我建议你使用杰克逊(版本1.7.1),用于JSON表示

的web.xml片段:

<servlet> 
<servlet-name>jersey</servlet-name> 
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
<init-param> 
<param-name>com.sun.jersey.config.property.packages</param-name> 
<param-value>***package-with-your-classes***;org.codehaus.jackson.jaxrs</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 

配置:

@Provider 
public class JAXBContextResolver implements ContextResolver<JAXBContext> { 
private AnnoxAnnotationReader annotationReader; 
private JAXBContext context; 
private Class<?>[] classTypes = new Class[] { .. all your classes .. }; 

public JAXBContextResolver() { 
annotationReader = new AnnoxAnnotationReader(); 
Map<String, Object> properties = new HashMap<String, Object>(); 
properties.put(JAXBRIContext.ANNOTATION_READER, annotationReader);  
try { 
    this.context = JAXBContext.newInstance(classTypes, properties); 
} catch (JAXBException e) { 
    .. 
} 
public JAXBContext getContext(Class<?> objectType) { 
    return context; 
} 

..你可以看到我用Annox避免我的模型类中的注解!

希望它有帮助! Michele Orsi

+0

你是说你在使用1.6以外的版本时遇到了麻烦吗?尽管您的第一段以该介绍开头,但您并没有多说关于遇到的困难。 – Nilzor 2013-01-31 16:17:18

+0

你说的对,这个问题是我没有太多的时间来调查为什么它不起作用,现在我很好! – 2013-03-15 20:42:37

6

我试过Restlet,并不满意它:它试图做的很多,而不是它的核心JAX-RS(他们有它作为一个附加组件)。我遇到了一些问题,使得它可以在各种设置下工作(请求不会被路由到方法,但是当只改变方法顺序时,它会开始工作.WTF ?!)。他们的文档也很稀缺且不一致。

我看了看泽西岛:当时在GAE上运行时遇到了一些问题(通过支持论坛上的帮助解决)。另外我发现他们的文档不太好。最后,我和Resteasy/Jackson一起去了:docs非常棒,与Maven开箱即用,完全控制配置,安全和错误处理(作为JSON错误对象返回的代码中抛出的异常)。基本上没有问题。你可以在这里看一个例子:LeanEngine REST classes。另外,如果与JSON/Jackson一起使用(确保强制使用Jackson 1.9,因为它内置1.7版本),您可以很好地控制您的类如何映射到JSON:一对一,包装/嵌入,适配器模式等。

+0

你能帮忙吗?我试图让RESTEasy在GAE上工作,没有任何成功。绝对没有我能找到的文档(该zip带有> 20个jar,我真的需要GAE JSON + XML服务器?) – 2012-04-09 03:36:20

3

我一直在GAE上使用Restlet约6个月。我之所以选择它,部分原因是它们也有适用于Android和GWT的版本,这也是我的产品组合的一部分,我认为在任何地方使用同一个东西最简单。

与Peter K的评论相反,我发现文档非常好。除了restlet.org的在线文档之外,还有一本来自Manning的400页电子书(Restlet in Action),其内容非常深入。在Peter的评估之后,可能电子书出来了。

这就是说,这是一个很大的图书馆,有很多功能,这是一把双刃剑。一方面,每当我想解决一个新问题时,Restlet似乎已经有内置的东西来使它更容易。另一方面,当我试图找出问题时,我发现通过Restlet源代码进行调试具有挑战性 - 所有这些灵活性和功能都添加到广泛而深入的类层次结构中,并且很难看到这些碎片如何融合在一起。如果你正在构建一个实质性的应用程序,我认为这是值得一看的,因为我认为你不会遇到Restlet的很多限制。但是,我没有使用RestEasy,所以我无法做出明智的比较。