Я хочу, чтобы запрос SOAP XML был преобразован в соответствующий запрос REST POST, который будет отправлен на сервер, обработан и затем возвращен как ответ SOAP XML.
Отправить запрос SOAP XML -> СоздатьREST Request -> Process Rest Request и возврат Rest Response -> Create и return SOAP XML response
Я установил два работающих приложения, верблюжье приложение, которое получит SOAP XML-запрос и отправит запрос REST POSTприложение, которое будет возвращать ответ REST. Я пытаюсь, чтобы приложение верблюда получило ответ REST и преобразовало его в ответ SOAP, который будет возвращен отправителю исходного запроса SOAP.
Ниже приведен файл camel-config.xml, который я использовал:
<bean id="ProcessChange" class="com.acompany.camel.processor.ProcessChange"/>
<cxf:cxfEndpoint id="HTTP_EndPoint"
address="/OptionalServicesService"
wsdlURL="classpath:optionalservices_v22_0/OptionalServicesContract.wsdl"
serviceClass="com.acompany.ism.optionalservices_v22_0.OptionalServicesPort"
endpointName="tns:OptionalServicesPort"
serviceName="tns:OptionalServicesService"
xmlns:tns="http://www.acompany.com/ism/optionalservices_v22_0">
</cxf:cxfEndpoint>
<cxf:rsClient id="rsClient" address="http://localhost:9090/TicketRelatedSvc"
serviceClass="com.acompany.mce.dto.response.RESBody"
loggingFeatureEnabled="true" />
<dataFormats>
<json id="jaxreq" library="Jackson" unmarshalTypeName="com.acompany.mce.dto.request.REQBody"/>
<json id="jaxres" library="Jackson" unmarshalTypeName="com.company.mce.dto.response.RESBody"/>
</dataFormats>
<route id="OptionalServices">
<from uri="cxf:bean:HTTP_EndPoint"/>
<transform id="TransformInput"><simple>${in.body[0]}</simple></transform>
<doTry>
<pipeline id="HTTPPipeline" xmlns:doc6="http://www.acompany.com/ism/optionalservices_v22_0">
<choice id="ChoiceOfVersions">
<when>
<simple>${in.header.operationName} == 'OptionalServices'</simple>
<marshal><custom ref="jaxreq"/></marshal>
<setHeader headerName="CamelHttpMethod">
<constant>POST</constant>
</setHeader>
<setHeader headerName="Content-Type" id="header_contentType">
<constant>application/json</constant>
</setHeader>
<inOut uri="cxfrs://bean://rsClient"/>
<unmarshal ref="jaxres"/>
</when>
(EXCEPTION HANDLING IS HERE)
</route>
Я получаю следующую ошибку:
org.apache.camel.processor.Pipeline - сбой обмена сообщениями: поэтому прерывается конвейер для обмена: Exchange [ID-DFPC0N2-1570808508753-0-4] Исключение: org.apache.camel.CamelExecutionException: исключение произошло во время выполнения на обмене: Exchange [ID-DFPC0N2-1570808508753-0-4]