Camel 2.20.2:从 SoapMessage 使用简单表达式语言调用 get() 抛出 ParameterBin



从 camel 2.17.03 更新到 2.20.2 后,如果我尝试从 StringMapImpl/SoapMessage 调用 get 方法,我会得到异常

例如,此代码段在 2.17.03 下工作正常:

<setBody>
<simple>
${header.CamelCxfMessage.get("http.base.path")}
</simple>
</setBody>

但是在 2.20.2 下,我得到以下异常:

意外异常:无法调用方法:get("http.base.path") 空,原因是: org.apache.camel.component.bean.ParameterBindingException: Error 在方法上的参数绑定期间:公共 java.lang.Object org.apache.cxf.message.StringMapImpl.get(java.lang.Class) at parameter #0 与类型: 类 java.lang.类与值类型: 类 java.lang.字符串和值: http.base.path

org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed 调用方法:get("http.base.path") 由于: org.apache.camel.component.bean.ParameterBindingException: Error 在方法上的参数绑定期间:公共 java.lang.Object org.apache.cxf.message.StringMapImpl.get(java.lang.Class) at parameter #0 与类型: 类 java.lang.类与值类型: 类 java.lang.字符串和值: http.base.path

这是一个错误还是在简单的语言语法中更改了某些内容?

Apache CXF 类StringMapImpl[1] 具有使用Class类型的get方法,并且您的 Camel 路由在字符串值中传递。所以这从一开始就是错误的。

[1] - https://github.com/apache/cxf/blob/master/core/src/main/java/org/apache/cxf/message/StringMapImpl.java

最新更新