当前位置: 首页 > 知识库问答 >
问题:

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

尹钱青
2023-03-14

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

我正在使用Mule3.3,并在 元素中执行XPath验证,我希望在 块中抛出异常。

  1. 有办法在mule流和
  2. 中手动抛出 SOAP Fault
  3. 如何添加自定义错误字符串。我不确定outinterceptor是否能解决这个问题,因为我没有使用 .
  4. schemavalidation属性

这是我的流程的一部分

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

共有1个答案

蔡理
2023-03-14

由于您使用的是cxf:proxy-service,因此可以完全控制响应。例如,如果在Othere块中添加以下内容,您将能够创建所需的任何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>
 类似资料:
  • 我正在开发一个Angular应用程序,其中我正在通过HTTP进行rest调用,如下所示: 基本上,我希望我的组件在我的订阅调用中得到响应&错误,即。 如果,如何抛出错误消息,以便在订阅回调的错误参数中访问它?

  • 目前,这就是我如何捕捉异常并设置有效负载的方法 但是,CXF SOAP组件设置实际响应对象的有效负载。而我想在SOAP错误中发送一个错误对象。我怎么能那样做? 默认异常策略发送带有错误消息的SOAP错误。最初,我的目的只是添加记录器,让缺省错误消息在SOAP错误中运行。我添加了Catch exception策略,但后来发现它不会发送SOAP错误。然后我使用回滚策略发送SOAP错误。但是,使用Mul

  • 本文向大家介绍在java中,程序员如何手动抛出异常呢?,包括了在java中,程序员如何手动抛出异常呢?的使用技巧和注意事项,需要的朋友参考一下 例外是程序执行期间发生的问题(运行时错误)。发生异常时,程序会突然终止,并且生成异常的行之后的代码将永远不会执行。 示例 输出结果 手动抛出异常 您可以使用throw 关键字显式引发用户定义的异常或预定义的异常。 用户定义和预定义的异常有两种类型,每种异常

  • rank ▲ ✰ vote url 69 352 48 520 url 手动抛出异常 我想故意制造一个错误,所以我可以转到excepy:语句 我怎么做? 不能在Pythonic了; raise Exception("I know python!") 想得到更多信息,看这里

  • 问题内容: 如何在Python中引发异常,以便以后可以通过except块将其捕获? 问题答案: 在你的消息中要具体,例如: 不要引发通用异常 避免提出泛型。要捕获它,你必须捕获将其子类化的所有其他更具体的异常。 问题1:隐藏错误 例如: 问题2:无法抓住 而且更具体的捕获不会捕获一般异常: 最佳做法:raise声明 而是使用在语义上适合你的的最特定的构造函数。 这也方便地允许将任意数量的参数传递给

  • 我有一个关于Mule 3.3.1 CE中Web服务的问题。我有一个Web服务,它公开了三个操作和一个实现这些操作类。这些操作可以返回结果(积极)或异常(AuthExeception,ValidateExeception,等等)。多亏了SOAP Mule组件,当我提出一个Java异常时,框架能够将Java异常编组在一个SOAP故障中,但是如果我想既返回一个SOAP故障给客户机,又用Mule中的异常策