spring - 如何将 Mule 表达式传递给 spring 属性

标签 spring mule

我正在寻找一种在 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/

相关文章:

java - HTTP 状态 500 - 权限被拒绝

java - 如何在 Spring 输入标签中隐藏默认绑定(bind)值?

java - 使用 XML 中的参数实例化 Java Spring Bean

java - Mule 表达语言和运算符

exception - 如何捕获 mule 流中的任何异常

java - 使用 Anypoint Studio 配置 Maven

java - Spring 。如何将一些变量传递给服务激活器中的方法?

java - 违反约束时静默失败

java - 维护 Mule 消息

java - Mule 嵌入 : use the container's own jndiInitialFactory