从 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