在 Camel 2.10.1 上,以下内容有效:
<camel:bean ref="profilingBean" method="addProfilingContext('TEST')"/>
相关方法采用字符串参数
迁移到 2.10.6 ,这不再起作用,它尝试将 TEST 作为另一个类调用。我尝试过用 ${} 进行包装,尝试使用“& quot;”的奇异组合等等...
我发现的唯一解决方案是使用常量语言将值放入 header 中,然后使用 simple 调用 header 。显然,这不是很干净......
您有什么想法如何做到这一点吗?
干杯
最佳答案
该行为/错误在 Camel 2.16
以及最新的 2.18.2
中仍然存在。
对于通过 Spring DSL 传递给 bean 的每个字符串常量,都会抛出 java.lang.ClassNotFoundException
。
通过将org.apache.camel.util.ObjectHelper
的记录器设置为TRACE
,它会变得更加明显。
这种驼峰行为还会对性能产生严重的负面影响,因为 ClassLoader
方法 (java.lang.ClassLoader.loadClass
) 是针对给定参数名称进行同步的。
我写了一个小演示来展示这一点:https://github.com/groundhog2k/camel-dsl-bean-bug
关于java - Apache Camel - Spring DSL - 将字符串参数传递给 bean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788241/