私は様々なReST/JSONとSOAPエンドポイントを(成功して)統合するプロジェクトでSpring Integrationを使用しています。 これで、Plain-Old-Xml-over-HTTPを受け入れるように設定されたBusinessWorksインスタンスを呼び出す必要があります。 "Spring Integration in Action book"から、私はint-ws:outbound-gatewayを使うべきであるというヒントを得ました。 この構成は、正しい要求を生成しますが、SOAPで:Spring IntegrationからPOX Webサービスを呼び出す
<int-ws:outbound-gateway
uri="..."
request-channel="request" reply-channel="reply"
marshaller="marshaller" unmarshaller="unmarshaller"/>
私はPOX(無SOAPエンベロープ)として、ペイロードにオブジェクトを送信するために、これを設定する方法を見つけ出すことはできません。 は、私はこれを試してみました:
<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は最近修正されました。あなたが必要な場合は、次のメンテナンスバージョンをできるだけ早くリリースすることがあります –
ああ!申し訳ありませんが、私はこの最後のコメントを逃しました。どうもありがとうございますが、今度は次のバージョンで納品を待つことができます。 –