Проблема с использованием прокси с Java под Lotus Notes - PullRequest
0 голосов
/ 28 июня 2011


Я искал во всей сети проблему, которая возникла у меня с агентом lotus notes. Вот мое спасение.
Мне нужно получить Webservice (в Java) от агента в Java тоже. Проблема заключается в том, что агент должен работать на сервере, поскольку файл Jar нельзя установить на каждый компьютер. Теперь в сети клиента люди должны пройти через прокси-сервер для доступа в Интернет, который нуждается в аутентификации. Я знаю, что мы можем настроить сервер Domino на использование прокси, но он уже настроен на LDAP. Итак, единственный вариант, который я нашел, - это использовать системные свойства Java для подключения к прокси и затем получить веб-сервис. Итак, я установил http.proxyHost и http.proxyPort и использую Аутентификатор для логина и пароля. Когда я подключился через HTTP для получения веб-службы, все в порядке или кажется нормальным, поскольку я получаю действительный объект Java. Теперь, когда я получаю этот экземпляр, мне нужно инициализировать сеанс. Когда я запускаю метод, я получаю это:

2011-06-28 13:46:50   Agent  error: WebServiceEngineFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode: 
faultString: java.net.SocketException: Operation timed out: connect:could be due to invalid address
faultActor: 
faultNode: 
faultDetail: 
2011-06-28 13:46:50   Agent  error: java.net.SocketException: Operation timed out: connect:could be due to invalid address
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.AxisFault.makeFault(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.transport.http.HTTPSender.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.strategies.InvocationStrategy.visit(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.SimpleChain.doVisiting(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.SimpleChain.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.AxisClient.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.Call.invokeEngine(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.Call.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.Call.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.Call.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.axis.client.Call.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at com.casebank.spotlight.webservice.TroubleShootSoap11BindingStub.initiateSession(TroubleShootSoap11BindingStub.java:334)
2011-06-28 13:46:50   Agent  error:     at JProxyManager.getResultFromAddress(JProxyManager.java:118)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
2011-06-28 13:46:50   Agent  error:     at java.lang.reflect.Method.invoke(Method.java:391)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.JavaConnectInvoker.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
2011-06-28 13:46:50   Agent  error:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:62)
2011-06-28 13:46:50   Agent  error:     at java.lang.reflect.Method.invoke(Method.java:391)
2011-06-28 13:46:50   Agent  error:     at lotus.domino.JavaConnectLoader.invoke(Unknown Source)

Это говорит мне о том, что Java пытается подключиться с помощью сокетов, которые не являются протоколом HTTP. Итак, я попытался установить socksProxyHost и socksProxyPort на один и тот же прокси-сервер, используя порт 1080 вместо HTTP 8080, но продолжаю получать ту же ошибку. В результате моих поисков я понял, что, возможно, Java вообще не использует SOCKS-прокси, даже если эти свойства установлены. Чего я не понимаю, так это того, что я могу сделать это с HTTP-прокси (сначала он не работал, но после настройки свойств), но не с SOCKS Proxy. Просто не хочет. Одна интересная вещь, которая может мне помочь, но я ничего не смог найти по этому поводу, это то, что сначала у меня не было прокси-адреса, поэтому я набрал фиктивный, чтобы начать делать код, пока клиент отвечал на мое письмо , Когда я очищаю свойства socksProxyHost и socksProxyPort, исключение, которое я получаю из Java, - это UnknowHostException, которое указывает на мой фиктивный адрес. НИЧЕГО (а я искал!) Больше не пишется по этому адресу. Даже когда я печатаю свойства, запишите это:

System.getProperties().list(System.out);

Я этого не вижу. Я не думаю, что клиент мог установить фиктивный прокси-адрес точно так же, как я, и, поскольку он работает на сервере, он не имеет никакого отношения к моей конфигурации. Версия Java для заметок - 1.4, а класс java.net.Proxy отсутствует на сервере. Мне было просто интересно, что это что-то приносит вам в голову. Я даже попытался установить все возможные свойства, связанные с прокси (http, https, ftp, socks), и я схожу с ума! Должен быть способ, и я чувствую, что я близко, но я действительно устал проверять кучу вещей, которые не работают!

Ваша помощь очень ценится.

1 Ответ

0 голосов
/ 28 июня 2011

Обратите внимание, что Java использует сокеты для связи с http-прокси.Это имело бы смысл, если бы он пытался связаться с сервером напрямую, а не через http-прокси.

Я бы посоветовал вам найти jar, содержащий этот код, и запустить его через декомпилятор, чтобы увидеть, чтокод на самом деле и где это исключение было триггерид.Похоже, что оно не переносит фактическое исключение, а создает новое, отбрасывающее фактическую трассировку стека.

...