webservice基本原理 webservice工作原理



文章插圖
webservice基本原理 webservice工作原理

文章插圖
webservice簡介:
Web Service技術 ,  能使得運行在不同機器上的不同應用無須借助附加的、專門的第三方軟件或硬件 ,  就可相互交換數據或集成 。依據Web Service規范實施的應用之間 ,  無論它們所使用的語言、 平臺或內部協議是什么 ,  都可以相互交換數據 。Web Service是自描述、 自包含的可用網絡模塊 ,  可以執行具體的業務功能 。Web Service也很容易部署 ,  因為它們基于一些常規的產業標準以及已有的一些技術 , 諸如標準通用標記語言下的子集XML、HTTP 。Web Service減少了應用接口的花費 。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制
一、 WebService生成
1.在eclipse或myclipse新建一個Web項目 , 并新建一個class類 , 用于發布;
2.編寫供客戶端調用的方法 , 即編譯方法代碼;
示例:
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* Title: ServiceHello
* Description: 基于jdk1.6以上的javax.jws 發布webservice接口
@WebService - 它是一個注解 , 用在類上指定將此類發布成一個ws 。
Endpoint – 此類為端點服務類 , [email protected]?
對象綁定到一個地址的端口上 。
* Version:1.0.0
* @author panchengming
*/
@WebService
public class JwsServiceHello {
/** 供客戶端調用方法 該方法是非靜態的 , 會被發布
* @param name 傳入參數
* @return String 返回結果
* */
public String getValue(String name){
return “歡迎你! “+name;
}
/**
* [email protected](exclude=true)后 , 此方法不被發布;
* @param name
* @return
*/
@WebMethod(exclude=true)
public String getHello(String name){
return “你好! “+name;
}
/** 靜態方法不會被發布
* @param name
* @return
*/
public static String getString(String name){
return “再見!”+name;
}
//通過EndPoint(端點服務)發布一個WebService
public static void main(String[] args) {
/*參數:1,本地的服務地址;
2,提供服務的類;
*/
Endpoint.publish(“http://192.168.1.105:8080/Service/ServiceHello”, new JwsServiceHello());
System.out.println(“發布成功!”);
//發布成功后 在瀏覽器輸入http://192.168.1.105:8080/Service/ServiceHello?wsdl
}
}
3.進行編譯運行(注:失敗檢查jdk版本)
4.將所設地址加上?wsdl到瀏覽器上訪問 , 如出現XML格式代碼 , 則發布成功 , 反之 , 則否;(url:http://192.168.1.105:8080/Service/ServiceHello?wsdl)
二、WebService調用方法
生成代碼方式一
1.新建一個class類 , 用于調用webservice 。右鍵src , 找到Web Service Client , 并輸入wsdl地址 , 選擇下載代碼的路徑;(url:http://192.168.1.105:8080/Service/ServiceHello?wsdl)
2.將地址上的文件下載下來(注意和發布JDK一致);
3.寫調用方法調用下載下來的WebService中的java類中的方法;
示例:
import com.pcm.ws.jws.JwsServiceHello;
import com.pcm.ws.jws.JwsServiceHelloService;
/**
*
* Title: JwsClientHello
* Description: webService 客戶端調用
* Version:1.0.0
* @author panchengming
*/
public class JwsClientHello {
public static void main(String[] args) {
//調用webservice
JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
String name=hello.getValue(“panchengming”);
System.out.println(name);
}
}
生成代碼方式二
1.創建Web Service Project , 命名為TheClient 。
2.在dos命令下輸入 wsimport -s “src目錄” -p “生成類所在包名” -keep “wsdl發布地址”
示例:wsimport -s G:workspacewebServicewebService_Projectsrc -p com.pcm.ws.jws -keephttp://192.168.1.105:8080/Service/ServiceHello?wsdl
3.成功則返回 parsing WSDL…
generating code…
compiling code…
4.刷新項目 , 生成類;
5,寫調用方法(同上);
三、總結:
如何發布一個Web服務:
a,[email protected]
(注:此注解是jdk1.6提供的 , 位于javax.jws.WebService包中)
b,通過EndPoint(端點服務)發布一個WebService
(注:EndPoint是jdk提供的一個專門用于發布服務的類 , 該類的publish方法接收兩個參數 , 一個是本地的服務地址 , 二是提供服務的類 。位于 javax.xml.ws.Endpoint包中)
c , 注:
[email protected] , 類中所有非靜態方法都會被發布;
靜態方法和final方法不能被發布;
【webservice基本原理 webservice工作原理】[email protected](exclude=true)后 , 此方法不被發布;