随着Internet/Intranet的发展,开发模式发生了变化,第一波重要的技术是http/html,他给Internet/Intranet和电子商务都带来重要的影响;第二波是java技术的兴起,java带来了跨品台的锲机,让开发人员可以使用单一的语言和环境开发应用系统;第三波是xml技术的兴起,它提供了标准的数据封装,让数据交换跨越了各种平台、操作系统和各种工具,通过xml,各种数据交换不再让人头痛。
Webservice 的概念是使用一个标准的输出接口来定义代码提供的功能,以便让外界可以通过这个标准的输出接口来调用,而所谓的标准输出接口就是wsdl,wsdl是一个xml组成的文件,描述了实现程序对外提供函数的原型,客户端可以通过wsdl来调用实现程序提供的服务代码。在这里我不想详细的介绍webservice的原理和概念,通过一个例子来展示新的基于网络的开发模式。
在这个例子中服务端用java完成,客户端用delphi完成,开发工具是JBuilder9和Delphi7,服务器是tomcat5.0。
首先建立服务端程序:
启动JBuilder建立一个工程,设置服务器为tomcat4.0(因为JBuilder9不支持tomcat5.0,实现后将其在tomcat5.0中发布)。
新建一个class 代码如下:
public class HelloWorld{
public String sayHello(){
return "Hello world!";
}
public String echo(String u){
return "Hello " + u;
}
}
选择File菜单New,在弹出的对话框中选择web services页中的Web Serivice Configuation Wizard,新建webapp axis并配置servers。
再次选择File菜单,New再出现的窗口中选择Export as a web service Wizard,在弹出的向导中选择要导出的类名,其它项直接选默认值即可。
运行刚才建立的程序,出现“JBuilder Apache Axis Admin Console”的页面表示刚才建立的webservice成功。点击View超级链接进入“And now... Some Services”页面,点击HelloWorld(WSDL)的链接出现WSDL描述文件,至此webservice服务端建立完成。
将刚才建立的webservice发布到tomcat5.0中,在tomcat的webapps目录下新建webservicetest目录,将用JBulider建立的工程目录下的 axis目录下的文件全部复制到其中,重新启动tomcat,访问http://localhost:8080/webservicetest/,如果看到“JBuilder Apache Axis Admin Console”页面说明发布成功。
启动Delphi7新建一个工程,然后选择新建webservices中WSDL importer向导,将刚才发布的webservice描述文件WSDL导入(我的地址是:http://localhost:8080/webservicetest/services/HelloWorld?wsdl)自动生成一个单元HelloWorld1,在Unit1中使用单元HelloWorld1,在窗体上放置两个button,在button1的Click事件中写如下测试代码:
procedure TForm1.Button1Click(Sender: TObject);
var
test:HelloWorld;
str:String;
begin
test := GetHelloWorld;(得到webservice提供的远程接口)
str := test.sayHello;
ShowMessage(str);
test := nil;
end;
运行测试程序, 弹出“hello,world”说明成功。Button的测试代码类似,我在这里不再重复。
至此,一个完成webservice程序完成,并能顺利运行。