Osgi 依赖项注入的Camel类型转换器实例化失败

Osgi 依赖项注入的Camel类型转换器实例化失败,osgi,apache-camel,blueprint-osgi,Osgi,Apache Camel,Blueprint Osgi,我有一个TypeConverter类,它设置在blueprint.xml文件中,通过构造函数注入依赖项。我可以验证该类是在将OSGI捆绑包部署到FuseESB时创建的 我在camel上下文中使用convertBodyTo元素应用类型转换器 <convertBodyTo type="com.example.RegisterRequest" /> 如果我添加了一个noarg构造函数,那么就创建了转换器——但显然没有它的依赖关系 类型转换器的Camel文档声明 鼓励使用静态方法来减少缓存

我有一个TypeConverter类,它设置在blueprint.xml文件中,通过构造函数注入依赖项。我可以验证该类是在将OSGI捆绑包部署到FuseESB时创建的

我在camel上下文中使用
convertBodyTo
元素应用类型转换器

<convertBodyTo type="com.example.RegisterRequest" />
如果我添加了一个noarg构造函数,那么就创建了转换器——但显然没有它的依赖关系

类型转换器的Camel文档声明

鼓励使用静态方法来减少缓存,但不鼓励使用实例方法 很好,特别是如果您想允许可选的依赖项 用于定制转换器的注入

Caused by: java.lang.InstantiationException: com.example.RegisterRequestConverter
    at java.lang.Class.newInstance0(Class.java:359)[:1.7.0_21]
    at java.lang.Class.newInstance(Class.java:327)[:1.7.0_21]
    at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:1166) 

是否可以通过xml定义路由,并且仍然注入类型转换器依赖项?

否这是不可能的。类型转换器应为

  • 静态法
  • 没有参数公共构造函数
不使用国际奥委会等


如果需要IoC等,则需要手动将实例注册到Camel TypeConverterRegistry中。这可能有点麻烦。

不,这是不可能的。类型转换器应为

  • 静态法
  • 没有参数公共构造函数
不使用国际奥委会等


如果需要IoC等,则需要手动将实例注册到Camel TypeConverterRegistry中。这可能有点麻烦。

我是否正确地假设我必须用Java而不是通过blueprint xml来完成这项工作?我是否正确地假设我必须用Java而不是通过blueprint xml来完成这项工作?