最近用JAX-WS2.0开发一个WebService 客户端,访问普通http没有什么问题,但当访问 HTTPS时老是提示 HTTP transport error: Connection refused的错误,如下:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:119) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:128) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:74) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:581) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:540) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:525) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:422) at com.sun.xml.internal.ws.client.Stub.process(Stub.java:235) at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:120) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:230) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:103)我用Myeclipse10 带的“Test with Web Services Explorer”工具或SOAPUI工具测试,不管是HTTP还是HTTPS都可以得到正确的结果,就觉得奇怪了,到底哪里出了问题。
后来google 了一把,发现以下2篇文章,比较有用
文中都提到了要 覆盖 BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
修改了代码,问题解决。
如:
String wnsaddr = ""
One_Service service = new One_Service();
Wsport port = service.getPort(Wsport.class);
((BindingProvider) port).getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wnsaddr);port.dosomething();