Java apachecamel中的多类型转换器

Java apachecamel中的多类型转换器,java,apache-camel,typeconverter,Java,Apache Camel,Typeconverter,我的jar中有一个HashMap到String类型转换器,比如a.jar,但另一个jar中也有一个类似的转换器,B.jar(由同一服务器中的第三方公开),但我总是希望在调用时在我的camel路由中调用我的类型转换器(存在于a.jar中) String body=message.getBody(String.class); 知道如何做到这一点吗?如果类加载器在同一个camel上下文中加载了两个jar,那么这里很有可能出错 你可以解决这个问题 首先,您可以只使用bean引用特定类型转换器(而不是g

我的jar中有一个HashMap到String类型转换器,比如a.jar,但另一个jar中也有一个类似的转换器,B.jar(由同一服务器中的第三方公开),但我总是希望在调用时在我的camel路由中调用我的类型转换器(存在于a.jar中)

String body=message.getBody(String.class);

知道如何做到这一点吗?

如果类加载器在同一个camel上下文中加载了两个jar,那么这里很有可能出错

你可以解决这个问题

首先,您可以只使用bean引用特定类型转换器(而不是
getBody(String.class)


或者第二,您可以在运行时侵入
TypeConverterRegistry
,看看是否可以删除不需要的,请参阅:
context.getTypeConverterRegistry()
您可以创建一个只有字符串元素的包装类。让我们称之为包装器字符串。 定义此包装类的toString()方法以仅返回String元素

将转换器从Hashmap修改为String,再从Hashmap修改为WrapperString


在转换逻辑中,您只需编写自己的逻辑,将hashmap转换为String,然后创建WrapperString类的实例,并将转换后的值分配给该对象。

默认情况下,您无法决定jar顺序,可以查看: