On Friday 01 October 2010 3:59:30 pm M Kher wrote:
> Thanks. Shouldn't the StaxInInterceptor copy the InputStream and process
> that and leave the original stream as is? Or is that too inefficient?

Way to innefficient.   One of the design goals of CXF is to maintain streaming 
whenever possible.    As data comes in off the wire, we process.  If  we 
pulled in the entire stream into a buffer, we'd have to wait around until all 
the data is there before doing anything.   

Dan


> 
> 
> Thanks
> Manav Kher
> 
> On Oct 1, 2010, at 3:50 PM, Daniel Kulp wrote:
> > On Friday 01 October 2010 3:48:24 pm M Kher wrote:
> >> We are using CXF 2.2.10 and it seems that placing a Custom Interceptor
> >> AFTER StaxInInterceptor does not get the complete incoming XML message.
> >> So doing this
> >> 
> >> message.getContent(InputStream.class);
> >> 
> >> in the custom Interceptor handleMessage(Message) method will give you
> >> the complete incoming message when the Interceptor is processed BEFORE
> >> the StaxInInterceptor. But placing this interceptor after the
> >> StaxInInterceptor (in the POST_STREAM phase) will  only get the partial
> >> message (basically a good chunk of the beginning of the SOAP message is
> >> missing).
> >> 
> >> Are all interceptors that come after the StaxInInterceptor supposed to
> >> use the XMLReader object in the message?
> > 
> > Pretty much yes.   The XMLStreamReader generally buffers things as it
> > reads. It reads a chunk, does some parsing, reads another chunk, etc... 
> > Thus, the underlying input stream is generally positioned in an
> > unpredictable location.

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to