Java Google AppEngine URL查询字符串参数未传递给Jersey GET处理程序

Java Google AppEngine URL查询字符串参数未传递给Jersey GET处理程序,java,google-app-engine,jersey,Java,Google App Engine,Jersey,我用Jersey实现了一个测试方法,可以在我的Google AppEngine本地开发服务器上运行。方法签名为: @GET public String sayHello(@QueryParam ("name") String id) 我在web浏览器中输入以下url以进行测试: http://127.0.0.1:8888/sayhello?name=bill ,浏览器随即收到预期的Hello,bill响应 然而,当我将这个appengine应用程序部署到云端时,我没有得到预期的响应。名称回

我用Jersey实现了一个测试方法,可以在我的Google AppEngine本地开发服务器上运行。方法签名为:

@GET
public String sayHello(@QueryParam ("name") String id) 
我在web浏览器中输入以下url以进行测试:

http://127.0.0.1:8888/sayhello?name=bill
,浏览器随即收到预期的Hello,bill响应

然而,当我将这个appengine应用程序部署到云端时,我没有得到预期的响应。名称回显为Hello。我记录了收到的QueryParam值,日志确认查询参数没有传递到方法中

code.rest.impl.Test sayHello: name QueryParam received is:null
如果我还指定了@DefaultParam,那么声明的默认参数将替换空值,正如预期的那样


为什么部署的云应用程序不接收URL查询参数,而本地开发服务器却正确接收这些参数?是否有需要修改的安全配置?

我确定了此配置不起作用的原因。事实上,有两个原因,但主要原因是我转发的请求来自一个未注册的Google AppEngine域。这两个请求都是完整接收的,但从日志来看,它们的处理方式不同

从我不控制的Google Apps域或任何常规域转发:

2012-06-04 13:18:48.146 /sayHello 200 443ms 0kb Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

12.216.181.76 - - [04/Jun/2012:10:18:48 -0700] "GET /program/sayHello?name=bill InfoByID HTTP/1.1" 200 52 "http://somedomain.org/sayHello?name=bill"
来自Google Apps域I控件并与此AppEngine实例关联请注意报告/处理请求方式的差异:

2012-06-04 13:18:41.312 /sayHello?name=bill 200 44ms 0kb Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

12.216.181.76 - - [04/Jun/2012:10:18:41 -0700] "GET /sayHello?name=bill HTTP/1.1" 200 169 - "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"...

这不起作用的另一个令人尴尬的叠加原因是我从浏览器发出端口443请求来测试web服务,因为我使用了一个自动添加https:的Firefox插件,而这只是一个http web服务。

不,没有理由不起作用。我总是这样做。您确定正确部署了代码吗?检查版本部署时间,确保没有旧版本的代码…没错,您的确认激励我继续尝试: