我正在寻找一种在运行时在mule flow中为spring属性分配异常消息的方法(Mule 3.3.0)
这就是我的代码片段的样子:
<catch-exception-strategy>
<logger message="----->Exception is #[exception.causeException]"
level="INFO" />
<custom-transformer
class="com.company.transformer.VelocityMessageTransformer">
<spring:property name="velocityEngine" ref="velocityEngine" />
<spring:property name="templateName" value="soap11Fault.vm" />
<spring:property name="beanClass">
<spring:bean parent="abstractSoap11ClientFault">
<spring:property name="faultString" value="Invalid Request" />
<spring:property name="detail" value="${exception.causeException}" />
</spring:bean>
</spring:property>
</custom-transformer>
</catch-exception-strategy>
我想在此处将异常原因分配给detail
属性:
<spring:property name="detail" value="${exception.causeException}" />
但是Spring正在寻找属性文件中的这个属性。我也尝试过这样做
<spring:property name="detail" value="${#[exception.causeException]}" /> but doesn't work.
有没有办法在运行时将Mule表达式传递给Spring属性?
答案 0 :(得分:2)
在应用程序初始化期间设置属性:在运行时评估要传递的值,因此无法工作。
您需要做的是com.company.transformer.VelocityMessageTransformer
延长org.mule.transformer.AbstractMessageTransformer
。然后,您必须覆盖transformMessage(MuleMessage message, String outputEncoding)
,这将使您可以访问当前消息及其关联的异常负载。异常有效负载是您使用#[exception]
表达式获得的。