다양한 ReST/JSON 및 SOAP 엔드 포인트를 (성공적으로) 통합하는 프로젝트에서 Spring Integration을 사용하고 있습니다. 이제 Plain-Old-Xml-over-HTTP를 허용하도록 구성된 BusinessWorks 인스턴스를 호출해야합니다. "Spring Integration in Action book"에서 int-ws : outbound-gateway를 사용해야한다는 힌트를 얻었습니다. 이 구성이 올바른 요청을 생성하지만 SOAP에서 : 나는 POX와 페이로드 (NO SOAP 봉투)에서 개체를 보내려면이를 구성하는 방법을 알아낼 수 없습니다Spring Integration에서 POX 웹 서비스를 호출합니다.
<int-ws:outbound-gateway
uri="..."
request-channel="request" reply-channel="reply"
marshaller="marshaller" unmarshaller="unmarshaller"/>
.
<int-ws:outbound-gateway
uri="..."
request-channel="request" reply-channel="reply"
marshaller="marshaller" unmarshaller="unmarshaller"
message-factory="poxMessageFactory"/>
<bean id="poxMessageFactory"
class="org.springframework.ws.pox.dom.DomPoxMessageFactory"/>
요청은 XML로 제대로 전환하지만, 요청의 본문은 (봄 통합 페이로드에 존재하는 물체의 흔적) 빈없는 것 : 나는이 시도했다. 누군가 내가 잘못하고있는 일이나 내가하려는 일을 성취하는 방법을 말해 줄 수 있습니까? if (message instanceof SoapMessage) {
에
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
Object payload = this.requestMessage.getPayload();
if (message instanceof SoapMessage) {
this.doWithMessageInternal(message, payload);
AbstractWebServiceOutboundGateway.this.headerMapper
.fromHeadersToRequest(this.requestMessage.getHeaders(), (SoapMessage) message);
if (this.requestCallback != null) {
this.requestCallback.doWithMessage(message);
}
}
}
에주의 :
감사합니다. 나는이 권위있는 대답이 주제를 닫는다 고 생각합니다 :-) 나는 JIRA 버그를 열었습니다. 이 임시 해결책을 사용하는 것만으로도 빠른 시도를했지만, 우리가 호출 한 서비스가 같은 회사에서 관리되기 때문에 그들은 SOAP을 받아들이도록 서비스를 재구성합니다. –
예! JIRA https://jira.spring.io/browse/INT-4355가 최근에 수정되었습니다. 필요한 경우 다음 유지 보수 버전을 최대한 빨리 릴리스 할 수 있습니다. –
오! 미안해.이 마지막 코멘트를 놓쳤다. 고맙습니다 만, 이제 다음 버전에서 배송을 기다릴 수 있습니다. –