gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:52:27 25 4
gpt4 key购买 nike

我在我的 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@root> 线程“SpringOsgiExtenderThread-2”中的异常 org.apache.camel.RuntimeCamelException:org.apache.camel.FailedToCreateRouteException:无法创建路由输入:Route[[From[mina2:tcp ://0.0.0.0:19191?sync=true&codec=#hl7co... 因为无法解析端点:mina2://tcp://0.0.0.0:19191?codec=%23hl7codec&sync=true 由于:无法为属性找到合适的 setter :编解码器,因为没有具有相同类型的 setter 方法:java.lang.String 也没有类型转换可能:没有类型转换器可用于从类型:java.lang.String 转换为所需的类型:org .apache.mina.filter.codec.ProtocolCodecFactory 值为 #hl7codec

我从 Claus Ibsen 的无价之宝“Camel In Action”一书中了解到,在 OSGi 环境中,如果服务未在 OSGi 服务注册表中命名,Camel 将回退到默认的 ApplicationContextRegistry。我不知道这在这里是否相关,或者其他地方是否存在问题。我不确定为什么可以在一个运行时环境中而不是另一个运行时环境中找到 property: codec 的合适 setter 。该 bundle 安装正常,所以我认为我已处理好所有依赖项,但启动该 bundle 会引发此异常。

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

最佳答案

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

您可以从 hl7 文档中看到使用哪个 mina 组件:http://camel.apache.org/hl7 (请参阅页面顶部的最后一个项目符号)

关于java - 我如何在 OSGi 容器(JBoss Fuse)中使用 Camel mina hl7codec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22080807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com