首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以全局设置HTTP连接的超时时间?

是否可以全局设置HTTP连接的超时时间?
EN

Stack Overflow用户
提问于 2012-03-30 07:17:28
回答 3查看 27.4K关注 0票数 17

我有一个程序,它使用javax.xml.ws.Service调用由WSDL定义的远程服务。此程序在Google App Engine上运行,该引擎在默认情况下将HTTP连接超时设置为5秒{1}。我需要增加此超时值,因为此服务通常需要很长时间才能响应,但由于此请求不是使用URLConnection发出的,因此我无法确定如何调用URLConnection.setReadTimeout(int){2}或以其他方式更改超时。

有没有办法在App Engine上全局设置HTTP连接超时时间?而且,为了分享知识,人们通常如何去解决这类问题呢?

{1}:https://developers.google.com/appengine/docs/java/urlfetch/overview#Requests

{2}:http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout(int)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-22 04:13:58

试试这个:

代码语言:javascript
复制
Port port = service.getPort(endPointInterface);  //or another "getPort(...)"
((BindingProvider) port).getRequestContext()
    .put(BindingProviderProperties.REQUEST_TIMEOUT, 30);
票数 8
EN

Stack Overflow用户

发布于 2012-05-05 03:00:31

请参阅https://developers.google.com/appengine/docs/java/urlfetch/usingjavanet

你可以这样做来获得一个URLConnection:

代码语言:javascript
复制
    URL url = new URL("http://www.example.com/atom.xml");
    URLConnection tempConnection = url.openConnection();
    tempConnection.setReadTimeout(10);
票数 5
EN

Stack Overflow用户

发布于 2015-04-24 16:15:09

对于带有JAX-WS的App Engine,您必须设置请求上下文(今天使用SDK 1.9.15进行了测试)。对于普通的机器,你不能超过60秒,为了更好地使用任务队列,你必须切换到更大的机器(Bx)。

对于本地测试,您通常会使用BindingProviderProperties.CONNECT_TIMEOUT和BindingProviderProperties.REQUEST_TIMEOUT,但它们不在App Engine JRE白名单上,您的代码检查可能会不断警告您这一点。但是,可以使用等效的字符串:

代码语言:javascript
复制
com.sun.xml.internal.ws.connect.timeout
com.sun.xml.internal.ws.connect.timeout

对于部署到App Engine:

代码语言:javascript
复制
com.sun.xml.ws.connect.timeout
com.sun.xml.ws.request.timeout

如何将其应用于从JAX-WS 2.x自动生成的代码的完整示例,必须以毫秒为单位提供值:

代码语言:javascript
复制
@WebEndpoint(name = "Your.RandomServicePort")
public YourServiceInterface getYourRandomServicePort() {
    YourRandomServiceInterface port = super.getPort(YOURRANDOMSERVICE_QNAME_PORT, YourRandomServiceInterface.class);
    Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
    requestContext.put("com.sun.xml.ws.connect.timeout", 10000);
    requestContext.put("com.sun.xml.ws.request.timeout", 10000);
    return port;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9934970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档