WebService到底是什么?
Web Service也叫XML Web Service有缆。
WebService
是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過來的請求,輕量級(jí)的獨(dú)立的通訊技術(shù)。一言以蔽之:WebService是一種跨編程語言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)棚壁。所謂跨編程語言和跨操作平臺(tái)杯矩,就是說服務(wù)端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫袖外,反之亦然史隆!跨操作系統(tǒng)平臺(tái)則是指服務(wù)端程序和客戶端程序可以在不同的操作系統(tǒng)上運(yùn)行。
SOAP:
WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時(shí)曼验,發(fā)送的請求內(nèi)容和結(jié)果內(nèi)容都采用XML格式封裝泌射,并增加了一些特定的HTTP消息頭,以說明HTTP消息的內(nèi)容格式鬓照,這些特定的HTTP消息頭和XML內(nèi)容格式就是SOAP協(xié)議熔酷。
SOAP
提供了標(biāo)準(zhǔn)的RPC(遠(yuǎn)程過程調(diào)用協(xié)議)方法來調(diào)用Web Service。
SOAP協(xié)議= HTTP協(xié)議+ XML數(shù)據(jù)格式
打個(gè)比喻:
HTTP
就是普通公路豺裆,XML就是中間的綠色隔離帶和兩邊的防護(hù)欄纯陨,SOAP就是普通公路經(jīng)過加隔離帶和防護(hù)欄改造過的高速公路。
WebService開發(fā):
Java方面的典型WebService框架包括:axis留储,xfire翼抠,cxf等,java ee服務(wù)器通常也支持發(fā)布WebService服務(wù)获讳,例如JBoss阴颖。
java開發(fā)webservice的幾種方式
1.Axis2
2.Apche CXF
3.JDK
開發(fā)webservice
詳情請?jiān)L問以下地址
http://blog.sina.com.cn/s/blog_a0e7e34c0101959p.html
下面是一個(gè)簡單的例子:
寫在前面的話:
當(dāng)兩個(gè)人碰面后,產(chǎn)生了好感,如果需要得到雙方的信息,那么雙方的交流是必不可少的!應(yīng)用程序也如此,各個(gè)應(yīng)用程序之間的交流就需要WebService來作為相互交流的橋梁!
1、新建WebService服務(wù)端丐膝,并編寫相應(yīng)的方法量愧,以供客戶端調(diào)用,此處為getName()方法
2帅矗、編寫main方法偎肃,發(fā)布WebService服務(wù)
3、瀏覽器訪問地址(這里是http://localhost:9001/Service/Function?wsdl)浑此,確定WebService服務(wù)發(fā)布成功
4累颂、命令窗口,執(zhí)行命令凛俱,生成相關(guān)類
5紊馏、編寫客戶端測試類,調(diào)用服務(wù)端方法
(1)蒲犬、新建WebService服務(wù)端?
(2)朱监、編寫main方法,發(fā)布WebService服務(wù)
package WebService;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
?* Created by Paul on 2016/3/28.
?*/
@WebService
public class Function {
? ? /**
?? ? *該方法就是要暴露給其他應(yīng)用程序調(diào)用的方法
?? ? *供客戶端調(diào)用的方法
?? ? * @param name傳入?yún)?shù)
?? ? * @return String返回結(jié)果
?? ? */
? ? public String getName(String name){
? ? ? ? return "My name is "+name;
? ? }
? ? public static void main(String[]args){
? ? ? ? /**
?? ? ? ? * ↓↓第一句很重要原叮,用于發(fā)布服務(wù)端localhost為地址指向地址
?? ? ? ? * ↓↓ 9001為任意端口赫编,但必須未被占用
?? ? ? ? * ↓↓第二個(gè)參數(shù)new的為本類的類名
?? ? ? ? *運(yùn)行main方法相當(dāng)于發(fā)布WebService服務(wù)
?? ? ? ? */
? ? ? ? Endpoint.publish("http://localhost:9001/Service/Function",new Function());
? ? ? ? System.out.println("Publish Success~");
? ? }
}
(3)瀏覽器訪問地址(這里是http://localhost:9001/Service/Function?wsdl)巡蘸,確定WebService服務(wù)發(fā)布成功
WebService服務(wù)發(fā)布成功的截圖:
(4)命令窗口,執(zhí)行命令擂送,生成相關(guān)類
格式:wsimport -s -p <生成類所在包名> -keep
示例:
wwsimport -s D:\IdeaWork\src -p WebServiceClient.com.jin -keep
http://localhost:9001/Service/Function?wsdl
注意:
?? 1)地址不可含空格
?? 2)不要漏了'?wsdl'
命令提示窗口執(zhí)行命令截圖:
執(zhí)行完命令悦荒,生成的包結(jié)構(gòu)截圖:
(5)編寫客戶端測試類,調(diào)用服務(wù)端方法
測試類
package WebServiceClient.com.jin.test;
import WebServiceClient.com.jin.client.Function;
import WebServiceClient.com.jin.client.FunctionService;
/**
?* Created by Paul on 2016/3/28.
?*/
public class TestClient {
? ? public static void main(String[]args){
? ? ? ? //初始化對象
? ? ? ? Function function = new FunctionService().getFunctionPort();
? ? ? ? //調(diào)用對象中的方法
? ? ? ? String name = function.getName(“Paul”);
? ? ? ? //打印返回結(jié)果
? ? ? ? System.out.println(name);
? ? }
}