2017-05-30 170 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