Thanks Sergey. Could you point me to sample test and demo code? -----Original Message----- From: Sergey Beryozkin [mailto:[email protected]] Sent: Monday, May 21, 2012 4:39 AM To: [email protected] Subject: Re: SocketTimeoutException on POST request using Webclient
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 >> > >
