Spring Integration Header Enricher Null检查

时间:2016-12-30 05:42:59

标签: spring-integration

我的配置中有以下标题更丰富。

<int:header-enricher input-channel="" output-channel="" id="" >
    <int:header name="OrderNo" expression="@gateway.exchange(#root).payload"/> 
</int:header-enricher>

当有效负载为空时,我收到异常

java.lang.IllegalArgumentException: payload must not be null
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.integration.support.MessageBuilder.<init>(MessageBuilder.java:56) ~[spring-integration-core-4.0.5.RELEASE.jar:na]

如果有效负载为空,是否有办法从网关检查空有效负载并在标头中设置一些虚拟值?

<int:gateway id="gateway" default-request-channel="defReqChannel" />
<int-jdbc:stored-proc-outbound-gateway request-channel="defReqChannel" data-source="dataSourceDD" expect-single-result="true" is-function="false" stored-procedure-name="SP_GET_CODE">
        <int-jdbc:sql-parameter-definition name="param1" direction="IN" />
        <int-jdbc:sql-parameter-definition name="param2" direction="IN" />
        <int-jdbc:sql-parameter-definition name="param3" direction="INOUT" />    
        <int-jdbc:sql-parameter-definition name="param4" direction="IN" /> 

        <int-jdbc:parameter name="param1" expression="exp1" />
        <int-jdbc:parameter name="param2" expression="exp2" />
        <int-jdbc:parameter name="param3" value="0"/>  
        <int-jdbc:parameter name="param4" value="0"/>
</int-jdbc:stored-proc-outbound-gateway>

我正在调用的存储过程可以返回null值。 (参数3)。失败发生在那些场景中

1 个答案:

答案 0 :(得分:0)

请分享更多StackTrace。 payload中的null 无法Message。您显示的代码完全由Framework控制。

我认为当您执行MessageBuilder.withPayload(null)之类的操作时会有代码。

但完全不是你演示的配置的情况。

<强>更新

这真是一个错误:https://jira.spring.io/browse/INT-4202

解决方法就像不使用expect-single-result="true"并手动从结果Map下游提取目标值。