Web services mule简单web客户端soap请求与wsdl

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

我想从mule flow向web服务提出请求。到目前为止,我得到了WSDL生成类(wsdl2java)、准备好的流(如下)和“成功”发送请求。现在,问题是,即使我已经从生成的类中获取了基类,并将其放入有效负载中,但它并没有生成所需的soap

我的流程:

<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)