在Lotus Notes下使用Java代理的问题

时间:2011-06-28 19:21:35

标签: java proxy lotus-notes lotus lotus-domino


我一直在寻找整个网络上我遇到的莲花笔记代理问题。这是我的请求 我还需要从Java中的代理程序中检索Web服务(使用Java)。问题是代理必须在服务器上运行,因为无法在每台计算机上安装Jar文件。现在,在客户端的网络上,人们必须通过代理来访问需要身份验证的Web。我知道我们可以将Domino服务器设置为使用代理,但它已经设置为LDAP。因此,我找到的唯一选择是使用Java系统属性连接到代理,然后获取Web服务。所以,我设置了http.proxyHost和http.proxyPort,我使用Authenticator作为登录名和密码。当我通过HTTP连接到retreive webservice时,一切都很好,或者看起来很好,因为我得到了一个有效的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协议的套接字进行连接。所以,我尝试使用端口1080而不是HTTP 8080将socksProxyHost和socksProxyPort设置为相同的代理,但我一直得到相同的错误。我的搜索让我意识到Java可能根本不使用SOCKS代理,即使设置了这些属性。我没有得到的是,我可以使用HTTP代理(最初没有工作,但在设置属性后,它有)但不是SOCKS代理。它只是不想要。一个有趣的事情可能对我有所帮助,但我找不到任何相关信息,起初,我没有代理地址,所以我输入了一个假的,只是为了在客户端回复我的电子邮件时开始执行代码。当我清除属性socksProxyHost和socksProxyPort时,我从Java获得的异常是UnknowHostException,它指向我的虚拟地址。 NOWHERE(我搜索了!)写的是那个地址了。即使我打印属性,也可以使用:

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

我没有看到它。我认为客户端可能没有像我那样设置虚拟代理地址,因为它在服务器上运行,它与我的配置无关。 notes上的Java版本是1.4,而java.net.Proxy类不在服务器上。我只是想知道它给你的想法带来了什么。我甚至尝试设置与Proxies(http,https,ftp,socks)相关的所有可能属性,我疯了!必须有一种方式,我觉得我很接近,但我真的厌倦了测试一堆不起作用的东西!

你真的很感激。

1 个答案:

答案 0 :(得分:0)

请注意,Java使用套接字与http代理进行通信。如果这是试图直接到达服务器而不是通过http代理,那将是完全合理的。

我建议您找到包含此代码的jar,并通过反编译器运行它以查看代码实际执行的操作以及此异常为triggerede的位置。看起来它不会包装实际的异常,但会创建一个新的异常丢弃实际的堆栈跟踪。