WebService的概念和基本使用

楓葉梨花發表於2018-09-22

WebService

WebService即Web服務。它採用標準的SOAP協議傳輸,採用WSDL作為描述語言的跨程式語言和跨作業系統的遠端呼叫技術,主要可以進行資源共享。

WebService三要素

WebService三要素為SOAP、WSDL、UDDI。SOAP用來描述傳遞資訊的格式; WSDL用來描述如何訪問具體的介面,可以理解為WebService的使用說明書;UDDI目錄服務,用來管理,分發,查詢WebService 。

SOAP協議

WebService中比較重要的是SOAP協議。SOAP協議即是簡單物件訪問協議,是交換資料的一種協議規範,是一種輕量的、簡單的、基於XML的協議。它是通過HTTP來交換資訊,簡單理解為SOAP=HTTP+XML。

SOAP協議訊息結構

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>

</soap:Header>
<soap:Body>
<soap:Fault>
</soap:Fault>
</soap:Body>
</soap:Envelope>
複製程式碼

WebService的基本使用

1、編寫天氣查詢介面

public interface WeatherService {
	public String queryWeather(String cityName);
}
複製程式碼

2、實現天氣查詢介面

import javax.jws.WebService;

@WebService
public class WeatherServiceImpl implements WeatherService {
	//天氣預報查詢
	@Override
	public String queryWeather(String cityName) {
		System.out.println("獲取到城市名為:"+cityName);
		String result = "晴";
		return result;
	}
}
複製程式碼

3、釋出服務

import javax.xml.ws.Endpoint;

public class Server {
	public static void main(String[] args) {
		//釋出天氣查詢服務
		Endpoint.publish("http://127.0.0.1:22222/weather",
				new WeatherServiceImpl());
		
		System.out.println("釋出WebService服務");
	}
}
複製程式碼

4、生成客戶端呼叫程式碼

//可以根據wsdl文件生成客戶端呼叫程式碼的工具
//在命令列中輸入以下命令即可生成
wsimport -s . http://127.0.0.1:22222/weather?wsdl

/*
 * wsimport
 * -d<目錄>   將生成.class檔案
 * -s<目錄>   將生成.java檔案
 * -p<生成的新包名> 將生成的類,放於指定的包下。
 */
 
 //生成以下Java檔案
 /*
 ObjectFactory.java
 package-info.java
 QueryWeather.java
 QueryWeatherResponse.java
 WeatherServiceImpl.java
 WeatherServiceImplService.java
*/
複製程式碼

5、編寫客戶端呼叫

import com.plf.webservice.WeatherServiceImpl;
import com.plf.webservice.WeatherServiceImplService;

public class Client {

	public static void main(String[] args) {
		//建立服務檢視
		WeatherServiceImplService weatherInterfaceImplService =
		    new WeatherServiceImplService();
		//通過服務檢視得到服務端點
		WeatherServiceImpl weatherInterfaceImpl = 
		    weatherInterfaceImplService.getWeatherServiceImplPort();
		//呼叫webservice
		String result = weatherInterfaceImpl.queryWeather("紹興");
		System.out.println("從伺服器獲取資料:"+result);
	}
}
複製程式碼

6、結果

釋出WebService服務
獲取到城市名為:紹興


從伺服器獲取資料:晴
複製程式碼

相關文章