2017-05-30 111 views
0

我们已经使用JAX-WS RI 2.1.6 in JDK 6现在问题来了,当我们启用https Web服务调用停止达到以下错误的服务器和Java报表实现Web服务调用,的Https Web服务调用失败

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); 

注:我们的应用服务器WebSphere Application Server和版本7.0.0.19

感谢ADVA NCE。

回答

1

经过大量的,我们解决了这一努力。我公司将提供步骤,如果与此相关的任何情况如何找到根本原因,

第1步: 首先,我们启用了WebSphere Application Server肥皂跟踪通过以下设置,

管理控制台>服务器>服务器类型> WebSphere应用程序服务器> {服务器}>疑难解答>更改日志详细级别>运行

在运行时,请把这个,*=info: com.ibm.ws.websvcs.*=all: org.apache.axis2.jaxws.*=all

此步骤将在您的日志文件夹中创建trace.log文件。这超出你的服务器 现在,任何Web服务请求将日志添加到该文件和必要的道具一样端点,请求,响应等

第2步: 阅读本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握手失败。

第3步: 此解决方案是覆盖端点,可以通过添加以下行来实现你的肥皂存根内,

RulesSoap rulesSoap = rules.getRulesSoap(); 
((BindingProvider)rulesSoap).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://uxm.solutions.lnet.com:9445/axis/dswsdl/Rules/1/0"); 

结论: 因此,这里就是我的想法即使我们在创建对象时通过了https网址,但在运行时仍然不会将此网址设为https,对我而言,这看起来像是使用JAX-WS创建存根的存根问题。

谢谢。

0

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

看到这个: How to use TLS 1.2 in Java 6