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

标签 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@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/

相关文章:

java - 如何将 @RestController 中的请求主体转换为抽象值列表?

Java swing - 在 JPanel 上动态显示多个图像

java - 在 Spring 中销毁的 Session 上调用 Listener 类中的服务层函数

java - 如何抑制警告 EJB THREE-1337 :do not get webservice context property

java - 动态 JNLP 生成和 Excel 调用

java - 如何设置udp广播的源地址?

mysql - 如何使用 hibernate 设置字符串列的最大可能长度

java - Thymeleaf:如何使用条件来动态添加/删除 CSS 类

java - Jenkins CI 作业工作区自定义更改

java - Linux 覆盖 Java 资源文件