2016-06-22 13 views
1

システムを通って来る情報をデバッグ中のある時点で、私はXML形式のデータをシステムに入力することを余儀なくされました。これを行うために、XMLコンテンツを記録するための行を追加し、XMLコンテンツをログに記録しました。キャメルログは身体の内容に影響を及ぼしますか?

この時点で、XMLコンテンツをXMLオブジェクトにマーシャリングする際に問題が発生し始めました。

org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.component.netty4.http.NettyChannelBufferStreamCache to the required type: com.company.product.customer.generated.XML with value org.apache.camel.

私はいくつかの新しい問題がシステムで発生したと考え、さらにはログフィールドを導入することは、いくつかのトラブルを引き起こす可能性があることを考えていませんでした。最後に何時間もの戦いの後、私はログラインを削除することにしました。そして、それは再びシームレスに動作するようになりました。

ログタグはボディメッセージに影響しますか?それはなぜ起こるのでしょうか?

<post uri="/requestXml" 
    type="com.company.product.customer.generated.XML" 
    outType="java.lang.String"> 
    <description>Request</description> 

    <route> 
     <to uri="bean:authenticationService?method=checkUser"/> 
     <!--log loggingLevel="INFO" message="Incomming XML ${body}"/--> 
     <to uri="bean:messageTranslator?method=XMLRequestToConfiguration"/> 

答えて

7

これは、ストリームを1回だけ読み取ることができるという事実に関連しています。

(のStreamSource、のInputStreamおよびReaderなど)、ストリームタイプが 一般的にパフォーマンス上の理由から、メッセージングに使用されていますが、彼らはまた、 重大な欠点を持っている:彼らは一度だけ読み込むことができます。 メッセージコンテンツを複数回使用できるようにするには、ストリームを にキャッシュする必要があります。

あなたは、このような文脈レベルでストリームのキャッシュを有効にする必要があります。

<camelContext streamCache="true"> 

(例えば、ルートレベルでそれを有効にする)可能な多くのオプションがあります。利用可能なオプションはすべてこちらをご覧ください。 http://camel.apache.org/stream-caching.html

+0

いいです。解決策になることができます。 +1 –

+0

私は解決策からそれほど遠かったわけではありませんでした。なぜなら、ある時点で私はstreamCacheを追加しましたが、それをfalseに設定し、後で削除しました。 :( –

関連する問題