2016-06-09 258 views
0

你好,我正在嘗試在Java中設置一個簡單的WSDL程序,但我得到以下錯誤,任何建議?我對此很新,而這個計劃是我的第一個。無法訪問WSDL

謝謝

package de.vs.webServices.clientSide; 

import java.net.URL; 
import java.util.Scanner; 

import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 

import de.vs.webServices.serverSide.ZeichenketteInt; 

public class ZeichenketteClient { 

public static void main(String[] args) throws Exception { 

URL url = new URL("http://localhost:9999/vs/Zeichenkette?wsdl"); 

QName qname = new  QName("http://serverSide.webServices.vs.de/","ZeichenketteImplService"); 

Service service = Service.create(url, qname); 

ZeichenketteInt zeichenketteInt = service.getPort(ZeichenketteInt.class); 

Scanner sc = new Scanner(System.in); 
int nr=0; 
do { 
    System.out.println("Waehlen Sie die Nummer eines Befehls oder 0 um das Programm zu beenden: "); 
    System.out.println("1. Zeichen Doppeln"); 
    System.out.println("2. Zeichenkette Verdoppeln"); 
    System.out.println("3. ZeichenketteSpiegeln"); 
    System.out.println("4. ZeichenketteLange"); 
    nr = sc.nextInt(); 
    String zeichenkette = null; 
    switch (nr) { 
    case 1: 
     System.out 
       .println("Schreiben Sie die gewunschte Zeichenkette: "); 
     zeichenkette = sc.next(); 
     System.out.println("Ergebnis: " 
       + zeichenketteInt.zeichenDoppeln(zeichenkette)); 
     break; 
    case 2: 
     System.out 
       .println("Schreiben Sie die gewunschte Zeichenkette: "); 
     zeichenkette = sc.next(); 
     System.out.println("Ergebnis: " 
       + zeichenketteInt.zeichenKetteVerdoppeln(zeichenkette)); 

     break; 
    case 3: 
     System.out 
       .println("Schreiben Sie die gewunschte Zeichenkette: "); 
     zeichenkette = sc.next(); 
     System.out.println("Ergebnis: " 
       + zeichenketteInt.zeichenKetteSpiegeln(zeichenkette)); 
     break; 
    case 4: 
     System.out 
       .println("Schreiben Sie die gewunschte Zeichenkette: "); 
     zeichenkette = sc.next(); 
     System.out.println("Ergebnis: " 
       + zeichenketteInt.zeichenKetteLange(zeichenkette)); 
     break; 
    } 
} while (nr!=0); 
sc.close(); 

}}

這是錯誤,我得到:

 Exception in thread "main" javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://localhost:9999/vs/Zeichenkette?wsdl. It failed with: 
    Connection refused: connect. 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(Unknown Source) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source) 
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source) 
    at javax.xml.ws.Service.<init>(Unknown Source) 
    at javax.xml.ws.Service.create(Unknown Source) 
    at de.vs.webServices.clientSide.ZeichenketteClient.main(ZeichenketteClient.java:19) 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(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.<init>(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.plainConnect0(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.getInputStream0(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at java.net.URL.openStream(Unknown Source) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.createReader(Unknown Source) 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(Unknown Source) 
    ... 12 more 
+0

請檢查服務,該服務可能無法在給定的詳細信息上運行。 – Rao

回答

0

錯誤的,說的部分: 「被拒絕:連接」 是告訴你服務器(本例中爲localhost)拒絕你的連接請求。

我會檢查URI:http://localhost:9999/vs/Zeichenkette?wsdl實際上是否返回一個WSDL文檔。只需在網頁瀏覽器中打開它,看看你回來了什麼。如果瀏覽器無法打開它,Java也不能。一旦瀏覽器打開它,Java應該沒有問題(雖然它偶爾會發生,瀏覽器讀取它很好,Java中的權限會阻止你,但這似乎並不是這些情況之一)。

然後我建議看看確保服務器端口是開放的(IPTables,AV,像這樣的東西可以阻止它)。請注意,這不可能是您的問題,因爲錯誤正在讀取WSDL。在WSDL加載後,我期待着。