Update: this issue was resolved by setting the connection close header: WebClient.getConfig(client).getHttpConduit().getClient().setConnection(ConnectionType.CLOSE);
which appears to force HTTP 1.0 On Sat, Jul 30, 2011 at 8:04 PM, Andrew <[email protected]> wrote: > 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 > >
