Java 如何设置Glassfish以通过代理服务器运行?

Java 如何设置Glassfish以通过代理服务器运行?,java,proxy,connection,glassfish,Java,Proxy,Connection,Glassfish,我在办公室内的本地计算机上运行Glassfish v2.1.1实例时遇到问题,在办公室中我们有一个用于传出连接的代理服务器。我最初的解决办法是在家工作 我正在公司外的HTTPS服务器上调用SOAP服务。由于Glassfish未通过公司的代理服务器,因此在尝试初始化SOAP客户端时,我会出现以下错误: javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://www.hostname.com... 及 我在命令

我在办公室内的本地计算机上运行Glassfish v2.1.1实例时遇到问题,在办公室中我们有一个用于传出连接的代理服务器。我最初的解决办法是在家工作

我正在公司外的HTTPS服务器上调用SOAP服务。由于Glassfish未通过公司的代理服务器,因此在尝试初始化SOAP客户端时,我会出现以下错误:

javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://www.hostname.com...


我在命令行上设置了代理环境变量,并且我的系统代理设置都正常工作,这样我就可以通过浏览器访问WSDL。我应该如何配置Glassfish?

主机无法解析,您确定您使用的主机名可由internet DNS服务器解析,还是使用只能从网络内部解析的主机名,或者更糟的是,您的计算机本地的主机条目?

除此之外,代理服务器可能会拒绝您访问某些端口,但这可能不是您目前的问题。如果代理允许访问端口80,如果出现任何连接超时错误,请尝试在端口80上运行Glassfish。

您必须明确设置代理服务器。根据Glassfish版本的不同,有几种选项可用。通常,您可以使用JVM参数或Glassfish管理控制台设置代理。GF3的简介已经提供(很抱歉只提供了一个链接,但我不想在这里重复所有的细节)。

我很难找到答案,因为这个主题在网络上没有太多的细节。一个链接告诉我如何配置HTTP代理,但没有提到HTTPS,所以我花了一段时间才弄明白

打开Glassfish服务器上的管理控制台并转到: 应用服务器->JVM设置->JVM选项。单击“添加JVM选项”4次,然后输入以下4个选项

-Dhttp.proxyHost=proxyhostname
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxyhostname
-Dhttps.proxyPort=8080
其中,proxyhostname和端口号对于您的设置是正确的。然后需要重新启动服务器

请注意,我找不到从PAC文件设置代理的任何选项,也找不到需要验证的代理的任何选项。在这种情况下,您可能需要安装本地身份验证代理处理程序,如Authoxy for Mac OS X,它将本地主机转换为非身份验证代理,并屏蔽来自中央身份验证代理的身份验证请求

此外,此链接适用于JVM的各种代理选项:

为了完成回答,如果代理需要用户名和密码,请在Glassfish中设置以下内容:

-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword

我正在通过HTTPS调用SOAP服务
-如何?通过什么web服务API?这是正确的,您链接到的站点有一些好的提示。但是,在GFv2.1中,选项必须输入为“-DhttpProxy=hostname”,而不是网站上提到的“httpProxy=hostname”。另外,它没有提到HTTPS设置,我发现它也存在于JVM设置中。请参阅我的回答中的链接用户和密码如何?
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword