Я попытался создать простой проект интеграции пружин, в котором я получаю запрос REST и преобразовываю его в запрос SOAP. Что-то вроде:
<int-http:inbound-gateway id="rest-inbound-gateway" request-channel="restRequestChannel"
reply-channel="restOutputChannel" supported-methods="POST"
path="/somepath" request-payload-type="com.something.RequestObject">
<int-http:request-mapping consumes="application/json" produces="application/json" />
</int-http:inbound-gateway>
<int:transformer ref="RestToSoapTransformer" method="transform"
input-channel="restRequestChannel" output-channel="transformedChannel"/>
<int-ws:outbound-gateway id="marshallingGateway"
request-channel="transformedChannel" reply-channel="restOutputChannel"
uri="http://localhost:8088/mockSoapBinding" marshaller="marshaller"
message-sender="messageSender"
unmarshaller="marshaller" >
</int-ws:outbound-gateway>
Но некоторые сведения, которые содержатся в запросе REST, необходимо поместить в заголовок конверта SAOP, а не в тело конверта. Например.
Запрос на отдых:
{
"foo": "foo",
"bar": "bar"
}
И SOAP-запрос должен быть:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<foo>foo</foo>
</soapenv:Header>
<soapenv:Body>
<bar>bar</bar>
</soapenv:Body>
</soapenv:Envelope>
Как я могу это сделать? Трансформатор создает только мыльное тело, а в перехватчике или в устройстве отображения заголовков у меня больше нет исходного запроса. Есть ли способ сделать это?