我在春天DSL骆驼背景下面bean定义OSGi容器(JBoss的保险丝):如何使用骆驼米娜hl7codec在
<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&codec=#hl7codec" id="CMHL7ReceiverTrinFeed"/>
<to uri="direct:process"/>
</route>
当我将骆驼上下文作为本地上下文运行时,即在Eclipse Fuse IDE中,一切正常。连接在端口19191打开,我很高兴地接收来自发送系统的HL7 MLLP消息。然而,当我在JBoss保险丝Karaf的本地实例运行包,我得到以下运行时异常:
JBossFuse:karaf @根>异常在线程“SpringOsgiExtenderThread-2” org.apache.camel.RuntimeCamelException :org.apache.camel.FailedToCreateRouteException:无法创建路由输入:Route [[来自[mina2:tcp://0.0.0.0:19191?sync = true & codec =#hl7co ...因为无法解析端点: mina2:// tcp://0.0.0.0:19191?codec =%23hl7codec & sync = true由于:无法找到合适的setter属性:codec,因为没有相同类型的setter方法:java.lang .String和类型转换可能:没有可用类型转换器从类型:java.lang.String转换为所需类型:org.apache.mina.filter.codec.ProtocolCodecFactory,值为#hl7codec
这是我从克劳斯·易卜生的无价的“骆驼在行动”一书中得到的理解,即在OSGi环境中,如果服务没有在OSGi服务注册表中被命名,那么Camel将回退到默认的ApplicationContextRegistry。我不知道这是否与此有关,或者是否有其他问题。我不知道为什么适合的属性设置器:编解码器可以在一个运行时环境中找到,而不是另一个。该软件包安装正常,所以我认为我已经注意到所有依赖关系,但启动该软件包会抛出此异常。
感谢您的任何建议和帮助。如果有必要,我很乐意提供更多信息。使用JBoss Fuse(6.0.0.redhat-056),JDK 1.7.0_45
很怪。您的示例在配备了骆驼春天,骆驼核心,骆驼hl7和骆驼mina2功能的香草卡拉夫3.0中部署得很好。必须是具有特定版本/分布的东西。 –