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?

-----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
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to