java - jax-ws设置读取wsdl和发送请求的连接超时时间

标签 java wsdl jax-ws urlconnection

我们的应用程序需要向 SOAP 服务发送一些请求。我们使用 wsimport 命令为我们的客户端生成类。但有时当服务中断或某些网络问题时,我们的请求会挂起直到超时,这太长了。我们想控制超时值,所以我们尝试几种方法。

为了调用服务方法,在阅读其他帖子后,我们设置如下:

((BindingProvider) port).getRequestContext().put("sun.net.client.defaultReadTimeout", 3000);
((BindingProvider) port).getRequestContext().put("sun.net.client.defaultConnectTimeout", 10000);

但在此之前,我们必须调用 get port 来读取 wsdl 文件。我们尝试创建这样的 URL:

url = new URL(null, "http://theirsite/WS?WSDL", new URLStreamHandler() {

    @Override
    protected URLConnection openConnection(URL url) throws IOException {
        logger.info("URLStreamHandler got call!");
        URL clone_url = new URL(url.toString());
        HttpURLConnection clone_connection
                = (HttpURLConnection) clone_url.openConnection();
        clone_connection.setConnectTimeout(5000);
        clone_connection.setReadTimeout(3000);
        return (clone_connection);
    }
});

然后我们在创建服务对象时使用这个 url 作为参数。但是我们的 URLStreamHandler 从未接到电话。

我们甚至尝试像这样设置系统属性:

System.setProperty("sun.net.client.defaultReadTimeout", "" + 3000);
System.setProperty("sun.net.client.defaultConnectTimeout", "" + 5000);

但到目前为止,我们没有任何效果。

所以 any1 可以帮我处理这个案子吗?或者有更好的方法吗?需要说明的是,我们不想从本地读取 wsdl 文件。

最佳答案

也许您使用的属性不正确。

试试这些:

((javax.xml.ws.BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout",
        Integer.valueOf(timeout));
((javax.xml.ws.BindingProvider) port).getRequestContext().put("com.sun.xml.internal.ws.request.timeout",
        Integer.valueOf(timeout));

另外,请注意,com.sun.xml.ws.request.timeout 之间是有区别的和 com.sun.xml.internal.ws.request.timeout .当您使用 JDK JAX-WS 实现时,您应该使用 internal。

关于java - jax-ws设置读取wsdl和发送请求的连接超时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28183862/

相关文章:

java - 使用@WebFault 进行 JAX-WS 异常处理

java - CXF + SSL + WebLogic 9.10

java - SWIG 将生成的类从不同的模块和包导入当前类

java - Richfaces 3 数据表排序不起作用

java - 当应用于基本类型的实例时,ObjectInput/OutputStream 和 DataInput/OutputStream 有什么区别?

java - 使用 Java 从 WSDL 2.0 生成 SOAP 响应 XML

iphone - 如何让 iPhone 应用程序使用 WSDL 服务?

java - 当我将 scala nature 添加到 Eclipse 中的项目时收到错误

java - Glassfish 3.1.2 build 5 WAR 部署问题

java - 是否可以通过编程方式控制 set-jaxb-validation-event-handler?