I did not have this issue with CXF 2.1.3.
Henk
On Jan 26, 2010, at 2:18 PM, Henk Flipman wrote:
> Hmmm. That outputs:
>
> SOAP Response xml: java.io.bufferedoutputstr...@69032c
>
> to the log for a large SOAP response. It works fine for 'small' SOAP
> responses.
>
> This is CXF 2.2.5 btw.
>
> Thoughts?
>
> Henk
>
> On Jan 25, 2010, at 8:55 AM, Daniel Kulp wrote:
>
>>
>> Definitely shouldn't be any size limit.....
>>
>>> IOUtils.copy(is, bos);
>>> is.close();
>>> bos.close();
>>>
>>> String response = bos.getOut().toString();
>>> log.debug("SOAP Response xml: " + response);
>>
>> Try changing the above to
>>
>> IOUtils.copy(is, bos);
>> is.close();
>> bos.flush();
>>
>> String response = bos.getOut().toString();
>> log.debug("SOAP Response xml: " + response);
>> bos.close();
>>
>> Most likely, the bos.close() is triggering the temp file to be deleted as
>> that's the last stream to access the file.
>>
>>
>> Dan
>>
>>
>> On Sun January 24 2010 10:57:34 am Henk Flipman wrote:
>>> Hi,
>>>
>>> are there any size limits I should be aware of? I'm seeing the following
>>> exceptions while parsing large responses:
>>>
>>> Caused by: javax.xml.ws.soap.SOAPFaultException: Error reading
>>> XMLStreamReader. at
>>> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
>>>
>>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>>> at [row,col {unknown-source}]: [1,0]
>>> at
>>> com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:686)
>>>
>>> These responses are around 300K.
>>>
>>> I wrote an in-interceptor to log the incoming message, and the string I get
>>> is blank. I used:
>>>
>>> public void handleMessage(Message message) {
>>> InputStream is = message.getContent(InputStream.class);
>>>
>>> if (is == null) {
>>> return;
>>> }
>>>
>>> CachedOutputStream bos = new CachedOutputStream();
>>> try {
>>> IOUtils.copy(is, bos);
>>> is.close();
>>> bos.close();
>>>
>>> String response = bos.getOut().toString();
>>> log.debug("SOAP Response xml: " + response);
>>>
>>> message.setContent(InputStream.class,
>>> bos.getInputStream()); } catch (IOException e) {
>>> throw new Fault(e);
>>> }
>>> }
>>>
>>> Any thought?
>>>
>>> Thanks.
>>>
>>> Henk
>>>
>>
>> --
>> Daniel Kulp
>> [email protected]
>> http://www.dankulp.com/blog
>