Establecer los timeouts es extremadamente recomendable para prevenir que nuestra aplicación se quede "pegada" al servicio y eventualmente pueda bloquearse toda nuestra aplicación al quedarnos sin threads libres, ya que los tiempos máximos de espera suelen estar indefinidos por defecto.
Para especificar todo esto no es necesario regenerar el cliente. La práctica habitual es parametrizar los valores de URL, timeout de conexión y timeout de lectura (request timeout) usando algún fichero de configuración o similar, recuperarlos y especificarlos en nuestro proxy cliente.
A continuación dejo un snippet de código típico de ejemplo:
import javax.xml.ws.BindingProvider; import com.sun.xml.ws.client.BindingProviderProperties; ... int requestTimeout = 5000; int connectTimeout = 500; String nuevaUrl = "http://www.cestel.es/jdialer/dataProvider"; Jdialer jdialer = new Jdialer(); BindingProvider bp = (BindingProvider) jdialer.getDataproviderPort(); bp.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, requestTimeout); bp.getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT, connectTimeout); bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, nuevaUrl);