2014-01-07 34 views
0

當我嘗試通過webservice提交請求時,出現以下異常。在web服務中獲取連接超時例外

的堆棧跟蹤如下:

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:194) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122) 
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626) 
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467) 
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:146) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129) 
    at $Proxy40.externalSearchPerson(Unknown Source) 
    at com.igniteibroker.Main.personSearch(Main.java:52) 
    at com.igniteibroker.Main.main(Main.java:64) 
Caused by: java.net.ConnectException: Connection timed out: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 
    at java.net.Socket.connect(Socket.java:579) 
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) 
    at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:378) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:473) 
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:270) 
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:327) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:974) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1090) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:105) 
    ... 15 more 

請幫我解決這個,如果你已經確定的問題。在此先感謝

+1

您是否檢查請求的URL是否可用?連接超時是由不可用的URI或慢速連接引起的。你能否檢查你是否可以直接連接到所請求的URI(即使用網絡瀏覽器)。 –

+0

嗨阿里HAMDI,我也遇到了同樣的錯誤,當我嘗試使用SoapUI工具。 並且可以完全排除網絡問題 –

+0

然後,您必須檢查Web服務的狀態,它可能不可用或不可用。 –

回答

0

如果您正在使用jersey.api

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.WebResource; 
import com.sun.jersey.api.client.config.ClientConfig; 
import com.sun.jersey.api.client.config.DefaultClientConfig; 
import com.sun.jersey.api.representation.Form; 


ClientResponse response = null; 
ClientConfig config = new DefaultClientConfig(); 
Client client = Client.create(config); 
/*client.setReadTimeout(30);*/ 
/*client.setConnectTimeout(interval)*/ 
WebResource service = client.resource(getBaseURI()); 

在客戶端類有方法client.setConnectTimeout(間隔)如果u沒有設置這個方法,然後它會嘗試進行連接無限的時間。

+0

嗨我有連接超時到2分鐘。並且我使用javax.xml.ws.client.connectionTimeout「,」200000「 –

+0

基本上這個方法接受以毫秒爲單位的值,如果分配null或0,那麼自動它將會是無限減速的間隔。 –

0

我試圖加載SoapUI中的WSDL文件。

令人驚訝的是給了我「java.lang.Exception: Failed to load url;

我認爲你正在使用https wsdl url加載此webservice

它將被密碼保護。在您的機器上本地保存您的wsdl文件並嘗試在soap ui中加載wsdl文件而不是url。

在h ttps endpoint處發送請求時,您需要提供用戶名和密碼。
soapui您可以填寫請求屬性中的用戶名和密碼在左下角。