que tienen que poner en práctica un cliente de servicio web en un archivo WSDL dado. que utiliza la herramienta 'wsimport' del SDK para crear clases Java desde el WSDL, así como una clase que se envuelven es único método del servicio web (enhanceAddress(auth, param, address)
) en un método Java simple. Hasta aquí todo bien. El servicio web es funcional y devuelve los resultados de forma correcta. El código es el siguiente:Detalles de conexión y los tiempos de espera en un cliente de servicios web Java
try {
EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
//Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
throw new AddressValidationException("Error during uniserv webservice request.", e);
}
El problema ahora: necesito para obtener información sobre la conexión y cualquier error que pudiera ocurrir con el fin de llenar varios valores JMX (como COUNT_READ_TIMEOUT, COUNT_CONNECT_TIMEOUT, ...) por desgracia, el método no lanza oficialmente ninguna excepción, por lo que a fin de obtener detalles acerca de un ConnectException, necesito utilizar getCause()
en el ClientTransportException
que será lanzado.
Peor aún: He intentado poner a prueba el valor de tiempo de espera de lectura, pero no hay ninguno. Cambié la ubicación del servicio en el archivo wsdl para publicar la solicitud en un script php que simplemente espera para siempre y no regresa. Adivina qué: el cliente del servicio web no hace , no, pero también aguarda por siempre (maté la aplicación después de más de 30 minutos de espera). Esa no es una opción para mi aplicación, ya que eventualmente me quedo sin conexiones tcp si algunos de ellos se 'atascan'.
El método enhanceAddress(auth, param, address)
no está implementado, pero está anotado con javax.jws. * Anotaciones, lo que significa que no puedo ver/cambiar/inspeccionar el código que se está ejecutando realmente.
¿Tengo alguna opción que tirar toda wsimport/javax.jsw-materia lejos y poner en marcha mi propio cliente de jabón?
Ya que tenía el problema hace 2 semanas, escribí mi propio cliente. A pesar de eso, probé tu enfoque y ¡está funcionando! Encontré un código similar en ese momento, pero de alguna manera me dio una ClassCastException cuando intenté enviar contenido a BindingProvider. – f1sh
Tengo un problema similar, PERO el tiempo de espera ocurre cuando obtengo el puerto, ¿cómo lo resuelvo? – maugch