WebService的学习一

Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。
用简单点的话说,就是系统对外的接口!
它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web
应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。


技术和规则
  在构建和使用Web Service时,主要用到以下几个关键的技术和规则:
  1.XML:描述数据的标准方法.
  2.SOAP:简单对象访问协议.
  3.WSDL:Web服务描述语言.
  4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。


1.首先集成Apacha CXF WebService 到 Spring 框架中; 
   apache cxf 下载地址:http://people.apache.org/dist/incubator/cxf/2.0.4-incubator/apache-cxf-2.0.4-incubator.zip 
  在spring context配置文件中引入以下cxf配置 
Xml代码  
<import resource="classpath*:META-INF/cxf/cxf.xml" />  
<import resource="classpath*:META-INF/cxf/cxf-extension-soap.xml" />  
<import resource="classpath*:META-INF/cxf/cxf-servlet.xml" />  


在web.xml中添加过滤器: 
Xml代码  
<servlet>  
    <servlet-name>CXFServlet</servlet-name>  
    <servlet-class>  
        org.apache.cxf.transport.servlet.CXFServlet  
    </servlet-class>  
</servlet>  
<servlet-mapping>  
    <servlet-name>CXFServlet</servlet-name>  
    <url-pattern>/services/*</url-pattern>  
</servlet-mapping> 




2.开发服务端WebService接口: 
Java代码  
/** 
 * WebService接口定义类. 
 *  
 * 使用@WebService将接口中的所有方法输出为Web Service. 
 * 可用annotation对设置方法、参数和返回值在WSDL中的定义. 
 */  
@WebService  
public interface WebServiceSample {  
  
  
    /** 
     * 一个简单的方法,返回一个字符串 
     * @param hello 
     * @return 
     */  
    String say(String hello);  
      
    /** 
     * 稍微复杂一些的方法,传递一个对象给服务端处理 
     * @param user 
     * @return 
     */  
    String sayUserName(  
            @WebParam(name = "user")   
            UserDTO user);  
      
    /** 
     * 最复杂的方法,返回一个List封装的对象集合 
     * @return 
     */  
    public   
    @WebResult(partName="o")  
    ListObject findUsers();  
  
}  


由简单到复杂定义了三个接口,模拟业务需求; 


3.实现接口 
Java代码  
/** 
 * WebService实现类. 
 *  
 * 使用@WebService指向Interface定义类即可. 
 */  
@WebService(endpointInterface = "cn.org.coral.biz.examples.webservice.WebServiceSample")  
public class WebServiceSampleImpl implements WebServiceSample {  
  
    public String sayUserName(UserDTO user) {  
        return "hello "+user.getName();  
    }  
  
    public String say(String hello) {  
        return "hello "+hello;  
    }  
  
    public ListObject findUsers() {  
        ArrayList<Object> list = new ArrayList<Object>();  
          
        list.add(instancUser(1,"lib"));  
        list.add(instancUser(2,"mld"));  
        list.add(instancUser(3,"lq"));  
        list.add(instancUser(4,"gj"));  
        ListObject o = new ListObject();  
        o.setList(list);  
        return o;  
    }  
      
    private UserDTO instancUser(Integer id,String name){  
        UserDTO user = new UserDTO();  
        user.setId(id);  
        user.setName(name);  
        return user;  
    }  
}  


4.依赖的两个类:用户对象与List对象 
Java代码  
/** 
 * Web Service传输User信息的DTO. 
 *  
 * 分离entity类与web service接口间的耦合,隔绝entity类的修改对接口的影响. 
 * 使用JAXB 2.0的annotation标注JAVA-XML映射,尽量使用默认约定. 
 *  
 */  
@XmlAccessorType(XmlAccessType.FIELD)  
@XmlType(name = "User")  
public class UserDTO {  
  
    protected Integer id;  
  
    protected String name;  
  
    public Integer getId() {  
        return id;  
    }  
  
    public void setId(Integer value) {  
        id = value;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String value) {  
        name = value;  
    }  
}  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值