定时Mule Web服务客户端流
我在论坛上搜索了这个问题的答案。我发现了一个几乎相同的问题,尽管答案让我仍然感到疑惑 这里发现了几乎相同的帖子: 这张海报很好地说明了我面临的问题 我也是骡子的新手,我也在尝试做同样的事情。我没有意识到我需要有效载荷,因为我认为操作规范本质上就是有效载荷 请注意,我有一个包含cxf:jaxws-client的流,该客户机指定了服务的URL和操作“listTest” 为了实际执行服务请求,我需要指定哪些其他有效负载 我试图向事件生成器添加一个虚拟负载(如参考文章中所建议的),但这并没有什么区别 当我执行mule应用程序并监视“testauditorweb服务”(使用wireshark)时,我看到wsdl发出了四个请求,我看到wsdl返回了,但实际上我没有看到调用listTest操作 我的流程是:定时Mule Web服务客户端流,mule,mule-studio,Mule,Mule Studio,我在论坛上搜索了这个问题的答案。我发现了一个几乎相同的问题,尽管答案让我仍然感到疑惑 这里发现了几乎相同的帖子: 这张海报很好地说明了我面临的问题 我也是骡子的新手,我也在尝试做同样的事情。我没有意识到我需要有效载荷,因为我认为操作规范本质上就是有效载荷 请注意,我有一个包含cxf:jaxws-client的流,该客户机指定了服务的URL和操作“listTest” 为了实际执行服务请求,我需要指定哪些其他有效负载 我试图向事件生成器添加一个虚拟负载(如参考文章中所建议的),但这并没有什么区别
<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>
我不仅是骡子新手,而且对堆栈溢出也是新手。所以,如果有更好的方式让我问一个相关的问题,请建议和原谅
提前感谢。您可以使用
轮询
消息处理器来生成所需的列表测试的实例,而不是石英
假设此类FQDN是server.TestService.ListTest
(您没有告诉),则以下操作应该可以工作:
<flow name="TestAuditorClient_CheckerFlow1">
<poll frequency="10000">
<set-payload value="#[lt=new server.TestService.ListTest(); lt.aField='aValue'; lt]" />
</poll>
...
...
请注意如何直接从创建POJO的表达式中设置POJO上的值。服务器上的listTest
方法使用了哪些对象参数。TestService\u Service
take?公共类TestService\u Service扩展了哪些对象参数Service@WebResult(name=“listTestResponse”,targetNamespace=“”,partName=“parameters”)@Action(input=“”,output=“)@WebMethod public ListTestResponse listTest(@WebParam(partName=“parameters”,name=“listTest”,targetNamespace=“)listTest参数);仍在学习使用此注释功能:listTest不应接受任何参数。当我将quartz计时器和cxf组件替换为包含以下数据的文件输入终结点时,web服务具有无参数listTest签名。一切正常:谢谢,我正在尝试您的建议:表达式“lt=new server.TestService.ListTest();lt.aField='aValue';lt”的执行失败。(org.mule.api.expression.ExpressionRuntimeException).Message payload的类型为:StringWell,这是一个示例。您没有指定字段ListTest
支持。您没有指定其FQDN。因此,您必须调整表达式以使其与实际代码一起工作。耶。这起到了作用:现在您已经帮助我克服了这一问题。我确实感到,在fashion有点奇怪。修改流(例如,使用java组件)的替代方法是什么,可以让我通过新的server.ListTest()进入cxf组件?奇怪的是,我在mule网站上看到的cxf web服务客户端示例中没有一个与有效负载定义中的这一相当关键的元素相关。如果在POJO上没有设置任何字段,您只需使用
。您可以使用自定义组件或消息处理器来完成此操作,而不是使用MEL表达式,但是我不明白你为什么觉得在一个完全适合这份工作的地方使用MEL很奇怪。