2014-02-27 87 views
2

我在春天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&amp;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

+0

很怪。您的示例在配備了駱駝春天,駱駝核心,駱駝hl7和駱駝mina2功能的香草卡拉夫3.0中部署得很好。必須是具有特定版本/分佈的東西。 –

回答

0

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

您可以從HL7文檔看到米娜組件使用其中:http://camel.apache.org/hl7(參見頁面頂部的最後一顆子彈)

+0

謝謝克勞斯!用米娜而不是米娜2做的伎倆!如果我們最終在未來某個時候使用Camel 2.11.x,我一定會記住這一點。 – Cormedan