天天看點

JAX-WS 學習二:建立用戶端

上一節中介紹了怎麼基于JAX-WS的API建立服務端,這一節介紹一下建立一個用戶端調用WebService服務。

要建立一個Client端也相當簡單,不過需要知道幾個東西:

1. wsdl檔案路徑

需要讀取服務端提供的wsdl定義檔案。例如:

Java代碼

JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
  1. URL url = new URL("http://localhost:8088/calculate?wsdl");   

2. 要調用的Service的QName

一個wsdl中可能定義了多個Service,是以需要指定要調用的service名。例如:

Java代碼

JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
  1. QName qName = new QName("http://test/",   
  2.                 "CalculatorImplService");   

3. 建立Service

有了wsdl的service的qname以後,就可以建立對應的service對象了:

Java代碼

JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
  1. Service service = Service.create(url, qName);   

4. 取得相應的Port

有了Service,然後就可以取得Service中的某個Port,例如:

Java代碼

JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
  1. Calculator port = service.getPort(Calculator.class);  

 這裡有幾點可能需要說明:

    1. getPort()方法的參數:這個方法總是需要指定一個serviceEndpointInterface的類對象serviceEndpointInterface類需要加@WebService的annotation
    2. serviceEndpointInterface的targetNamespace需要比對對應的portType的namespace。預設是"http://包名/",必要時需要定義@WebService的targetNamespace屬性加以改變
    3. serviceEndpointInterface的name總是需要比對要調用的PortType的name。預設是類名,必要時需要指定@WebService的name屬性加以改變
    4. serviceEndpointInterface中需要有對應于要調用的operation的方法定義
    5. 最後調用方法

5. 調用方法

最後相應的資訊都取到以後,就可以調用希望的方法了,例如:

Java代碼

JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
JAX-WS 學習二:建立用戶端
  1. System.out.println(port.add(1, 2));