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服務
獲取到城市名為:紹興
從伺服器獲取資料:晴
複製程式碼