Java Https web服务调用失败

Java Https web服务调用失败,java,web-services,soap,websphere,jax-ws,Java,Web Services,Soap,Websphere,Jax Ws,我们已经在JDK 6中使用JAX-WS RI 2.1.6实现了webservice调用现在,当我们启用httpswebservice调用停止到达服务器时,问题出现了,java报告如下错误 javax.xml.ws.WebServiceException:java.io.IOException:Async io 操作失败(3),原因:RC:55指定的网络资源 或设备不再可用 现在我已经在SoapUI中对此进行了测试,并在那里收到了来自服务的响应 研究了各种各样的解决方案,它告诉我们提供超时设置,但

我们已经在JDK 6中使用
JAX-WS RI 2.1.6实现了webservice调用
现在,当我们启用
https
webservice调用停止到达服务器时,问题出现了,java报告如下错误

javax.xml.ws.WebServiceException:java.io.IOException:Async io 操作失败(3),原因:RC:55指定的网络资源 或设备不再可用

现在我已经在
SoapUI
中对此进行了测试,并在那里收到了来自服务的响应

研究了各种各样的解决方案,它告诉我们提供超时设置,但似乎没有任何效果

 @WebEndpoint(name = "RulesSoap")
    public RulesSoap getRulesSoap() {
        ((BindingProvider)super.getPort(new QName("urn:decision:Rules", "RulesSoap"), RulesSoap.class)).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 1000);
        ((BindingProvider)super.getPort(new QName("urn:decision:Rules", "RulesSoap"), RulesSoap.class)).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 1000);
        return super.getPort(new QName("urn:decision:Rules", "RulesSoap"), RulesSoap.class);
    }
仅供参考,JAX-WS实现遵循了几条简单的路线, 当然,我们将所有必要的数据提交到各自的存根中,但我不在这里提交,因为我们的
http
调用正在通过

Rules rules = new Rules(new URL(url), new QName("urn:decision:Rules", "Rules"));
RulesSoap rulesSoap = rules.getRulesSoap();
CorticonResponse response = rulesSoap.processRequest(request);
注意:我们的应用服务器
websphereapplicationserver
和版本
7.0.0.19


提前感谢。

您使用的是什么协议/密码?您已经提到,WAS7上的webservice与JDK6有连接,Java 6不支持TLS1.2(并且TLS1.1仅来自某些fixpack)

见此:
经过大量努力,我们解决了这个问题。如果发生任何与此相关的情况,我将提供步骤,如何找到根本原因

第1步: 首先,我们通过以下设置在
WebSphereApplicationServer
中启用了soap跟踪

管理控制台>服务器>服务器类型>WebSphere应用程序服务器> {您的服务器}>故障排除>更改日志详细级别>运行时

在运行时,请将其放入,
*=info:com.ibm.ws.webvcs.*=all:org.apache.axis2.jaxws.*=all

此步骤将在日志文件夹中创建
trace.log
文件。 现在,服务器发出的任何web服务请求都将向该文件添加日志和必要的道具,如端点、请求、响应等

第二步: 读取这个
trace.log
文件,我们发现了以下端点

PropertyValid 1 org.apache.axis2.jaxws.client.PropertyValidator validate validate property=(javax.xml.ws.service.endpoint.address) with value=(http://uxm.solutions.lnet.com:9445/axis/dswsdl/Rules/1/0)    
HTTPConnectio 3 resetConnection : http://uxm.solutions.lnet.com:9445/axis/dswsdl/Rules/1/0 Persistent : true
现在,如果您注意到我们的soap具有端点地址
javax.xml.ws.service.endpoint.address
,其中协议仍在使用
http
,这导致ssl握手失败

第三步: 解决方案因为这是覆盖soap存根中的端点,可以通过添加以下行来实现

RulesSoap rulesSoap = rules.getRulesSoap();   
((BindingProvider)rulesSoap).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://uxm.solutions.lnet.com:9445/axis/dswsdl/Rules/1/0");
结论: 因此,我认为,即使我们在创建对象时传递
https
url,但在运行时仍然不使用
https
url,对我来说,这看起来像是
JAX-WS
的存根创建问题

谢谢