如何证明套接字连接超时发生在60秒内



我知道获取URL的套接字超时固定为60秒。

我使用java.util.logging,在调用https函数之前,我会记录以下内容:

2012-03-27 14:46:15.445 TelenorClient更改模拟状态:尝试1

5秒后出现异常

2012-03-27 14:46:2.1997 TelenorClient changeSimStatus:exception java.net.SocketTimeoutException:获取时超时:https://serviceportal...

我使用的是基于JAX-WS的Web服务客户端,根据以下消息,不允许使用BindingProviderProperties和RequestContext设置超时:

com.sun.xml.internal.ws.client.BindingProviderProperties不受谷歌应用引擎Java运行时环境的支持

这与谷歌应用引擎有自己的超时设置方式的第一句话相对应。但对我来说,这似乎比60秒短得多。

我正在寻找如何解决这个问题的技巧。

URL获取服务(由您的JAX-WS客户端使用)的超时时间限制为5秒。您可以通过setConnectTimeout()将其延长至最长60秒。对于更多(最多10分钟),您必须通过任务队列或Cron执行它。

更新:

如果您的JAX-WS客户端不允许您访问连接,那么您可以尝试在任务队列上执行整个JAX-WS调用。这是通过DeferredTask最容易做到的。

我从Mitch Rudminer那里得到了这个提示;只需使用常量的文本值。

Map<String, Object> context = ((BindingProvider) service).getRequestContext();
context.put("com.sun.xml.ws.request.timeout", 60*1000);
context.put("com.sun.xml.ws.connect.timeout", 10*1000);

看起来它正在工作:

2012-07-03 14:26:45.604com.simservices.bus.kpdata.DataDetailsServlet getDetailData:2012-04-01-8931084711061420005

2012-07-03 14:26:56.183com.simservices.bus.kpdata.DataDetailsServlet getDataUsage:获取对KPN 数据的响应

2012-07-03 14:27:33.619com.simservices.bus.kpdata.DataDetailsServlet getDataUsage:detailsList有4612个元素

2012-07-03 14:27:36.540com.simservices.bus.kpdata.DataDetailsServlet getDataUsage:已添加4612个数据元素

相关内容

  • 没有找到相关文章

最新更新