Good point Mark!
I'll follow that idea, put the client in a Callable task with the appropriate 
timeout in the ExecutorService.
Thanks very much!

On 2021/09/23 22:23:46, Mark Presling <[email protected]> wrote: 
> We have had this problem in the past also. Have a look at
> https://www.baeldung.com/java-executor-service-tutorial
> 
> In particular, section 5. You can submit() a Callable task and then use the
> Future to wait for it to complete, with a timeout...
> 
> String result = future.get(20, TimeUnit.SECONDS);
> 
> Here, if it takes longer than 20s it will throw an exception and you can
> handle it as required.
> 
> 
> 
> On Fri, 24 Sept 2021 at 10:12, Alejandro Molinari <[email protected]>
> wrote:
> 
> > Hello! I have a simple client to connect a web service destination:
> >
> >                 //Obtengo el acceso al servicio.
> >                 final WsTransaccionOnlineReceptorImplService
> > wsTOLReceptorImplService = new
> > WsTransaccionOnlineReceptorImplService(wsdlURL, SERVICE_NAME);
> >                 //Obtengo el port donde estan definidas las operaciones.
> >                 final WsTransaccionOnlineReceptor port =
> > wsTOLReceptorImplService.getWsTransaccionOnlineReceptorPort();
> >
> >                 //Asigno los timeouts correspondientes.
> >                 final Client cliente = ClientProxy.getClient(port);
> >                 final HTTPConduit http = (HTTPConduit)
> > cliente.getConduit();
> >                 final HTTPClientPolicy httpClientPolicy = new
> > HTTPClientPolicy();
> >                 //Timeout para la conexion (milisegundos).
> >                 httpClientPolicy.setConnectionTimeout(3000);
> >                 //Timeout de recepcion de datos(milisegundos).
> >                 httpClientPolicy.setReceiveTimeout(10000);
> >                 http.setClient(httpClientPolicy);
> >
> >                 final RespuestaType resp=port.aprobacionTransaccion(tol);
> >
> > The ReceiveTimeout works as expected, when no data arrives in the
> > specified ReceiveTimeout a java.net.SocketTimeoutException: Read timed
> > out arises.
> > In some cases when there is network problems or may be the response is in
> > "chunked transfer encoding" and there is delay between chunks, the response
> > takes minutes to arrive and no exception is thrown (because data is
> > incoming, but slowly).
> > This client is embedded in a JAX-WS web service and must return a response
> > to the caller in certain amount of time and obviously I need an extra
> > timeout, let's say a "ResponseTimeout".
> > I tried to start a thread and sleep "ResponseTimeout", after that, call a
> > cliente.close() if response not arrived completely but has no effect in
> > blocking mode and i think is not the adequate solution.
> > Should I use asynchronous  web services to achieve this?
> > Any suggestion will be appreciated!!
> > Thanks!
> >
> >
> 

Reply via email to