通过代理连接到远程 weblogic 服务器时出现问题

Posted

技术标签:

【中文标题】通过代理连接到远程 weblogic 服务器时出现问题【英文标题】:Issue while connecting to remote weblogic server over proxy 【发布时间】:2012-07-06 08:12:20 【问题描述】:

我在我的 java 源代码中配置了一个代理:

systemSettings.put("http.proxyHost", "www.proxyserver.com");
systemSettings.put("http.proxyPort", "8080");
systemSettings.put("http.nonProxyHosts", "10.x.y.z");

这里 10.x.y.z 是我的 weblogic 服务器的实际 IP。 但是每当代码尝试连接到 weblogic 服务器时,我都会收到以下错误:

原因:java.net.ConnectException: t3://10.x.y.z:7001: Destination 无法到达;嵌套异常是:java.net.ProtocolException: 来自代理的无法识别的响应:'HTTP/1.0 403 Forbidden';不 到目的地的可用路由器 weblogic.rjvm.RJVMFinder.findOrCreateInternal(RJVMFinder.java:216) 在 weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:170) 在 weblogic.rjvm.ServerURL.findOrCreateRJVM(ServerURL.java:153) 在 weblogic.jndi.WLInitialContextFactoryDe​​legate$1.run(WLInitialContextFactoryDe​​legate.java:345) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363) 在 weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146) 在 weblogic.jndi.WLInitialContextFactoryDe​​legate.getInitialContext(WLInitialContextFactoryDe​​legate.java:340)

似乎设置 http.nonProxyHosts 没有按预期工作。我试图通过 Internet 找到解决方案,但大多数都说删除代理设置。我无法删除代理,因为我的代码尝试连接到某些 Internet URL。另请注意,weblogic 服务器位于远程计算机上。 你能不能给我一个提示,这里一定是什么问题?

【问题讨论】:

您是否也在系统级别设置了代理设置? 我也试过 System.setProperty("http.proxyHost", "www.proxyserver.com"); System.setProperty("http.proxyPort", "8080"); System.setProperty("http.nonProxyHosts", "10.x.y.z");但仍然没有运气。 我要求这样做是因为在各种不同的尝试之后,我遇到了“跟踪”多个代理设置的问题。有时很难知道哪个参数优先。您使用哪个 HTTP 库来连接您的 weblogic? 您好 Arcadien,我正在使用 sun.net.www.protocol.http.Handler()。 System.setProperty("http.nonProxyHosts", "10.x.y.z") 似乎没有按预期工作。无法为这种奇怪的行为找到任何原因。 【参考方案1】:

看看this OTN thread。

来自第三条评论:

    您正在通过 System.setProperties() 设置 nonProxyHosts,它不作为系统属性存在。

到目前为止我还没有阅读所有内容,但似乎 system.properties 不是方便的设置方式 非代理主机。

您是否尝试从命令行设置它?

-Dhttp.nonProxyHosts="*.foo.com|localhost".

【讨论】:

感谢 Arcadien 的回答。但我在 oracle 网站上发现,它是绕过某些服务器的代理的有效属性。对于链接“http.nonProxyHosts:应该直接访问的主机列表,绕过代理。这是一个由“|”分隔的模式列表。模式可以以“*”开头或结尾作为通配符。任何匹配的主机其中一种模式将通过直接连接而不是通过代理来实现。”。链接:docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html 您好 Arcadien,我曾在 VM 参数中尝试过 -Dhttp.nonProxyHosts="10.x.y.z"。它不起作用。正如一些线程中提到的,我什至尝试过 -Dhttp.nonProxyHosts=10.x.y.z 。但这也没有用。我非常感谢您的努力和时间来帮助我。我现在也是一片空白,找不到确切的问题。 呵呵 :) 文档谈到了这个参数。但它曾经是“noProxyHosts”,曾经是“nonProxyHosts”;)所以用“noProxyHosts”进行测试也可能有用 我没明白。您希望我尝试使用 noProxyHosts 吗?我又看到了你编辑的评论。是的,我试过了。 noProxyHosts 也。它也没有帮助。 该死,所以他们文档中的这个拼写错误也不是问题来源【参考方案2】:

我解决了这个问题。在设置与 weblogic 的连接时,我最初设置了代理。所以由于一些网络限制,我相信它没有用。在修改后的代码中,我使用相同的 3 行来设置代理:

System.setProperty("java.net.useSystemProxies", "false");
System.setProperty("http.proxyHost", "www.proxyserver.com");
System.setProperty("http.proxyPort", "8080");

唯一的区别是,我是在我需要的确切位置进行的。因此,不会使用带有 weblogic 代理的初始连接设置。我也不必绕过,weblogic server URL 不使用代理。

@Arcadien:感谢您为帮助我所做的努力。谢谢。

【讨论】:

以上是关于通过代理连接到远程 weblogic 服务器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

连接到连接代理以检索会话时出现PSS-Remoting问题

带有两种 SSL 到 weblogic 的 nginx 反向代理

将 spark 应用程序连接到远程 sql 服务器时出现 jdbc 连接超时错误

无法连接到管理服务器 weblogic 12.2.1

在 Hortonworks 上使用 Jdbc 远程连接到 Hive 时出现 ClassNotFoundException

尝试远程连接到 Websphere 上的 JMS 队列时出现 sun/io/MalformedInputException