one more thing - it might be a bug in CXF.

I noticed that POST_INVOKE (registered as InInterceptor) is executed *AFTER
*POST_STREAM (registered as OutInterceptor)

Is it normal?


On Wed, Jun 11, 2014 at 9:05 AM, Przemyslaw Bielicki <[email protected]>
wrote:

> Hi Daniel,
>
> thx a lot for the tip. In fact I discovered this solution five minutes
> after asking the question ;)
>
> FYI for the input stream I use RECEIVE phase to register the wrapper and
> INVOKE phase to read bytes read count.
> For the output stream I use PRE_STREAM phase to register the wrapper and
> POST_STREAM phase to read bytes written count.
>
> Cheers,
> Przemyslaw
>
>
> On Tue, Jun 10, 2014 at 9:30 PM, Daniel Kulp <[email protected]> wrote:
>
>>
>> On Jun 10, 2014, at 10:27 AM, Przemyslaw Bielicki <[email protected]>
>> wrote:
>>
>> > I need to know the input and output message size in my interceptors.
>> >
>> > I assume that "Content-Length" is not set in the request i.e.
>> > (Transfer-Encoding = chunked), so I cannot take the in length from the
>> HTTP
>> > header - it must be really "computed".
>> >
>> > Additional difficulty is that I don't want to serialize incoming and
>> > outgoing messages toString() as it will be a performance issue.
>> >
>> > Is there any way to get these sizes from the Input/OutputStream? Is
>> there a
>> > way to inject my custom stream wrappers that will be counting number of
>> > bytes read/written?
>>
>> You would need to write an interceptor that would live fairly early in
>> the interceptor chain that would do something like:
>>
>> InputStream in = message.getContent(InputStream.class);
>> in = new MyLengthRecordingStream(in);
>> message.setContent(InputSteam.class, in);
>>
>> The rest of the processing would then use your input stream and at the
>> end of all the processing, you would have the length.
>>
>>
>> --
>> Daniel Kulp
>> [email protected] - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>>
>>
>

Reply via email to