2016-10-14 10 views
0

Apache Camelでは、RESTサービスを公開し、SOAPサービスを呼び出すためにその入力を受け取り、SOAP応答をJSONにマーシャリングしたいと思います。私RouteBuilderはおおよそ次のようになります。Apache camelはInputStreamCacheからJSONにマーシャリングできません

rest("/api") 
.get("/client/{id}") 
.to("direct:getClient"); 

from("direct:getClient") 
.log(LoggingLevel.INFO, "Getting client with id ${id}") 
.process(new GetClientProcessor()) 
.marshal().jaxb() 
.to("spring-ws:http://localhost:9000/searchClient?soapAction=search") 
.process(new ClientProcessor()) 
.marshal().json(JsonLibrary.Jackson); 

JSONに結果を整列化しているときに、私は次のエラーを取得する:なぜこれが起こっている私は、デフォルトでは、ストリームのキャッシングをオンにしているよう

com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.apache.camel.converter.stream.InputStreamCache and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:275) 
    at com.fasterxml.jackson.databind.SerializerProvider.mappingException(SerializerProvider.java:1110) 
    at com.fasterxml.jackson.databind.SerializerProvider.reportMappingProblem(SerializerProvider.java:1135) 
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:69) 
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:32) 
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:292) 
    ... 

私は、知っています。しかし、私はこのを修正する方法を知らずに、ストリームキャッシングをオフにしません。

私はCamelのドキュメント、メーリングリスト、フォーラムで検索しましたが、有用な情報は見つかりませんでした。

答えて

0

私はついにそれを解決しました。問題は、グローバル残りの構成むしろ、説明したルートとは何の関係もありませんでした:

RestConfiguration restConfiguration = new RestConfiguration(); 
restConfiguration.setComponent("servlet"); 
restConfiguration.setBindingMode(RestConfiguration.RestBindingMode.json); 
restConfiguration.setHost("localhost"); 
restConfiguration.setPort(serverPort); 

camelContext.setRestConfiguration(restConfiguration); 

3行目は、結合モードを設定し、私もJSONとにマッピングしたいとき、私は明示的状態として不要であるとされ私が使用するフレームワーク。私はこの行を削除した後、すべての魅力のように動作します。

これは私の問題がどのように、なぜ解決されたのか正確にはわかりませんが、私はそれができてうれしいです;)

関連する問題