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

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

有没有办法在应用引擎上全局设置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(国际)


答案 1

您可以尝试设置此处记录的 和 系统属性,例如sun.net.client.defaultConnectTimeoutsun.net.client.defaultReadTimeout

System.setProperty("sun.net.client.defaultReadTimeout", "30000");
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");

编辑

抱歉,刚刚重新阅读并注意到这是在Google App Engine上。我不确定,但考虑到谷歌和甲骨文最近的诉讼关系,我猜GAE不运行甲骨文JVM。我会把它留在这里,以防其他人遇到类似的问题。


答案 2

试试这个:

Port port = service.getPort(endPointInterface);  //or another "getPort(...)"
((BindingProvider) port).getRequestContext()
    .put(BindingProviderProperties.REQUEST_TIMEOUT, 30);

推荐