如何在OSGi容器中使用Camel mina hl7codec(JBoss Fuse)

时间:2014-02-27 21:27:07

标签: java spring jboss osgi apache-camel

我在Spring DSL Camel上下文中定义了以下bean:

<bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec">
    <property name="charset" value="iso-8859-1" />
</bean> 

我在路线的起点使用这里:

<camelContext xmlns="http://camel.apache.org/schema/spring">
<!-- <dataFormats><camel:hl7/></dataFormats> -->
<route id="input">

    <!-- Here is the HL7 Receiver -->
    <from uri="mina2:tcp://0.0.0.0:19191?sync=true&amp;codec=#hl7codec" id="CMHL7ReceiverTrinFeed"/>
<to uri="direct:process"/>   
   </route> 

当我将Camel上下文作为本地上下文运行时,即在Eclipse Fuse IDE中,一切都很好。在端口19191打开连接,我很高兴收到来自发送系统的HL7 MLLP消息。但是,当我在JBoss Fuse Karaf的本地实例中运行bundle时,我得到以下运行时异常:

JBossFuse:karaf @根&GT;线程中的异常&#34; SpringOsgiExtenderThread-2&#34; org.apache.camel.RuntimeCamelException:org.apache.camel.FailedToCreateRouteException:无法创建路由输入:Route [[From [mina2:tcp://0.0.0.0:19191?sync = true&amp; codec =#hl7co ...因为无法解析端点:mina2:// tcp://0.0.0.0:19191?codec =%23hl7codec&amp; sync = true由于:找不到合适的属性setter:codec因为没有设置器类型相同的方法:java.lang.String或类型转换可能:没有类型转换器可用于从类型:java.lang.String转换为所需类型:org.apache.mina.filter.codec.ProtocolCodecFactory值为#hl7codec < / em>的

这是我对克劳斯易卜生的无价之宝&#34;骆驼在行动&#34;预计在OSGi环境中,如果服务未在OSGi服务注册表中命名,则Camel将回退到默认的ApplicationContextRegistry。我不知道这里是否相关或者其他地方是否存在问题。我不确定为什么合适的属性setter:codec可以在一个运行时环境中找到而不是另一个。该软件包安装正常,所以我认为我已经完成了所有依赖项,但启动软件包会抛出此异常。

感谢您的任何建议和帮助。如有必要,我很乐意提供更多信息。使用JBoss Fuse(6.0.0.redhat-056),JDK 1.7.0_45

1 个答案:

答案 0 :(得分:0)

JBoss Fuse 6.0附带Apache Camel 2.10.x.而camel-hl7组件正在该版本中使用Mina 1.x.所以你需要使用mina,而不是mina2。

你可以从hl7文档中看到使用哪个mina组件:http://camel.apache.org/hl7(参见页面顶部的最后一个子弹)