我可以全局设置HTTP连接的超时吗?

Tra*_*ebb 17 java google-app-engine wsdl urlconnection httpurlconnection

我有一个程序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)

Jus*_*ick 14

你可以尝试设置sun.net.client.defaultConnectTimeoutsun.net.client.defaultReadTimeout文件系统属性在这里,如

System.setProperty("sun.net.client.defaultReadTimeout", "30000");
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
Run Code Online (Sandbox Code Playgroud)

编辑

很抱歉,只需重新阅读并注意到这是在Google App Engine上.我不确定,但考虑到Google和Oracle最近的诉讼关系,我猜测GAE没有运行Oracle JVM.我会留下这个,以防其他人遇到类似的问题.


eli*_*ias 8

试试这个:

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


小智 5

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

您可以执行以下操作来获取 URLConnection:

    URL url = new URL("http://www.example.com/atom.xml");
    URLConnection tempConnection = url.openConnection();
    tempConnection.setReadTimeout(10);
Run Code Online (Sandbox Code Playgroud)