Web服务可以';不能用Java代码访问,但它的wsdl通常可以从Chrome中看到
大家好 我遇到了一个非常奇怪的问题。我已经用Netbeans编写了一个web服务示例。在Netbeans IDE中,web服务客户端和web服务运行流畅,但速度稍慢。但是在Tomcat7.0上部署之后,客户端无法正常评估web服务 wsdl的url是Web服务可以';不能用Java代码访问,但它的wsdl通常可以从Chrome中看到,java,web-services,soap,netbeans,wsdl,Java,Web Services,Soap,Netbeans,Wsdl,大家好 我遇到了一个非常奇怪的问题。我已经用Netbeans编写了一个web服务示例。在Netbeans IDE中,web服务客户端和web服务运行流畅,但速度稍慢。但是在Tomcat7.0上部署之后,客户端无法正常评估web服务 wsdl的url是http://221.207.220.12:7001/InterWebService/InterService.wsdl?wsdl,可以通过Chrome看到 以下是例外信息: Exception in thread "main" com.sun.xm
http://221.207.220.12:7001/InterWebService/InterService.wsdl?wsdl
,可以通过Chrome看到
以下是例外信息:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection timed out: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:117)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:208)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:1121)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:1035)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:448)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
at com.sun.proxy.$Proxy32.news(Unknown Source)
at Main.news(Main.java:19)
at Main.main(Main.java:13)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
at sun.net.www.http.HttpClient.New(HttpClient.java:308)
at sun.net.www.http.HttpClient.New(HttpClient.java:326)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1167)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1146)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:997)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:931)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1281)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1256)
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:104)
... 15 more
Java Result: 1
BUILD SUCCESSFUL (total time: 23 seconds)*
线程“main”com.sun.xml.internal.ws.client.ClientTransportException中的异常:HTTP传输错误:java.net.ConnectException:连接超时:连接
位于com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:117)
位于com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:208)
在com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130)上
位于com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95)
位于com.sun.xml.internal.ws.api.pipe.Fiber.\uuu-doRun(Fiber.java:1121)
位于com.sun.xml.internal.ws.api.pipe.Fiber.\u-doRun(Fiber.java:1035)
位于com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004)
位于com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862)
位于com.sun.xml.internal.ws.client.Stub.process(Stub.java:448)
位于com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178)
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
位于com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
位于com.sun.proxy.$Proxy32.news(未知来源)
在Main.news(Main.java:19)
Main.Main(Main.java:13)
原因:java.net.ConnectException:连接超时:连接
位于java.net.DualStackPlainSocketImpl.connect0(本机方法)
位于java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:589)
位于java.net.Socket.connect(Socket.java:538)
位于sun.net.NetworkClient.doConnect(NetworkClient.java:180)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
位于sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
http.HttpClient.(HttpClient.java:211)
http.HttpClient.New(HttpClient.java:308)
http.HttpClient.New(HttpClient.java:326)
位于sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1167)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1146)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:997)
位于sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:931)
位于sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1281)
位于sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1256)
位于com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:104)
... 还有15个
Java结果:1
生成成功(总时间:23秒)*
找人帮忙!提前感谢。听起来您需要将代理配置到Java客户端代码中。你可以这样做
String proxyHost = "192.168.2.2";
String proxyPort = "3128";
System.out.println("Setting up with proxy: " + proxyHost + ":" + proxyPort);
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
假设您的代理位于“192.168.2.2:3128”。我相信,在您访问任何HTTP连接之前,您需要在启动时这样做一次。听起来您需要将代理配置到Java客户端代码中。你可以这样做
String proxyHost = "192.168.2.2";
String proxyPort = "3128";
System.out.println("Setting up with proxy: " + proxyHost + ":" + proxyPort);
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
假设您的代理位于“192.168.2.2:3128”。我相信,在您访问任何HTTP连接之前,您需要在启动时这样做一次。听起来您需要将代理配置到Java客户端代码中。你可以这样做
String proxyHost = "192.168.2.2";
String proxyPort = "3128";
System.out.println("Setting up with proxy: " + proxyHost + ":" + proxyPort);
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
假设您的代理位于“192.168.2.2:3128”。我相信,在您访问任何HTTP连接之前,您需要在启动时这样做一次。听起来您需要将代理配置到Java客户端代码中。你可以这样做
String proxyHost = "192.168.2.2";
String proxyPort = "3128";
System.out.println("Setting up with proxy: " + proxyHost + ":" + proxyPort);
System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
假设您的代理位于“192.168.2.2:3128”。我相信,在您访问任何HTTP连接之前,您需要在启动时这样做一次。我也遇到过类似的问题,并找到了以下根本原因: 在调查问题的根本原因时,发现wsdl文件中“wsdl:port”元素的“soap:address”引用的url与调用web服务的url不匹配。根据SOAP规范,这是不正确的
在我们的环境中,“soap:address”指的是wsdl文件中的“反向代理”url(即“xxx.com:9040/service.asmx”),它不是我们试图访问Ace服务的实际url(即“xxx.com/service.asmx”)我也遇到了类似的问题,并找到了如下根本原因: 在调查问题的根本原因时,发现wsdl文件中“wsdl:port”元素的“soap:address”引用的url与调用web服务的url不匹配。根据SOAP规范,这是不正确的