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 예제는 다른 클라이언트 세대를 설명합니다.