上一節中介紹了怎麼基于JAX-WS的API建立服務端,這一節介紹一下建立一個用戶端調用WebService服務。
要建立一個Client端也相當簡單,不過需要知道幾個東西:
1. wsdl檔案路徑
需要讀取服務端提供的wsdl定義檔案。例如:
Java代碼
- URL url = new URL("http://localhost:8088/calculate?wsdl");
2. 要調用的Service的QName
一個wsdl中可能定義了多個Service,是以需要指定要調用的service名。例如:
Java代碼
- QName qName = new QName("http://test/",
- "CalculatorImplService");
3. 建立Service
有了wsdl的service的qname以後,就可以建立對應的service對象了:
Java代碼
- Service service = Service.create(url, qName);
4. 取得相應的Port
有了Service,然後就可以取得Service中的某個Port,例如:
Java代碼
- Calculator port = service.getPort(Calculator.class);
這裡有幾點可能需要說明:
-
- getPort()方法的參數:這個方法總是需要指定一個serviceEndpointInterface的類對象serviceEndpointInterface類需要加@WebService的annotation
- serviceEndpointInterface的targetNamespace需要比對對應的portType的namespace。預設是"http://包名/",必要時需要定義@WebService的targetNamespace屬性加以改變
- serviceEndpointInterface的name總是需要比對要調用的PortType的name。預設是類名,必要時需要指定@WebService的name屬性加以改變
- serviceEndpointInterface中需要有對應于要調用的operation的方法定義
- 最後調用方法
5. 調用方法
最後相應的資訊都取到以後,就可以調用希望的方法了,例如:
Java代碼
- System.out.println(port.add(1, 2));