HTTP transport error: Connection refused when accessing web service from Glassfish
HTTP transport error: Connection refused when accessing web service from Glassfish
我在 Glassfish 4.1 服务器上有两个应用程序 运行:一个提供 jax-ws 网络服务,另一个使用它。只要我在客户端应用程序中使用 localhost
或 127.0.0.1
作为端点,一切都很好。但是当我尝试在远程机器上安装 web 服务并访问它时,我在客户端应用程序中收到一个错误:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
但是,我可以从browser/SoapUI/Netbeans访问远程wsdl。 wsdl 的服务端口绑定部分包含有效的 host:port.
我尝试做的事情:
使用
在客户端应用程序中设置端点
(BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
- 从远程机器重做 jax-ws 导入,所以现在即使在本地 wsdl 中我也有远程主机名;
- 将注入注释更改为
@WebServiceRef(wsdlLocation = "http://remotehost:remoteport/svc/port?wsdl")
- 已检查是否已将 glassfish 侦听器配置为 IP
0.0.0.0
到目前为止,没有任何帮助。此外,当我只是将端点从 localhost
更改为同一台机器的实际主机名或 IP 时,我遇到了相同的行为。
这是异常日志(部分):
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:131)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:223)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:139)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136)
at com.sun.enterprise.security.webservices.ClientSecurityPipe.processSecureRequest(ClientSecurityPipe.java:198)
at com.sun.enterprise.security.webservices.ClientSecurityPipe.process(ClientSecurityPipe.java:186)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
at com.sun.proxy.$Proxy386.processRequest(Unknown Source)
如有任何帮助,我们将不胜感激!
我的错,原来问题是由 glassfish JVM 选项中的代理设置不正确引起的。
我在 Glassfish 4.1 服务器上有两个应用程序 运行:一个提供 jax-ws 网络服务,另一个使用它。只要我在客户端应用程序中使用 localhost
或 127.0.0.1
作为端点,一切都很好。但是当我尝试在远程机器上安装 web 服务并访问它时,我在客户端应用程序中收到一个错误:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
但是,我可以从browser/SoapUI/Netbeans访问远程wsdl。 wsdl 的服务端口绑定部分包含有效的 host:port.
我尝试做的事情:
使用
在客户端应用程序中设置端点(BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
- 从远程机器重做 jax-ws 导入,所以现在即使在本地 wsdl 中我也有远程主机名;
- 将注入注释更改为
@WebServiceRef(wsdlLocation = "http://remotehost:remoteport/svc/port?wsdl")
- 已检查是否已将 glassfish 侦听器配置为 IP
0.0.0.0
到目前为止,没有任何帮助。此外,当我只是将端点从 localhost
更改为同一台机器的实际主机名或 IP 时,我遇到了相同的行为。
这是异常日志(部分):
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:131)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:223)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:139)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136)
at com.sun.enterprise.security.webservices.ClientSecurityPipe.processSecureRequest(ClientSecurityPipe.java:198)
at com.sun.enterprise.security.webservices.ClientSecurityPipe.process(ClientSecurityPipe.java:186)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161)
at com.sun.proxy.$Proxy386.processRequest(Unknown Source)
如有任何帮助,我们将不胜感激!
我的错,原来问题是由 glassfish JVM 选项中的代理设置不正确引起的。