Я использую Camel для интеграции двух систем:
App-A ---- Rest / JSON ----> Camel-App ---- SOAP / XML ---> App-B.
Все рабочие файлы, кроме ответа JSON, сталкиваются с проблемами ниже:
1. он генерирует ответ с нежелательными символами, где символы не являются частью тела, но появляются до и после тела, см. Ниже
HTTP / 1.1 200 OK
Тип содержимого: text / xml; charset = utf-8
Расположение содержимого: встроенное; filename = f.txt
Истекает: 0
Передача-кодировка: чанки
Сервер: Jetty (9.4.12.v20180830)
3E0
{ "схемы": [ "Урна: IETF: PARAMS: SCIM: Схемы: Ядро: 2.0: User", .........}
0
Как вы можете видеть, он добавляет 3E0 & 0 символов в теле и заголовок размещения содержимого, в то время как это простая служба запроса / ответа.
код ниже:
<bean id="jetty" class="org.apache.camel.component.jetty9.JettyHttpComponent9">
<property name="sslContextParameters" ref="iamSSLContext"/>
</bean>
<camel:restConfiguration component="jetty" contextPath="/" port="8888" scheme="http"/>
<camel:rest path="/">
<camel:post uri="/" consumes="application/json" produces="application/json">
<camel:to uri="direct:createUser"/>
</camel:post>
</camel:rest>
<camel:route id="createUserRouter">
<camel:from uri="direct:createUser"/>
<camel:convertBodyTo type="java.lang.String"/>
<camel:to uri="velocity:template/rest_request_template.vm" />
<camel:to uri="cxf:bean:soapEndpoint" />
<camel:setHeader headerName="responsePayload">
<camel:xpath resultType="String">//m:executeResponse/m:responsePayload/text()</camel:xpath>
</camel:setHeader>
</camel:route>
<camel:to uri="velocity:template/rest_response_template.vm" />
- rest_response_template.vm содержит одну переменную, вот и все:
$ {headers.responsePayload}
Не могли бы вы помочь или направить нас, чтобы понять, какую ошибку я совершаю.
Спасибо,
Abhi S