I would like to disable the feature in the DefaultHttpBinding because of
existing code. Our code already reads the stream content into a file, so we
do not require this feature from the Http binding. And obviously we don't
want to write the data twice. This is why I was asking if this is the
intended behavior for 2.3. In that case we need to implement an HTTP binding
that bypasses that feature. 
To be honest, I think that the Jetty component should allow me to get access
to the pure input stream that Jetty provides. Any additional streaming into
a file is a nice feature but should be optional. But this is up to you guys.
I simply need to make sure that we can upgrade to 2.3 as soon as it is
released.


willem.jiang wrote:
> 
> Yes, from this point, you can't disable the Stream Caching.
> But there is a difference between the Stream Caching and current Http 
> binding change.
> If you don't enable the Stream Caching, there is no interceptor will  be 
> used to reset the Stream for you before the message is routing to the 
> next endpoint.
> 
> If there are large Post message body, the Stream Caching will help you 
> avoid the OutOfMessage error as it can dump the message into a file.
> I don't know why are your going to disable it.
> 
> Willem
> 
> _Jens wrote:
>> Hi Willem,
>> 
>> thanks for your quick reply. The issue is that I cannot disable
>> streamCaching in 2.3-SNAPSHOT anymore. This is what was changed in
>> DefaultHttpBinding.parseBody:
>> 
>> Before:
>> 
>>             // otherwise use input stream
>>             return HttpConverter.toInputStream(request); 
>> 
>> Now:
>>             // otherwise use input stream and we need to cache it first
>>             InputStream is = HttpConverter.toInputStream(request,
>> httpMessage.getExchange());
>>             if (is == null) {
>>                 return is;
>>             }
>>             // convert the input stream to StreamCache
>>             try {
>>                 CachedOutputStream cos = new
>> CachedOutputStream(httpMessage.getExchange());
>>                 IOHelper.copy(is, cos);
>>                 return cos.getStreamCache();
>>             } finally {
>>                 is.close();
>>             }
>> 
>> This means, the CachedOutputStream is always used. I have tried to
>> disable
>> this on the camelContext. But obviously the above code does not check
>> this
>> option in the camelContext. So it is not possible anymore.
>> 
>> 
>> 
>> 
>> willem.jiang wrote:
>>> These changes just to make sure the we can still read the post message 
>>> body even the body is form message.
>>>
>>> You can still configure the CachedOutputStream by using the camelContext 
>>> properties, I don't know what kind of issue that the changes introduced 
>>> to you.
>>>
>>> Willem
>>>
>>> _Jens wrote:
>>>> Hi,
>>>>
>>>> it seems to me that the DefaultHTTPBinding again uses a
>>>> CachedOutputStream.
>>>> This means that the binding cannot be used anymore with longer streams
>>>> and
>>>> that the streamCache option on the CamelContext bean is ignored. Is
>>>> this
>>>> going to be the way the caching is done in 2.3?
>>>>
>>>> Thanks,
>>>> Jens
>>>
>>>
>> 
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/2.3-SNAPSHOT%3A-Stream-Caching-again-enabled-by-Bug-Fix-for-Camel-2686-and-CAMEL-2694-%28rev-941275%29--tp28582952p28583757.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to