Я успешно использовал API веб-служб P6, где он размещен на компьютере, доступном для клиента. Однако теперь мы переместили клиентское приложение в такое место, где оно может получить доступ только к хосту веб-служб P6 через прокси-сервер. Я могу сделать прямой Http-вызов веб-сервисам и получить действительный ответ, используя URL.connect (java.net.Proxy), создав соответствующий действительный прокси-сервер. Есть ли способ создать различные сервисы (например, ProjectService) и указать ему использовать прокси-сервер, который я создаю для установления соединения?
Context ctx = new InitialContext();
ConnectivityConfiguration configuration = (ConnectivityConfiguration) ctx.lookup("java:comp/env/connectivityConfiguration");
String lookName = "P6188_WSDL";
DestinationConfiguration destConfiguration = configuration.getConfiguration(lookName);
if (destConfiguration == null) {
response.getWriter().append("Did not find: "+lookName);
return;
}
String value = destConfiguration.getProperty("URL")+"/p6ws/services/ProjectService?wsdl";
URL url = new URL(value);
String proxyType = destConfiguration.getProperty("ProxyType");
Proxy proxy = getProxy(proxyType);
//response.getWriter().append("<br>Proxy type: "+proxyType+" = "+proxy);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(proxy);
injectHeader(urlConnection, proxyType);
После этого момента urlConnection предоставит ожидаемый ответ wsdl. Однако без прокси urlConnection не будет работать.