我正在寻找一种在 mule 流(Mule 3.3.0)运行时将异常消息分配给 spring 属性的方法
这就是我的代码片段的样子:
<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 属性?
最佳答案
属性是在应用程序初始化期间设置的:您要传递的值是在运行时计算的,因此这是行不通的。
您需要做的是使com.company.transformer.VelocityMessageTransformer
扩展org.mule.transformer.AbstractMessageTransformer
。然后,您必须重写transformMessage(MuleMessage message, String outputEncoding),这将使您能够访问当前消息及其关联的异常负载。异常有效负载是通过 #[exception]
表达式获得的内容。
关于spring - 如何将 Mule 表达式传递给 spring 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737185/