gpt4 book ai didi

Java SOAP/JAX-WS : How to set timeouts?

转载 作者:行者123 更新时间:2023-11-29 02:58:54 24 4
gpt4 key购买 nike

我正在使用 Java 调用网络服务。它运行良好,但我也想设置连接超时。

我的代码:

URL urlwsdl = new URL ("file://" + wsdl);
QName qn = new QName("http://myserver/myservice", "MyService");
port = new TimeSeriesService_Service (urlwsdl, qn).getMyServicePort ();

BindingProvider prov = (BindingProvider) port;
prov.getRequestContext ().put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://server1/myservice");
prov.getRequestContext ().put (BindingProvider.USERNAME_PROPERTY, "max");
prov.getRequestContext ().put (BindingProvider.PASSWORD_PROPERTY, "secret");

QueryRequest1 req = new QueryRequest1 ();
QueryResponse1 res = port.queryRequest1 (req); // *** TIMEOUT for ~2 minutes

我在网上找到了一些帖子。他们使用绑定(bind)提供程序的上下文,就像我对 http-auth 所做的那样。

例如

prov.getRequestContext ().put ("com.sun.xml.ws.request.timeout", 1000000);

但他们使用我的命名空间中没有的对象。

例如

sun.net.client.defaultConnectTimeout
com.sun.xml.ws.connect.timeout
com.sun.xml.ws.request.timeout

我有 sun.net 但没有 .client。我有 com.sun.xml 但没有 .ws。

我有一个简单的 java jdk(1.7,Debian 8.3,64 位),可以编译和运行我的网络服务、网络客户端和 wsimport。没有安装 netbeans 和 jboss。

关于如何设置超时的任何想法?感谢帮助!克里斯

最佳答案

使用 JDK JAX-WS 实现,您可能应该设置内部属性

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

请为我的 JIRA 问题投票,以便在即将发布的 JAX-WS 版本中对其进行标准化 https://java.net/jira/browse/JAX_WS-1166

关于Java SOAP/JAX-WS : How to set timeouts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com