隨著Internet/Intranet的發(fā)展,開發(fā)模式發(fā)生了變化,第一波重要的技術(shù)是http/html,他給Internet/Intranet和電子商務(wù)都帶來重要的影響;第二波是java技術(shù)的興起,java帶來了跨品臺(tái)的鍥機(jī),讓開發(fā)人員可以使用單一的語言和環(huán)境開發(fā)應(yīng)用系統(tǒng);第三波是xml技術(shù)的興起,它提供了標(biāo)準(zhǔn)的數(shù)據(jù)封裝,讓數(shù)據(jù)交換跨越了各種平臺(tái)、操作系統(tǒng)和各種工具,通過xml,各種數(shù)據(jù)交換不再讓人頭痛。
Webservice 的概念是使用一個(gè)標(biāo)準(zhǔn)的輸出接口來定義代碼提供的功能,以便讓外界可以通過這個(gè)標(biāo)準(zhǔn)的輸出接口來調(diào)用,而所謂的標(biāo)準(zhǔn)輸出接口就是wsdl,wsdl是一個(gè)xml組成的文件,描述了實(shí)現(xiàn)程序?qū)ν馓峁┖瘮?shù)的原型,客戶端可以通過wsdl來調(diào)用實(shí)現(xiàn)程序提供的服務(wù)代碼。在這里我不想詳細(xì)的介紹webservice的原理和概念,通過一個(gè)例子來展示新的基于網(wǎng)絡(luò)的開發(fā)模式。
在這個(gè)例子中服務(wù)端用java完成,客戶端用delphi完成,開發(fā)工具是JBuilder9和Delphi7,服務(wù)器是tomcat5.0。
首先建立服務(wù)端程序:
啟動(dòng)JBuilder建立一個(gè)工程,設(shè)置服務(wù)器為tomcat4.0(因?yàn)?/span>JBuilder9不支持tomcat5.0,實(shí)現(xiàn)后將其在tomcat5.0中發(fā)布)。
新建一個(gè)class 代碼如下:
public class HelloWorld{
public String sayHello(){
return "Hello world!";
}
public String echo(String u){
return "Hello " + u;
}
}
選擇File菜單New,在彈出的對(duì)話框中選擇web services頁中的Web Serivice Configuation Wizard,新建webapp axis并配置servers。
再次選擇File菜單,New再出現(xiàn)的窗口中選擇Export as a web service Wizard,在彈出的向?qū)е羞x擇要導(dǎo)出的類名,其它項(xiàng)直接選默認(rèn)值即可。
運(yùn)行剛才建立的程序,出現(xiàn)“JBuilder Apache Axis Admin Console”的頁面表示剛才建立的webservice成功。點(diǎn)擊View超級(jí)鏈接進(jìn)入“And now... Some Services”頁面,點(diǎn)擊HelloWorld(WSDL)的鏈接出現(xiàn)WSDL描述文件,至此webservice服務(wù)端建立完成。
將剛才建立的webservice發(fā)布到tomcat5.0中,在tomcat的webapps目錄下新建webservicetest目錄,將用JBulider建立的工程目錄下的 axis目錄下的文件全部復(fù)制到其中,重新啟動(dòng)tomcat,訪問http://localhost:8080/webservicetest/,如果看到“JBuilder Apache Axis Admin Console”頁面說明發(fā)布成功。
啟動(dòng)Delphi7新建一個(gè)工程,然后選擇新建webservices中WSDL importer向?qū)?,將剛才發(fā)布的webservice描述文件WSDL導(dǎo)入(我的地址是:http://localhost:8080/webservicetest/services/HelloWorld?wsdl)自動(dòng)生成一個(gè)單元HelloWorld1,在Unit1中使用單元HelloWorld1,在窗體上放置兩個(gè)button,在button1的Click事件中寫如下測(cè)試代碼:
procedure TForm1.Button1Click(Sender: TObject);
var
test:HelloWorld;
str:String;
begin
test := GetHelloWorld;(得到webservice提供的遠(yuǎn)程接口)
str := test.sayHello;
ShowMessage(str);
test := nil;
end;
運(yùn)行測(cè)試程序, 彈出“hello,world”說明成功。Button的測(cè)試代碼類似,我在這里不再重復(fù)。
至此,一個(gè)完成webservice程序完成,并能順利運(yùn)行。
聯(lián)系客服