Spring の WebServiceTemplate のためのフォワードプロキシ
プロキシ設定済みの HttpClient 5 トランスポートを WebServiceTemplate に接続し、SOAP 送信側に必要なヘッダーインターセプターを保持します。
WebServiceTemplate は自身の WebServiceMessageSender を通じて送信します。SOAP の宛先がフォワードプロキシを必要とする場合は、その送信側の HTTP クライアントを設定します。
Apache HttpClient 5 が利用可能な Spring WS 4.1 の場合:
var http = org.apache.hc.client5.http.impl.classic.HttpClients.custom()
.setProxy(new org.apache.hc.core5.http.HttpHost(
"http", "proxy.example", 8080))
.addRequestInterceptorFirst(
new org.springframework.ws.transport.http
.HttpComponents5ClientFactory.RemoveSoapHeadersInterceptor())
.build();
var sender = new org.springframework.ws.transport.http
.HttpComponents5MessageSender(http);
webServiceTemplate.setMessageSender(sender);webServiceTemplate はアプリケーションの既存のテンプレートです。その SOAP サービス URI は宛先のままです。HTTP クライアントが中間者を保持し、その経路が許可されている場合は HTTP プロキシ一覧 の公開候補を使用できます。
カスタムクライアントのコンストラクターは、送信側の通常のヘッダーインターセプターを追加しません。クライアントを組み立てるときはこれを保持してください。Apache のリクエスト処理が管理する SOAP 提供のトランスポートヘッダーを除去します。クライアントファクトリーのデフォルト で構築した送信側も、この統合を保つ別の構築経路です。
必要なプロキシ資格情報とタイムアウトは、カスタムクライアント自身が対応するインターフェースを通じて追加してください。送信側の setter メソッドは、すでに提供されたクライアントの設定の代わりにはなりません。
テンプレートのワークロードのためにクライアントを保持し、シャットダウン時に所有リソースを閉じます。この例では HttpClient 5 の送信側を使用します。org.apache.http をインポートする Spring WS の例は別のクライアント世代を説明しています。