java - Apache Camel - Spring DSL - 将字符串参数传递给 bean 方法

标签 java spring apache-camel

在 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/

相关文章:

java - 我可以组合 SWT GridLayout 和 FillLayout 吗

java - 如何从 Maven 存储库中的 jar 中删除版本信息

java - STS 3.7.0 在启动时崩溃,Windows 7,64 位

java - Camel JMS 更新 JPA 实体

游戏循环的 Java TimerTick 事件

java - 使用 Mockito 监视对象

java - 如何在 Spring boot 中使用 JPA 中的 Criteria?

java - Spring Controller 没有被调用以获取预期的 URL

elasticsearch - elasticsearch和 Camel 整合

java - 您能否在 Java 嵌入式代理中以编程方式更改队列的 "dead letter"处理?