2013-10-23 52 views
2

我從http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/是不是在JAX-WS有效的服務異常

採取參考這是我HelloWorldClient

package WebService; 


import java.net.URL; 
import javax.xml.namespace.QName; 
import javax.xml.ws.Service; 



public class HelloWorldClient{ 

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

    URL url = new URL("http://localhost:8099/dummy1/dummy2?wsdl"); 

     //1st argument service URI, refer to wsdl document above 
    //2nd argument is service name, refer to wsdl document above 
     QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService"); 


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

     HelloWorld hello = service.getPort(HelloWorld.class); 

     System.out.println(hello.getHelloWorldAsString("mkyong")); 

    } 

} 

當運行這個類我從下面的代碼行收到錯誤

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

的錯誤是

Exception in thread "main" javax.xml.ws.WebServiceException: {http://localhost:8099/dummy1/dummy2?wsdl}HelloWorldImplService is not a valid service. Valid services are: {http://WebService/}HelloWorldImplService 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:220) 
    at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:165) 
    at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:93) 
    at javax.xml.ws.Service.<init>(Service.java:56) 
    at javax.xml.ws.Service.create(Service.java:680) 
    at WebService.HelloWorldClient.main(HelloWorldClient.java:19) 

在參考示例中HelloWorldClient類有

QName qname = new QName("http://ws.mkyong.com/", "HelloWorldImplService"); 

在我的情況我有

QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService"); 

取代它,我無法找出我在那裏犯的錯誤。當我運行 http://localhost:8099/dummy1/dummy2?wsdl它工作的很好。但是,當我從客戶端訪問我得到上面提到的異常。請任何幫助嗎?

回答

0

我還沒有嘗試過,但我相信QName實例化中的第一個參數應該沒有那個?wsdl。您被要求提供名稱空間,而不是WSDL文檔的URI。

3

嘗試更換

QName qname = new QName("http://localhost:8099/dummy1/dummy2?wsdl", "HelloWorldImplService"); 

QName qname = new QName("http://WebService/", "HelloWorldImplService"); 
+0

它已經在錯誤信息:'有效的服務宗旨是:{HTTP://的WebService /}' –

0

錯誤消息告訴您解決什麼:

有效的服務宗旨是:{http://WebService/}HelloWorldImplService

對我下面的是必要的:

QName qname = new QName("http://WebService/" , "HelloWorldImplService"); 
1

這裏是我的食譜來解決這個問題:

1.運行由Mkyong書面出版商類;

2.在瀏覽器中打開url(例如:http:// localhost:8099/dummy1/dummy2?wsdl)

3.檢查WSDL中的「targetNamespace」屬性是否等於QName構造函數中的第一個參數。如果沒有,請從WSDL進行設置;

4.檢查WSDL中的「name」屬性是否等於QName構造函數中的第二個參數。如果沒有,請從WSDL進行設置;

5.停止客戶端和發佈者;

6.運行發佈者;

7.運行客戶端;

8。享受結果=)

0

我解決了這個問題。我創建了WebServiceClient和WebServices項目。 而相同的文件: WebServiceClient此類:: webservices.HelloWorld.java webservices.HelloWorldClient.java

WebServices :: 
webservices.HelloWorld.java 
webservices.HelloWorldImpl.java 
webservices.HelloWorldPublisher.java 

I used NetBeans 8. In both project must have same name of package and 

QName qname = new QName("http://webservices/", "HelloWorldImplService"); 
in webservices.HelloWorldClient.java. 
The end. It runs ! Sorry My english. (Bobojonov Farruh) 
相關問題