2015-11-21 72 views
0

我在websphere上運行代碼並使用soap 2.12-2.2 ?.以及用於生成IBM JAX-WS Web服務客戶端代碼的RAD工具。我可以連接到有問題的服務器,但Web服務需要進行尋址。如果我使用http客戶端代碼和soap ui,我可以使這個請求生效,並且我看到特定的SOAP操作尋址標題。但是我找不到添加這個jax-ws代碼的方法。我提到了websphere ibm,因爲我懷疑它是否是該代碼的內部錯誤。在封面下,該庫是針對jax-ws的org.apache.axis2。這是我嘗試的所有代碼。JAX-WS爲iBM websphere添加尋址,IBM web服務客戶端

預期要求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://schemas.schedulenow.com/paramedclients/services" xmlns:data="http://schemas.schedulenow.com/paramedclients/data" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> 
    <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
    <wsa:Action soap:mustUnderstand="1">http://sion</wsa:Action><wsa:To soap:mustUnderstand="1">...</wsa:To></soap:Header> 
    <soap:Body> 
     <ser:Initialize> 

這包含一個有效的請求時,我把原始字符串和點擊服務器。當我使用jax-ws ibm cod.e時,'wsa:Action'缺失。

的WSDL有這樣的:

但由於某些原因,客戶端就不會添加所需的標題。我嘗試了以下。

  SSLSocketFactory sslFactory = GenerateSocketAndTrustManager.createSSLFactory(); 

      _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressingAndDependentsDisabled", false); 
      _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressingAndDependentsDisabled", false); 
      _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressing.disabled", false); 
      _desc.getDispatch().getRequestContext().put("com.ibm.ws.wsaddressing.wsdl.UsingAddressing", true); 



@Addressing(enabled=true, required=true) 
@WebServiceClient(name = "ScheduleService", targetNamespace = "http://tempuri.org/", wsdlLocation = "WEB-INF/wsdl/ScheduleService_1.wsdl") 



      AddressingFeature feat = new AddressingFeature(true, false);    
      _service.getWSHttpBindingScheduleService(feat); 
+0

嗨。我相信你已經檢查過https://docs.oracle.com/cd/E24329_01/web.1211/e24965/wsaddressing.htm#WSADV676?特別是將功能添加到getPort()部分的部分不會反映在迄今爲止嘗試的內容中! – Jan

+0

是的,有山的文件。這看起來像解決方案。你能發表一個答案嗎? –

回答

1

如前所述here,要走的路是添加在其中創建您的端口(從Oracle文檔採取爲例)AddressingFeature

HelloWorld port = service.getHelloWorldPort(
    new AddressingFeature(true, true));