Redirigir/Reenviar solicitudes de servicio web SOAP a otro servicio web

Tengo un caso de uso que requiere que todas las llamadas a NewWebService se enruten a OldWebService, si la solicitud SOAP no se valida con XSD y WSDL de NewWebService. NewWebService está ubicado en ServerA y OldWebService está en ServerB.

En resumen, sé que necesito algún mecanismo que me permita tomar una solicitud SOAP que llegue a NewWebService, enviarla a OldWebService y luego devolver el resultado SOAP al cliente. Mi experiencia limitada con spring-ws hace que sea difícil decidir cómo lograrlo.

Mi primer pensamiento fue crear un cliente SOAP en NewWebService que llame a OldWebService cada vez que no se pueda validar la carga útil. ¿Es esta la mejor solución o hay una mejor manera de permitir que NewWebService actúe como un paso para ciertas solicitudes?

preguntado el 03 de mayo de 12 a las 16:05

Existe una opción para enrutar solicitudes con WS-Addressing. Consulte [static.springsource.org/spring-ws/sites/2.0/reference/html/… -

2 Respuestas

Mi solución fue escribir un SoapRequestFilter personalizado que implemente un javax.servlet.Filter y una nueva clase que amplíe HttpServletRequestWrapper. Dado que HttpServletRequestWrapper implementa la interfaz HttpServletRequest, extender el contenedor le permite copiar HttpRequest y actuar en la secuencia sin consumir el objeto y causar problemas en sentido descendente.

Una vez que tuve el filtro y el envoltorio, pude analizar el punto final y la carga útil de HttpRequest. Si era necesario redirigir la solicitud, creé una nueva conexión HttpUrlConnection al antiguo servicio web SOAP y configuré el InputStream de esa respuesta al OutputStream de HttpResponse.

contestado el 29 de mayo de 12 a las 16:05

¿Tienes este código compartido en algún lugar? Me interesaría ver su implementación. - tu no existes

¿Puedes compartir la solución que necesito para hacer lo mismo? - 4535992

Creo que Apache Camel puede ayudarte de manera eficiente.

Puede echar un vistazo a su ejemplo de proxy, es simple y fácil de cumplir con su requisito.

http://camel.apache.org/cxf-proxy-example.html

Respondido 09 ago 13, 10:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.