Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将mule变量数据或mule属性(如有效负载)复制到SpringBean属性_Java_Spring_Mule - Fatal编程技术网

Java 将mule变量数据或mule属性(如有效负载)复制到SpringBean属性

Java 将mule变量数据或mule属性(如有效负载)复制到SpringBean属性,java,spring,mule,Java,Spring,Mule,我有一个mule流,其中我有一个变量,有效载荷复制到该变量,如下所示: <set-variable variableName="originalPayload" value="#[payload]" doc:name="Variable" doc:description="Variable having copy of original payload present in soap request."/> 在此之后,有一个拦截器来验证soap消息的头,如果验证失败,那么我需要

我有一个mule流,其中我有一个变量,有效载荷复制到该变量,如下所示:

<set-variable variableName="originalPayload" value="#[payload]" doc:name="Variable" doc:description="Variable having copy of original payload present in soap request."/>

在此之后,有一个拦截器来验证soap消息的头,如果验证失败,那么我需要拦截器中的上述变量数据来准备自定义错误消息。下面是我在上面所做的Soap代理配置:

<cxf:proxy-service port="XXX" namespace="XXX" service="XXX" payload="body" wsdlLocation="XXXX" doc:name="SOAP" doc:description="Soap proxy intercept soap request and apply header validation. Authentication and custom header will be validated for presence, content, and structure.">
    <cxf:inInterceptors>
        <spring:bean id="XXXX" parent="XXXX">
            <spring:property name="sourceApplication" value="${sourceApplication}"/>
            <spring:property name="originalMessage" value="#[originalPayload]"/>
        </spring:bean>
    </cxf:inInterceptors>
</cxf:proxy-service>

在上面,我需要Springbean的originalMessage属性中originalPayload变量的值。如果我能直接复制#[payload],它也能工作。spring属性中的上述表达式无效,因此不起作用

请建议如何做这个

实现Callable可以是一种选择,但我不想更改已经编写的代码,除非上面没有解决方案

我试图寻找解决这个问题的办法,但什么也找不到

谢谢
Harish Kumar

您的解决方案的问题是,spring属性是在配置时设置的,而
#[payload]
表达式只能在运行时解决

但是,在拦截器中,您可以通过执行以下操作从CXF消息中检索原始有效负载:

MuleEvent event = (MuleEvent) message.getExchange().get(CxfConstants.MULE_EVENT);
Collection<Attachment> a = event.getMessage().getInvocationProperty("originalPayload");
MuleEvent事件=(MuleEvent)message.getExchange().get(CxfConstants.MULE_事件);

以收集为例

不确定它是否有效,但您是否尝试过:否则,我认为它应该是value=“#[flowVars.originalPayload]”而不是value=“#[originalPayload]”@dunnless我尝试了flowVars方法,但没有成功。不过还是要感谢你提出的解决方案。