我在春天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中部署得很好。必須是具有特定版本/分佈的東西。 –