2016-10-05 5 views
0

私はhttps Webサービスにjarでアクセスしています。サービスが作成され、ポートもインスタンス化されますが、次のエラーが発生します。SOAP:リモートメソッドへの呼び出しができません。リモートホストは応答しません

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: A remote host did not respond within the timeout period. 

キーストアに追加の証明書は、私は私のjarファイルを介してアクセスしていたWebサービスのURLとは異なるCNを持っていたとして、私はすべてのホスト名を確認するためのHostnameVerifierをオーバーライドしていますのでご注意ください。

私が使用しているツールはCXFです。以下は完全なスタックトレースです。

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: A remote host did not respond within the timeout period. 
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:133) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:154) 
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:95) 
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:117) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:599) 
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:558) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:543) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:440) 
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:223) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:136) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:110) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:90) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:119) 
    at com.sun.proxy.$Proxy25.transferFileService(Unknown Source) 
    at com.mywsclient.cxf.transfer.FileTransfer.transferToWebService(FileTransfer.java:183) 
    at com.mywsclient.cxf.transfer.FileTransfer.run(FileTransfer.java:236) 
    at java.lang.Thread.run(Thread.java:738) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:908) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:931) 
    at java.lang.Thread.run(Thread.java:738) 
Caused by: java.net.ConnectException: A remote host did not respond within the timeout period. 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:381) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:243) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:230) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:377) 
    at java.net.Socket.connect(Socket.java:539) 
    at java.net.Socket.connect(Socket.java:488) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:424) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:538) 
    at com.ibm.net.ssl.www2.protocol.https.c.<init>(c.java:64) 
    at com.ibm.net.ssl.www2.protocol.https.c.a(c.java:65) 
    at com.ibm.net.ssl.www2.protocol.https.d.getNewHttpClient(d.java:15) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:978) 
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:32) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1043) 
    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:79) 
    at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:121) 
    ... 19 more 
+0

は正しいエンドポイントですか? – Reimeus

+0

@Reimeus私は、サービスオブジェクトを作成しているときにURLを指定しています.WSDLをダウンロードしています。リモートメソッドを呼び出すときに同じURLが引き継がれると思います。 –

+0

@Reimeusは問題を抱えていましたが、データベースからURLを動的にロードしていました。ダウンロードされたwsdlのエンドポイントに到達できなかった別のエンドポイントがありました.wsdlが解決した同じURLでエンドポイントをオーバーライドしました。 –

答えて

0

が最後に問題を解決し、慣れたエンドポイントは、WSDLは、WSDLを持っていたし、それが働いたURLと同じに上書きするlocated.ManagedたURLよりも異なっていた。(ポイントは注意します、私はwsdlを見つけるために動的URLを使用していました).Belowはエンドポイントを設定するコードです。

BindingProvider bp = (BindingProvider) port; 
Map<String, Object>req_context_map=bp.getRequestContext(); 
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, my_url); 

乾杯。

関連する問題