I'm getting the following error with my CXF client:

Caused by: java.io.IOException: Premature EOF
at
sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:538)
at
sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:582)
at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:669)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2672)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.skipString(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)

This occurs while attempting to unmarshal the JAXB response.  What's strange
is this is only occurring in one environment, which unfortunately is
production.  And it is only occurring with responses around 8K, which
appears to be the threshold where CXF starts chunking the response.

The basic architecture is as follows: The client makes a REST request to
server 1, which makes a similar REST request to server 2.  Then, server 1
hands the Response object from server 2 back to the client, without
unmarshalling/remarshalling.

What I see when analyzing the http traffic is a correct chunked response
from server 2, but the response from server 1 a bit malformed.  It says it's
chunked (in header) but it's not and contains the entire response.

I've attempted to turn off chunking, with the following:

WebClient.getConfig(t).getHttpConduit().getClient().setAllowChunking(false);

but I've learned that pertains only to request chunking -- not where the
problem is.

So, my questions are, is there a method to tell CXF to not chunk the
response?  Or, is there an obvious problem here that can be resolved in
another manner?  I am using CXF 2.2.11 (old I know but stuck on it for
now).  Thanks,

Andrew

Reply via email to