求助!!!
java通过JaxWsDynamicClientFactory 调用远程wsdl服务,老是抛错,不知道是我本地代码有问题,还是远程服务有问题。远程服务是一家集成平台的wsdl。
调用webservice代码如下:
public String process(JSONObject message) throws Exception {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("***WSEntry?wsdl");
HTTPConduit http = (HTTPConduit)client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();//策略
httpClientPolicy.setConnectionTimeout(30*1000);//连接超时(30秒)
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(30*1000);//响应超时(30秒)
http.setClient(httpClientPolicy);
String requestNo = message.getString("requestNo");
String reqMessage = buildReqMessage(message);
log.info("SurgeryStatusSyncProcess reqMessage={}",reqMessage);
String resultMessage = null;
try {
Object obj[] = client.invoke("invoke","1111");//OPERATION_NAME
resultMessage = (String)obj[0];
return StringUtils.isEmpty(resultMessage) ? "结果为空" : parseResultStatus(resultMessage);
}catch (Exception e){
throw e;
}
}
返回异常代码:
java.lang.IllegalArgumentException: Part {www.WondersHSBP.com}parameters should be of type com.wondershsbp.InvokeRequest, not java.lang.String
at org.apache.cxf.jaxb.io.DataWriterImpl.checkPart(DataWriterImpl.java:296) ~[cxf-rt-databinding-jaxb-3.5.2.jar!/:3.5.2]
at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:222) ~[cxf-rt-databinding-jaxb-3.5.2.jar!/:3.5.2]
at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:118) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) ~[cxf-rt-wsdl-3.5.2.jar!/:3.5.2]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:528) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:439) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:354) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:312) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:332) ~[cxf-core-3.5.2.jar!/:3.5.2]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:318) ~[cxf-core-3.5.2.jar!/:3.5.2]
远程服务wsdl文件如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions targetNamespace="www.WondersHSBP.com" name="HSBPService"
xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:tns="www.WondersHSBP.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="www.WondersHSBP.com"
xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:tns="www.WondersHSBP.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:element name="invokeRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="parameter" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="invokeResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="result" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="invokeRequest">
<wsdl:part name="parameters" element="tns:invokeRequest"></wsdl:part>
</wsdl:message>
<wsdl:message name="invokeResponse">
<wsdl:part name="parameters" element="tns:invokeResponse"></wsdl:part>
</wsdl:message>
<wsdl:portType name="HSBPServicePortType">
<wsdl:operation name="invoke">
<wsdl:input name="invokeRequest" message="tns:invokeRequest"></wsdl:input>
<wsdl:output name="invokeResponse" message="tns:invokeResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HSBPServiceBinding11" type="tns:HSBPServicePortType">
<soap11:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="invoke">
<soap11:operation style="document" soapAction="www.WondersHSBP.com/invoke"/>
<wsdl:input name="invokeRequest">
<soap11:body use="literal"/>
</wsdl:input>
<wsdl:output name="invokeResponse">
<soap11:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="HSBPServiceBinding12" type="tns:HSBPServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="invoke">
<soap12:operation style="document" soapAction="www.WondersHSBP.com/invoke"/>
<wsdl:input name="invokeRequest">
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output name="invokeResponse">
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HSBPService12">
<wsdl:port name="HSBPServicePort12" binding="tns:HSBPServiceBinding12">
<soap12:address location="http://172.16.100.80:18116/wondersHSBP/WSEntry"/>
</wsdl:port>
</wsdl:service>
<wsdl:service name="HSBPService11">
<wsdl:port name="HSBPServicePort11" binding="tns:HSBPServiceBinding11">
<soap11:address location=""/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>