簡體   English   中英

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

[英]How do I use Camel mina hl7codec in an OSGi container (JBoss Fuse)

我在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的本地實例中運行包時,出現以下運行時異常:

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方法:java.lang.String也不可以進行類型轉換:沒有可用的類型轉換器將類型:java.lang.String轉換為所需的類型:org.apache.mina.filter .codec.ProtocolCodecFactory的值為#hl7codec

從克勞斯·易卜生(Claus Ibsen)的無價之寶“ Camel In Action”書中,我的理解是,如果OSGi服務注冊表中未命名服務,則在OSGi環境中,Camel將使用默認的ApplicationContextRegistry。 我不知道這與這里是否相關,或者其他地方是否存在問題。 我不確定為什么可以在一個運行時環境中找到合適的屬性設置器:編解碼器,而在另一個運行時環境中找不到。 該捆綁包安裝良好,因此我認為我已經照顧好所有依賴項,但是啟動捆綁包會引發此異常。

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

JBoss Fuse 6.0隨附於Apache Camel2.10.x。 camel-hl7組件在該版本中使用Mina1.x。 因此,您需要使用mina,而不是mina2。

您可以從hl7文檔中看到要使用的mina組件: http ://camel.apache.org/hl7(請參閱頁面頂部的最后一個項目符號)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM