Передайте запрос сервиса Mule ESB условным маршрутизаторам
Я предоставляю сервис CXF, используя Mule ESB, и мне нужно передать запрос как есть условным маршрутизаторам. Большинство примеров, которые я вижу, передают ответ условным маршрутизаторам.
Как передать запрос вперед без изменения wsdl?
2 ответа:
я пересмотрю этот ответ, когда ОП даст больше точности
Поместите обработчик сообщений выбора маршрута после компонента, который реализует вашу веб-службу.
Я использовал шаблон Web-service-proxy, предоставленный Mule ESB 3
<pattern:web-service-proxy name="theProxy" outboundAddress="vm://theProxyFlow" wsdlFile="classpath:wsdl/MyWsWSDL.wsdl" inboundAddress="${inbound.url}" transformer-refs="RequestToString"> </pattern:web-service-proxy>
И конечная точка виртуальной машины фактически выполняет маршрутизацию на основе условий с помощью выражения xpath. Однако мне пришлось написать пользовательский трансформатор "RequestToString", чтобы я мог применить xpath к входящей полезной нагрузке SOAP.
Я использовал следующее преобразование в трансформаторе -
if (src instanceof InputStream) { InputStream input = (InputStream) src; try { reqAsString = IOUtils.toString(input); } finally { IOUtils.closeQuietly(input); } }