Mule 3.4+;:为静态SOAP请求设置有效负载的最佳实践

Mule 3.4+;:为静态SOAP请求设置有效负载的最佳实践,mule,Mule,我对骡子还很陌生,所以这可能是个愚蠢的问题。我想从Mule调用远程axis2 SOAP服务,为此我将使用SOAP组件。我正在努力解决的是有效负载数量的正确模式。下面是一个非常简单的有效负载示例 <oper:CreateTask xmlns:oper="http://api.abc.com/workflow/operationtypes"> <workType> <Name>Reminder Task</Name>

我对骡子还很陌生,所以这可能是个愚蠢的问题。我想从Mule调用远程axis2 SOAP服务,为此我将使用SOAP组件。我正在努力解决的是有效负载数量的正确模式。下面是一个非常简单的有效负载示例

  <oper:CreateTask xmlns:oper="http://api.abc.com/workflow/operationtypes">
     <workType>
        <Name>Reminder Task</Name>
     </workType>
     <activitySubject>
        <GenericSubject>Richard Fanning</GenericSubject>
     </activitySubject>
     <description>This is a Mule generated Reminder Task</description>
  </oper:CreateTask>

提醒任务
问题:
  • 我不希望为请求生成客户端存根类,但也许我应该使用CXF来定义服务类。这有什么好处
  • 是否有其他首选的有效负载填充方法。在我的用例中,这个(子)流将从路由器调用,因此我不会传递任何会改变消息的相关信息

    旁白:也许对于工作类型名称“提醒任务”,我应该提取到mule-app.properties并使用XSLT填充到最终请求中

    谢谢


    Rich

    要在流中设置有效负载,可以使用以下任一方法

  • 编写一个将XML请求作为字符串的组件(JavaBean),然后将该字符串作为组件的返回。此组件应该是流中的第一个消息处理器

  • 编写一个组件(JavaBean),将文件中的XML请求读入字符串,然后将该字符串作为组件的返回。此组件应该是流中的第一个消息处理器

  • 使用入站端点(文件或JMS)作为流的入口点。这些入站数据可以从指定的路径读取。这样,您的输入可以是动态的。您可以多次执行不同请求的流,而无需每次启动Mule服务器

  • 以下链接中提供了有关Mule文件和JMS端点的更多信息

    接下来,对于工作类型名称的XSLT填充,可以使用XML模块中的Mule XSLT Transformer。更多关于这方面的信息,请访问以下链接


    希望这有帮助。

    我认为最合理的解决方案是使用文件传输。您好,谢谢您的回复。我将按照建议使用文件连接器,并让您知道它是如何工作的。@Richard Fanning,您使用这个案例的更好解决方案是什么?
    <flow name="createWorkflowTask" doc:name="createWorkflowTask">
        <set-payload value="&lt;oper:CreateTask xmlns:oper=&quot;http://api.abc.com/workflow/operationtypes&quot;&gt;&lt;workType&gt;&lt;Name&gt;Reminder Task&lt;/Name&gt;&lt;/workType&gt;&lt;activitySubject&gt;&lt;GenericSubject&gt;Richard Fanning&lt;/GenericSubject&gt;&lt;/activitySubject&gt;&lt;description&gt;This is a Mule generated Reminder Task&lt;/description&gt;&lt;/oper:CreateTask&gt;" doc:name="Set Payload"/>
        <cxf:proxy-client doc:name="SOAP" enableMuleSoapHeaders="true" payload="body"/>
        <http:outbound-endpoint exchange-pattern="one-way" method="POST" address="http://localhost:6081/workflow/services/ActivityServices" doc:name="HTTP"/>
    </flow>