2010-10-29 51 views
2

我们在GAE服务器和GWT和Android客户端上有一个Restlet小应用程序。 Restlet向GWT客户端提供GWT序列化回复,向JSON客户端提供JSON。Restlet将JSON发布到Appengine错误

在本地和AppEngine生产服务器上都可以使用GWT序列化。

Android(JSON)客户端与本地开发者服务器通信时,一切正常。

Android正在生产AppEngine服务器获取JSON回复,但POST失败。日志中没有错误或警告。服务器上的函数被调用,但传递的参数为空。

这是有问题的代码:

@Post("json") 
public void createLocationJSON(Location location) { // location is always null 
    // do something with 'location' 
} 

回答

3

只是为了让大家知道:我设法GAE +的Restlet + JSON + GWT工作后多摆弄。这个过程非常混乱(让我想起了为Win32编程的日子):我只是在改变设置,直到它开始工作。

说我遇到的问题是:

  1. 它是服务于错误的表示(JSON,XML,GWT),以错误的客户。后来事实证明,我必须关注课堂内部的方法顺序。 WTF?
  2. 我无法让它在子路径上工作,例如/休息/*。

我不打算使用的Restlet,原因如下(提示作家):

  1. 文档是稀缺的,不准确的,有时是矛盾的(在文件的不同部分解释以不同的方式事情) 。
  2. 配置不是标准的JAX-RS。我知道他们可以选择将其配置为JAX-RS,但文档中的所有示例都不基于此。

从那时起我切换到Jersey

+0

怎么样泽西岛为你工作? – 2011-03-27 21:01:48

+0

其实很好,直到1.5停止在appengine上工作(稍后通过配置解决):http://java.net/jira/browse/JERSEY-630 – 2011-03-27 21:06:56

+0

与此同时,我们用Resteasy替换它,恕我直言,它有更好的文档。 – 2011-03-27 21:12:24

1

您遇到了几个Restlet用户面临的GAE限制。

前段时间,GAE停止支持接受分块的HTTP实体。我们用POST和PUT以及原始的GAE Servlets重现了这个问题,所以这不是Restlet相关的。请参阅GAE问题: http://code.google.com/p/googleappengine/issues/detail?id=129

我们发现的唯一解决方法是不要区块实体,这意味着可以提前计算其大小。

在我们刚刚发布的Restlet 2.1 M3版本中,我们在ClientResource上添加了一个简单的“entityBuffering”属性以便于实现(默认设置为“false”)。

我们正在升级我们的“第一个应用程序”示例来说明解决方法。我们还必须应对GWT 2.2与其以前的GWT 2.1核心API的兼容性问题,因此Restlet 2.1将仅适用于GWT。

添加详细信息可在此页: http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html

最好的问候,

杰罗姆

的Restlet〜创始人和技术负责人〜http://www.restlet.org

Noelios技术〜http://www.noelios.com

+0

嗨,杰罗姆。感谢-1。非常优雅。我想添加一些内容: – 2011-03-31 18:55:33

+0

1.您的回复迟了几个月。当我需要帮助时,你在哪里?问题标签为'restlet',我希望你们可以将SO作为这个开发者问答网站进行监控。 – 2011-03-31 18:57:41

+1

2. GAE问题是从2008年开始的。2010年10月我遇到了问题。您有专门针对GAE的Restlet版本。为什么你不能在文档中明确指出存在严重问题? – 2011-03-31 19:00:46