Question

I've searched the forums for an answer to this. I found one almost identical question, though the answer left me still wondering.

An almost identical post was found here:

Mule - Schedule a flow to consume a web service

This poster stated the problem I am having very well.

I am also new to Mule and am trying to do the very same thing. I didnt realize I needed a payload since I thought the operation specification was essentially the payload.

Notice that I have a flow that includes cxf:jaxws-client and that client specifies a URL for the service and an operation "listTest".

What other payload do i need to specify in order to actually execute the service request?

I tried to add a dummy payload to the event generator (as suggested in referenced post), and that doesnt make a difference.

When I execute the mule application, and monitor the "test auditor web service" (using wireshark) i see four requests go out for the wsdl, and i see that wsdl returned, but i dont actually see the listTest operation getting invoked.

My flow is:

   <http:connector name="HTTP_HTTPS" cookieSpec="netscape"
    validateConnections="true" sendBufferSize="0" receiveBufferSize="0"
    receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000"
    socketSoLinger="0" doc:name="HTTP\HTTPS" />
    <flow name="TestAuditorClient_CheckerFlow1" doc:name="TestAuditorClient_CheckerFlow1">
    <quartz:outbound-endpoint jobName="GetTestList"
        repeatInterval="10000" responseTimeout="10000" doc:name="Quartz">
        <quartz:event-generator-job jobGroupName="GetTestList" />
    </quartz:outbound-endpoint>
    <cxf:jaxws-client operation="listTest"
        clientClass="server.TestService_Service" port="TestServicePort"
        wsdlLocation="http://192.168.66.7:8080/TestAuditorWebApp/TestService?wsdl"
        doc:name="SOAPY" />
    <outbound-endpoint
        address="http://192.168.66.7:8080/TestAuditorWebApp/TestService"
        doc:name="HTTP" />
    <logger message="Received HTTP Response #[payload]" level="INFO"
        doc:name="Logger" />
    <!-- <outbound-endpoint exchange-pattern="request-response" address="http://192.168.66.17:8080/TestAuditorWebApp/TestService" 
        doc:name="HTTP"/> -->
    <file:outbound-endpoint path="C:\tmp"
        outputPattern="#[function:datestamp:dd-MM-yy]_#[function:systime].txt"
        responseTimeout="10000" doc:name="Output File" />
</flow>

I am not only new to mule, but as well to stack overflow. So if there was a better way for me to ask a related question, please advise and excuse.

Thanks in advance.

Was it helpful?

Solution

Instead of Quartz, you can use a poll message processor to generate the instances of ListTest you need.

Assuming this class FQDN is server.TestService.ListTest (you didn't tell), the following should work:

<flow name="TestAuditorClient_CheckerFlow1">
  <poll frequency="10000">
    <set-payload value="#[lt=new server.TestService.ListTest(); lt.aField='aValue'; lt]" />
  </poll>
...

Notice how you can set values on the POJO directly from the expression that creates it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top