29 marzo 2014

TimeOut en un webservice sin tocar el código autogenerado

Alguna vez seguro que habéis necesitado que el cliente del servicio web al que estáis llamando no tenga un tiempo de espera muy grande, sobre todo si es llamado desde un proceso que se ejecuta en una web, ya que podemos dejar colgados threads.
Con el siguiente código podreis ajustar este tiempo sin tener que modificar los ficheros generados por el wsdljava

//direccion del webservice 
String myEndpointURL = "endpointURL";
// tiempo de espera del web service
Integer myTimeOutWS = new Integer(60000);
XXXXXXX_DefaultLocator service = new XXXXXXX_DefaultLocator();
//Casteamos el Service a Stub
org.apache.axis.client.Stub stub = (org.apache.axis.client.Stub) service.getXXXXXXX_DefaultSoap12(new URL(endpoint));
//Seteamos el timeout de la llamada del servicio web 
stub.setTimeout(myTimeOutWS != null ? myTimeOutWS.intValue() : 60000);
serviceProvider = service.getXXXXXXX_DefaultSoap12(new URL(conectionUrl));

No hay comentarios: