WebSphere Application Server 8.5.5 JAX-WS에서는 클라이언트의 요청 컨텍스트에 있는 주소를 신뢰하기 전에 주변의 두 가지 제어를 확인해야 합니다. IBM의 JVM 수준 com.ibm.ws.websvcs.transport.enableProxyTunnel 속성은 기본값이 false이며, 클라이언트별 주소만으로는 터널링이 켜지지 않습니다. 정책 집합의 HTTP 전송 값도 프로그래밍 방식 값을 덮어쓰고, 그 값들은 다시 JVM 시스템 속성을 덮어씁니다.

선택한 기존 포트에 대해 IBM은 호출 전에 다음과 같은 클라이언트별 설정을 문서화합니다.

import javax.xml.ws.BindingProvider;

BindingProvider binding = (BindingProvider) servicePort;
binding.getRequestContext().put("https.proxyHost", "proxy.example");
binding.getRequestContext().put("https.proxyPort", "8080");

HTTPS 키는 HTTPS 엔드포인트에 적용되며, HTTP에는 그에 대응하는 IBM HTTP 키를 사용합니다. 허용된 공개 SOAP 엔드포인트는 해당 정책과 터널링 제어가 허용하고 그 수준에서 프록시 계정이 구성되지 않은 경우에만 HTTP 프록시 목록의 HTTP 주소를 사용할 수 있습니다. 프록시 인증은 SOAP 서비스 자격 증명과 별개인 HTTP/HTTPS proxyUser 및 proxyPassword 속성을 따로 가집니다.

이것들은 WebSphere 확장입니다. Metro, CXF 또는 다른 구현의 BindingProvider 맵이 그 문자열들을 이식 가능하게 만들지는 않습니다.

호출이 실행되는 동안 공유 포트 컨텍스트를 다시 쓰지 말고 서로 다른 동시 경로를 적절히 구성된 클라이언트 객체에 두십시오. 그래야 주소가 실제 클라이언트로 한정되고, 주변의 모든 JVM 제어를 클라이언트 로컬로 취급하지 않게 됩니다.

관련 글