On 20/05/12 23:48, Ganesan, Chandru wrote:
I did try setting a high timeout value. The problem is the client is unable to
read the response from the server. When I execute the request from the Firefox
client, I get instant response. Is there any special handling in the client to
process the JSON response from a POST request?
I'm not aware of any restrictions that can prevent a JSON payload from
being read successfully (meaning - causing a read timeout exception)
with WebClient, we have the test and demo code reading JSON.
May be you can offer a test case ?
Cheers, Sergey
-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]]
Sent: Sunday, May 20, 2012 11:12 AM
To: [email protected]
Subject: Re: SocketTimeoutException on POST request using Webclient
Hi
On 19/05/12 13:50, Ganesan, Chandru wrote:
Hi
When I execute a POST message (JSON) using WebClient the client fails with
SocketTimeoutException (see exception below).
The same request works fine from Firefox REST client. I think there a problem
with how I'm executing the POST from WebClient?
CXF client code times out after 60 secs or so by default, so it can be
configured from Spring or code, example:
WebClient.getConfig(wc).getHttpConduit().getClient().setReceiveTimeout(6000000);
HTH, Sergey
Thanks for the help
Sample code:
==========
----------------------
webClient.reset();
webClient.path(serviceList.get(ASSET) + "/" + id);
webClient.type(MediaType.APPLICATION_JSON);
webClient.accept(MediaType.APPLICATION_JSON);
Response response = null;
try {
ObjectMapper mapper = new ObjectMapper();
String postMessage = mapper.writeValueAsString(properties);
response = webClient.post(postMessage);
} catch (Exception e) {
throw new ValidationException(e);
}
if (response.getStatus() == Status.OK.getStatusCode()) {
return true;
}
return retVal;
Here is the server exception:
org.apache.cxf.interceptor.Fault: Could not send Message.
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at
org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:595)
at
org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:576)
at
org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:240)
at
org.apache.cxf.jaxrs.client.WebClient.post(WebClient.java:249)
Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking
http://......................................................: Read timed out
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2058)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2043)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 135 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at
java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at
sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)
at
java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
Chandru