Web Services:是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务(来自百度百科,详情请移步http://baike.baidu.com/view/837392.htm)。
在构建和使用Web Service时,主要用到以下几个关键的技术和规则:
好了,话不多说,跨平台的咱就不多少了,在这里我们主要说说用java来实现webservice,我们简单模拟一个商城和支付的两个系统的调用,主要分三步:
一、我们要去下载xfire包,http://xfire.codehaus.org/Download,这里下载,解压之后把xfire-all-1.2.6.jar和lib文件夹下的jar包都准备好,这些都是我们需要的。
二、开发服务器端。
1、新建web项目,命名为WSService,导入刚才的jar包。
2、新建一个接口,命名为com.webservice.ws.PayService,其中只有一个方法。其代码如下:
package com.webservice.ws;
public interface PayService {
public int pay(String name,double money);
}
package com.webservice.ws.impl;
import com.webservice.ws.PayService;
public class PayServiceImpl implements PayService {
public int pay(String name, double money) {
if("admin".equals(name)){//判断用户名是否正确,(当然,数据应该从数据库来,我们这里只是模拟)
if(money < 2000){//判断余额是否足够,如果小于2000,则不足,返回1
return 1;
}else{
return 2;//余额足够,返回2
}
}
return 0;//用户名不正确,返回0
}
}
services.xml用来发布接口,其代码如下:
PayService
com.webservice.ws.PayService
com.webservice.ws.impl.PayServiceImpl
5、最后,在web.xml中配置拦截,一般都是用servlet进行配置,其代码如下:
xfireservlet
org.codehaus.xfire.transport.http.XFireConfigurableServlet
xfireservlet
/services/*
http://127.0.0.1:8081/WSService/services/PayService?wsdl,就可以看见配置信息了,wsdl就是用在这里的,用来详细说明webservice的接口信息,这里描述了我们刚才发布的那个接口,
三、开发客户端程序。我们这里用一个方法来模拟客户端程序,对刚才的服务器发布的接口进行调用。
1、新建一个项目,因为webservice是跨平台的分布式应用,所以这里用什么项目都可以,我们就用普通的java项目好了,命名为WSClient。
2、导入jar包。在项目的src下新建lib目录,将第一步的jar包导入,添加到path路径中。
3、新建一个和服务器端一样的接口。实际项目中根据WSDL可以建立,因为在wsdl文件中我们已经拿到了所需要的接口名称、返回值类型和参数列表了,代码和第二部一样,我们就不贴了。
4、实现类,对接口进行调用,代码如下:
package com.webservice.cs;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class Test {
public static void main(String[] args) {
//这个url是服务器发布的接口的地址,也是我们在WSDL中可以看见的,直接复制过来即可。
String url="http://127.0.0.1:8081/WSService/services/PayService";
//新建Service服务接口模板
Service service = new ObjectServiceFactory().create(PayService.class);
//创建代理工厂
XFireProxyFactory factory = new XFireProxyFactory( XFireFactory.newInstance().getXFire());
try {
//在这里调用方法
PayService ps = (PayService) factory.create(service, url);
String name="admin";
double money = 2100;
int rs = ps.pay(name, money);
switch (rs) {
case 0:
System.out.println("用户名不存在,请核实");
break;
case 1:
System.out.println("支付成功");
break;
case 2:
System.out.println("支付失败【余额不足】");
break;
default:
System.out.println("支付失败【原因未知】");
break;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
最后运行程序,就能看到运行结果了。在这里,用一个项目去调用另外一个项目,写的比较简单,只有一个方法,但是在实际项目中是一样的用法。
好了,webservice就先写这么多,以后有需求再进行补充。