Web services mule简单web客户端soap请求与wsdl
我想从mule flow向web服务提出请求。到目前为止,我得到了WSDL生成类(wsdl2java)、准备好的流(如下)和“成功”发送请求。现在,问题是,即使我已经从生成的类中获取了基类,并将其放入有效负载中,但它并没有生成所需的soap 我的流程:Web services mule简单web客户端soap请求与wsdl,web-services,cxf,mule,webservice-client,Web Services,Cxf,Mule,Webservice Client,我想从mule flow向web服务提出请求。到目前为止,我得到了WSDL生成类(wsdl2java)、准备好的流(如下)和“成功”发送请求。现在,问题是,即使我已经从生成的类中获取了基类,并将其放入有效负载中,但它并没有生成所需的soap 我的流程: <flow name="flow1" doc:name="flow1"> <quartz:inbound-endpoint jobName="testingJob" repeatInterval="10810000" r
<flow name="flow1" doc:name="flow1">
<quartz:inbound-endpoint jobName="testingJob" repeatInterval="10810000" repeatCount="0" startDelay="5000" responseTimeout="10000" doc:name="Quartz">
<quartz:event-generator-job groupName="g1job" jobGroupName="g1job">
<quartz:payload>a</quartz:payload>
</quartz:event-generator-job>
</quartz:inbound-endpoint>
<logger message="Starting quartz for testing purpouses" level="INFO" doc:name="Logger"/>
<custom-transformer class="com.example.GenerateSimpleRoutePublish" doc:name="Java"/>
<cxf:simple-client doc:name="SOAP" serviceClass="com.example.ws.MyWebService" operation="send">
</cxf:simple-client>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="9094" path="sync-server-web/services/myws" method="POST" connector-ref="http_internal" doc:name="HTTP"/>
</flow>
Send.java方法和xml定义:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "send", propOrder = {"myRequest"})
public MyRequest getMyRequest()
public void setMyRequest(MyRequest value)
您可以使用Groovy脚本向webservice客户端发送SOAP请求,而不用使用自定义转换器,就像Java pojo类一样。。。请查看参考资料:-如果没有XSD/WSDL和transformer类,很难判断问题。。。你能分享一下吗?好的,我添加了WSDL(缩写版本)。这部分应该足够了(除此之外是~2k行,但“发送”基本上只是包装包含更多节点的MyRequest。在生成的代码中,我在send类中只有MyRequest的setter和getter,没有其他内容。谢谢
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:send xmlns:ns1="http://somenamespace.si/">
<ns1:MyRequest>
...
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="MyWebService" targetNamespace="http://ws.example.com/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://ws.example.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema elementFormDefault="unqualified" targetNamespace="http://ws.example.com/"
version="1.0" xmlns:tns="http://ws.example.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MyRequest" type="tns:MyRequest" />
<xs:element name="send" type="tns:send" />
<xs:element name="sendResponse" type="tns:sendResponse" />
<xs:complexType name="send">
<xs:sequence>
<xs:element minOccurs="0" ref="tns:MyRequest" />
</xs:sequence>
</xs:complexType>
<xs:complexType final="extension restriction" name="MyRequest">
<xs:complexContent>
...
@Override
public MuleEvent process(MuleEvent event) throws MuleException {
event.setMessage(transformMessage(event.getMessage(), event.getEncoding()));
// TODO Auto-generated method stub
return event;
}
public MuleMessage transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
MyRequest myRequest = new MyRequest();
/**
* some filling of testing data that is formatted correctly when soap is sent.
*/
Send send = new Send();
send.setMSyequest(myRequest);//the only setter method available for Send
message.setPayload(send);
return message;
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "send", propOrder = {"myRequest"})
public MyRequest getMyRequest()
public void setMyRequest(MyRequest value)