wsa:From
и wsa:To
являются Element
заголовками, они не являются простыми строками, подобными упомянутым soap-action
.Там <ws:header-enricher>
вам не поможет.
Однако вы все равно можете объявить bean-компонент для простого <int:header-enricher>
и предоставить javax.xml.transform.Source
для ваших заголовков в качестве значений.
Начиная с версии 5.0 , DefaultSoapHeaderMapper
Spring Integration может добавлять элементы в <soapenv:Header>
: https://docs.spring.io/spring-integration/docs/5.0.5.RELEASE/reference/html/ws.html#ws-message-headers.
См. Пример документации:
Map<String, Object> headers = new HashMap<>();
String authXml =
"<auth xmlns='http://test.auth.org'>"
+ "<username>user</username>"
+ "<password>pass</password>"
+ "</auth>";
headers.put("auth", new StringSource(authXml));
...
DefaultSoapHeaderMapper mapper = new DefaultSoapHeaderMapper();
mapper.setRequestHeaderNames("auth");
ОБНОВЛЕНИЕ
У <ws:outbound-gateway>
есть атрибут вроде:
<xsd:attribute name="request-callback" type="xsd:string">
<xsd:annotation>
<xsd:documentation>
Reference to a Spring Web Services WebServiceMessageCallback. This enables changing
the Web Service request message after the payload has been written to it but prior
to invocation of the actual Web Service.
</xsd:documentation>
<xsd:appinfo>
<tool:annotation kind="ref">
<tool:expected-type type="org.springframework.ws.client.core.WebServiceMessageCallback"/>
</tool:annotation>
</xsd:appinfo>
</xsd:annotation>
</xsd:attribute>
Итак, вам нужно настроитьbean для ActionCallback
и ссылаться на него из этого атрибута.
Подробнее о ActionCallback
можно найти в справочном руководстве Spring WS .