Camel 2.20.2:使用SoapMessage中的简单表达式语言调用get()抛出一个ParameterBindingException

时间:2018-04-16 13:45:15

标签: apache-camel cxf

从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(&#34; http.base.path&#34;)   在null由于:   org.apache.camel.component.bean.ParameterBindingException:错误   在方法的参数绑定期间:public java.lang.Object   参数中的org.apache.cxf.message.StringMapImpl.get(java.lang.Class)   #0类型:类java.lang.Class,值类型:class java.lang.String和value:http.base.path

     

org.apache.camel.language.bean.RuntimeBeanExpressionException:失败   调用方法:get(&#34; http.base.path&#34;)在null由于:   org.apache.camel.component.bean.ParameterBindingException:错误   在方法的参数绑定期间:public java.lang.Object   参数中的org.apache.cxf.message.StringMapImpl.get(java.lang.Class)   #0类型:类java.lang.Class,值类型:class java.lang.String和value:http.base.path

这是一个Bug还是用简单的语言语法改变了一些东西?

1 个答案:

答案 0 :(得分:0)

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

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