升级到播放2.3.8后,从webservices发送请求超时

时间:2015-05-04 14:45:33

标签: web-services playframework cxf playframework-2.3

所以这就是故事,我有一个使用org.apache.cxf插件来提供SOAP服务的play框架应用程序。在我的路线文件中,我有以下内容:

GET     /soap/*path                 org.apache.cxf.transport.play.CxfController.handle(path)
POST    /soap/*path                 org.apache.cxf.transport.play.CxfController.handle(path)

这会路由到我自己的一个函数,它将路径转换为另一个将触及我常用控制器的请求。我们通过构建WSRequestHolder对象来实现此目的。我们设置标题,查询参数等。

这曾经在游戏2.2中运行得相当好,但随着升级到2.3.8,似乎存在问题。我已将其追溯到这一行:

Promise<WSResponse> responsePromise =  request.get();    
WSResponse response = responsePromise.get(2000);

当我们发出请求时(调用response.Promise.get时),无论超时设置如何,调用都会超时。我正在使用基本登录请求进行测试,并且它用于在200毫秒内响应。我已经使用postman复制了请求参数,并且请求似乎在它自己的工作正常,但是当它从我的webservice被解雇时,它会超时。

我可能在升级到2.2时遗漏了一些东西,但我甚至不确定要调试什么。它显然没有击中控制器,并且在DEBUG级别打开播放日志甚至看不到请求。

任何帮助都将不胜感激。

更新

我在dev和prod模式下测试过它。两者似乎都失败了。

1 个答案:

答案 0 :(得分:0)

我明白了。问题在于,在我们重定向请求期间,我们重新添加了Content-Length标头两次,一次是长度,一次是零(试图强制重新生成长度)。事实证明这在play 2.2中起作用,但导致它在2.3中挂起。确保仅添加Content-Length标头一次可防止请求挂起。 Dev / Prod模式经过测试和运行。