我已經通過執行命令產生的JAX-WS客戶生成的文件在一個jar(clentjaxw.jar
),我用它作爲導入的庫,在eclipse項目中進行一些測試。JAX-WS客戶問題
事實是,我能夠讓我的測試沒有問題,但是當我提供了一個collegue的clientjaxw.jar
他有執行過程中出現以下錯誤:
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(Unknown Source) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source) at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source) at com.sun.xml.internal.ws.client.Stub.process(Unknown Source) at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) at $Proxy29.bookTreatment(Unknown Source) at test.TestJaxWS.main(TestJaxWS.java:32) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) ... 15 more
我不明白的問題:不過同事也可以在瀏覽器中將該服務可視化並ping本地運行。而且我已經檢查過他沒有代理。
你對這個問題的原因有一些想法嗎?
更新: 我要補充新的細節:我已經發現,collegue能夠訪問,通過瀏覽到:http://localhost:8585/active-bpel/services/HealthMobilitySequence?wsdl,但如果他試圖訪問指向:http://127.0.0.1: 8585/active-bpel/services/HealthMobilitySequence?wsdl或者使用ip地址代替localhost失敗的IP地址。在我的機器上,我沒有這樣的問題,我可以訪問所有的可能性:本地主機,機器名稱,127.0.0.1,ipaddress。
所以我認爲這可能是問題,我的意思是我想通過java,url http://localhost:8585/active-bpel/services/HealthMobilitySequence被翻譯之前,打開一個Java套接字連接,在一個新的使用IP地址(或127.0.0.1)本地主機和訪問失敗。所以看起來問題是由於操作系統,因爲我們共享完全相同的配置作爲操作系統的一部分(在我的機器上贏得XP,在他的機器上贏得Vista)。
有些想法?由於
UPDATE:嗨再次,由於某種原因,更改計算機(通常是64位)的collegue解決了我所描述的問題。無論如何,他有另一個問題,不依賴於客戶端,因爲他也通過調用使用Eclipse Web瀏覽器經歷相同的。 例外的是以下內容: java.lang.ClassCastException:com.sun.xml.internal.messaging.saaj.soap.ver1_1.Envelope1_1Impl不能轉換爲java.lang.String
org.apache.axis.SOAPPart.getAsString(SOAPPart.java:554)
org.apache.axis.SOAPPart.writeTo(SOAPPart.java:322)
org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269)
org.apache.axis.Message.writeTo(Message.java:539)
org.apache.axis.transport.http.AxisServlet.sendResponse(AxisServlet.java:902)
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:777)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
請小心他打算調用的Web服務是部署在Tomcat 5.5.27中運行的ActiveBPEL(5.0.2版本)中的一個bpel流程。而且它的配置如下:OP:windows 7,jdk:1.6,arch:64位,而我的是:OP:windows xp,jdk:1.6,arch:32位。 你對這個問題有些想法嗎?
在此先感謝
這聽起來像一個配置問題。我會檢查你的同事是否安裝了IPv4(有關詳細信息,請參閱[本文](http://serverfault.com/questions/4689))。 – McDowell