我一直遇到在办公室内运行Glassfish v2.1.1实例的问题,我们有一个用于传出连接的代理服务器。我最初的解决方法是在家工作。
我在公司外部的HTTPS服务器上调用SOAP服务。由于Glassfish不通过公司的代理服务器,因此在尝试初始化SOAP客户端时出现以下错误:
javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://www.hostname.com...
和
Caused by: java.net.UnknownHostException: www.hostname.com
我在命令行上设置了代理环境变量,以及我的系统代理设置都正常工作,以便我可以使用浏览器访问WSDL。我该如何配置Glassfish?
答案 0 :(得分:7)
我在寻找答案方面遇到了很多麻烦,因为网上没有详细介绍这个主题。一个链接告诉我如何配置HTTP代理,但没有提到任何关于HTTPS的内容,所以我花了一些时间来弄清楚它。
在Glassfish服务器上打开管理控制台,然后转到: 应用程序服务器 - > JVM设置 - > JVM选项。单击“添加JVM选项”4次,然后输入以下4个选项
-Dhttp.proxyHost=proxyhostname
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxyhostname
-Dhttps.proxyPort=8080
其中proxyhostname和端口号对于您的设置是正确的。然后你需要重启服务器。
请注意,我找不到任何用于从PAC文件设置代理的选项,也找不到需要auth的代理。在这种情况下,您可能需要安装一个本地auth代理处理程序,如Authoxy for Mac OS X,它将您的localhost转换为非auth代理,并屏蔽来自中央auth代理的身份验证请求。
此外,此链接适用于JVM的各种代理选项: http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html
答案 1 :(得分:3)
您必须明确设置代理服务器。根据Glassfish版本,有多种选择可供选择。通常,您可以使用JVM参数或Glassfish管理控制台来设置代理。 GF3的介绍可用here(很抱歉只提供链接,但我不想在此重复所有细节。)
答案 2 :(得分:1)
只是为了完成答案,如果代理需要用户名和密码,请在Glassfish中设置以下内容:
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword
答案 3 :(得分:0)
主机无法解析,您确定使用的是互联网DNS服务器可解析的主机名,还是使用的东西只能从您的网络中解析,更糟糕的是,您机器本地的主机条目? /> 除此之外,代理服务器可能会拒绝您访问某些端口,但这可能不是您现在的问题。如果代理允许访问端口80,请尝试在端口80上运行Glassfish,如果出现任何连接超时错误。