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

Reply via email to