如何在mule中手动抛出Soap错误

如何在mule中手动抛出Soap错误,soap,cxf,mule,Soap,Cxf,Mule,我面临的情况是,我们不能使用模式来验证传入的请求(基本上,模式是存在的,但它接受请求中的任何字符串,wsdl设计人员有自己的理由这样做,以接受来自不同来源的请求和灵活性)。但是当收到请求时,我验证请求包装器的子元素是否符合我们的预期(使用XPath)。现在,如果子元素不是预期的,我想用Client代码抛出Soap Fault,可能包含错误消息,即模式验证失败,请求不包含有效元素 我正在使用Mule 3.3并在元素中执行XPath验证,我想在块中抛出异常 是否有办法在mule flow和中手动抛出

我面临的情况是,我们不能使用模式来验证传入的请求(基本上,模式是存在的,但它接受请求中的任何字符串,wsdl设计人员有自己的理由这样做,以接受来自不同来源的请求和灵活性)。但是当收到请求时,我验证请求包装器的子元素是否符合我们的预期(使用XPath)。现在,如果子元素不是预期的,我想用
Client
代码抛出
Soap Fault
,可能包含错误消息,即模式验证失败,请求不包含有效元素

我正在使用Mule 3.3并在
元素中执行
XPath
验证,我想在
块中抛出异常

  • 是否有办法在mule flow和中手动抛出
    Soap错误
  • 如何添加自定义错误字符串。由于我没有使用
    schemaValidation
    属性,我不确定一个
    outInterceptor
    是否能解决这个问题
  • 这是我的流程的一部分

    <http:inbound-endpoint address="${service.address}" exchange-pattern="request-response">
      <cxf:proxy-service wsdlLocation="classpath:service.wsdl" namespace="http://company.com/services/service" service="CompanyService" />
    </http:inbound-endpoint>
    <choice>
      <when>.....</when>
      <otherwise><!-- Here I want to throw Soap Fault ---></otherwise>
    </choice>
    <catch-exception-strategy>
      <flow-ref name="generateErrorResponse" />
    </catch-exception-strategy>
    
    
    .....
    
    由于您使用的是
    cxf:proxy服务
    ,因此您可以完全控制响应。例如,如果在
    块中添加以下内容,则可以创建所需的任何SOAP错误:

    <expression-component><![CDATA[
     message.payload = '<soap:Fault xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
                     + '<faultcode>A code</faultcode><faultstring>A string</faultstring>'
                     + '</soap:Fault>';
    ]]></expression-component>
    
    
    
    谢谢你,大卫。你是个救援者。此技术是引发异常的解决方法吗?如果我使用像
    Velocity
    Freemarker
    这样的模板来做出响应,这会是同样的事情吗?这种技术可以让你完全控制错误代码和字符串:如果你抛出异常,你将只能控制错误字符串。是的,您可以使用任何技术为
    cxf:proxy service
    生成响应。如果抛出异常,您将只能控制错误字符串。我如何在mule flow中做到这一点而不编写自定义java组件?