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);
嗨。我相信你已經檢查過https://docs.oracle.com/cd/E24329_01/web.1211/e24965/wsaddressing.htm#WSADV676?特別是將功能添加到getPort()部分的部分不會反映在迄今爲止嘗試的內容中! – Jan
是的,有山的文件。這看起來像解決方案。你能發表一個答案嗎? –