欢迎来到:http://observer.blog.51cto.com

一:webService背景
   webservcie是可以跨语言跨平台开发的一种技术,各种计算机语言都可以搭建服务器,同时各种计算机语言也可以开发客户端。只要有服务器,不管是用java还是C++抑或是php搭建的,其他语言都可以根据其开放的wsdl开发好客户端,然后调用其方法就像调用本地本项目的方法一样。

   说到webService,就涉及到XML还有wsdl。
   简单的说,wsdl就是xml的一个标准,他标准着xml应该怎样写,才能够让我的程序使用,他们的关系就像java中的接口与实现接口的类一样(当然有不一样的,不要钻牛角尖了),打个比喻,我拥有这个wsdl的引用,你的xml必须实现我的wsdl上的东西,我才能够识别并使用你的xml。
   wsdl跟xml涉及太多,在此就不再多说了(也许以后会写些东西,但现在不谈),有兴趣的朋友可以上网搜一下有关文章跟视频,就算你不懂wsdl跟xml,但是搭建webServcie还是可以的。
   搭建webService的方式有很多,使用jdk自带的API都可以做到,有兴趣的朋友可以查看文章:http://duyunfei.iteye.com/blog/1110560
   使用jdk自带的利与弊我就不多说了,毕竟他的存在就有他存在的理由。
   好了进入正题,使用现在比较流行的CXF框架搭建webService。
   使用框架,我有两种方式,一种是使用现在越来越流行的maven工具,一种当然就是下载jar包,然后导进去搭建。在此两种方式一并奉上。
二:maven搭建webService
第一步:当然是搭建maven开发环境与用maven新建web项目了,我的项目名为:webServiceCXF,但是这个太多,在此不多说,想要在此学习maven的朋友可能要失望了,也许以后会写点东西介绍下吧!
第二步新建好项目之后引入相关包
   在项目的pom.xml文件中的标签中加入cxf的jar包配置,我的配置如下:


    UTF-8
    3.1.1.RELEASE


    
        junit
        junit
        4.11
    
    
    
        org.springframework
        spring-core
        ${spring.version}
    
    
        org.springframework
        spring-orm
        ${spring.version}
    
    
        org.springframework
        spring-aop
        ${spring.version}
    
    
        org.springframework
        spring-beans
        ${spring.version}
    
    
        org.springframework
        spring-context
        ${spring.version}
    
    
        org.aspectj
        aspectjweaver
        1.6.10
    
    
        cglib
        cglib-nodep
        2.1_3
    
    
    
    
        org.apache.cxf
        cxf-bundle
        2.5.0
        
        
            
                asm
                asm
            
        
    
    

   在此也许会有人会问,为什么还要加上spring的包?一,cxf框架依赖于spring。二,maven会自动导进依赖,但是在给cxf导进spring依赖时,我这里却只导进了一些依赖标准文件,实际没有导进jar包,所以必须加上去,也许有些朋友的maven版本或者导进的cxf包版本不一样,产生的效果会不一样也说不定。

第三步配置web.xml
   在src——>main——>webspp——>WEB-INF中的web.xml中加上cxf的servlet跟cxf的全局变量与cxf的配置文件,我的web.xml配置如下:



    myserviceCXF
    
    
        webAppRootKey
        limg.cxf.example
    
    
    
        contextConfigLocation
        classpath*:/cxf.xml
    
    
    
        Apache CXF Endpoint
        cxf
        cxf
        org.apache.cxf.transport.servlet.CXFServlet
        1
    
    
        cxf
        /services/*
    
    
    
        60
    
    
        index.jsp
    

第四步定义接口
   我的接口如下:

package com.observer.cxf.service;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(targetNamespace="http://www.observer.com/service",serviceName="GradeService")
public interface GradeService {
    @WebMethod(operationName="getGradeName")
    @WebResult(name = "result")
    public String getGradeName(@WebParam(name = "toid")long toid);
}

   以上配置中,加上去的标签是用于webService生成wsdl用的,定义方法名,service名等,这里值得注意的是targetNamespace的值,要是没有他,那么系统会默认为你的包名,如果是这样,那么你对外开放方法之后,在wsdl中和客户端中都会暴露你的服务器的包路径,这个就危险了,所以强烈建议改成自己所希望显示的。在此,各位朋友大可以自己动手试试。
第五步定义实现类
   我的实现类定义如下:

package com.observer.cxf.service;
import javax.jws.WebService;
@WebService(endpointInterface = "com.observer.cxf.service.GradeService")
public class GradeServiceImpl implements GradeService {
    public String gradeName(long toid) {
        return "is succeed";
    }
}

   以上配置endpointInterface中的字符串为自己定义的webservice接口。
第六步配置cxf.xml文件
   在maven管理中,配置文件放在了src/main/resources中,如果没有这个文件夹,自己创建即可。在此文件夹下新建文件:cxf.xml,其中我的配置如下:




                                                                                                                                                                                                                      
    
    
    
    
    
        
            
        
    
    

   以上配置,一种为另外定义一个bean,然后放进去,一种是直接在server中放进去,个人所需,自己选择吧!在此,如果另外定义了bean,比如说:使用spring的注释定义了一个class bean,那么就可以直接使用第一种方式加进去就可以了。
第七步:部署与测试
   启动tomcat,然后将你的项目部署上去,访问web下定义的servlet,比如说我的访问:http://localhost:8080/webServiceCXF/services得到如下:

CXF搭建webService服务器(maven or jar)_第1张图片

   然后点击:{http://service.cxf.observer.com/}GradeService;出现webService的wsdl:

CXF搭建webService服务器(maven or jar)_第2张图片
   出现以上现象,恭喜你,你的CXF框架webService服务器已经搭建成功。
   我的源码可以到此下载:webServiceCXFmaven.rar

三:下载jar包导进去搭建
第一步:下载jar包,新建项目
   如果不想自己找,到这里下载我的吧(我这里是linux系统,不过jar包是一样的):apache-cxf-2.6.1.tar

   新建web项目:webServiceCXF
   将cxf的apache-cxf-2.6.1.tar.gz包解压,将下面的lib目录下的jar包复制到webServiceCXF项目下的lib目录下,然后刷新,导进去,有一些myeclipse会自动导进去,自己灵活应用吧。
第二步:配置web.xml文件
   在WebRoot——>WEB-INF中的web.xml中加上cxf的servlet、cxf的全局变量与cxf的配置文件,我的web.xml配置与以上“maven搭建webService”的第三步中web.xml是一样的,自行到上面观看。
第三步:定义接口与定义实现类,这个跟“maven搭建webService”,一样,自行到上面观看。
第四步:配置cxf.xml文件
   在普通的web项目中,配置文件放在源代码的src目录下,在该目录下新建一个cxf.xml文件,cxf.xml的配置跟“maven搭建webService”的第六步中的cxf.xml配置一样,自行到上面观看。
第五步:部署与测试
   同样,这一步同样跟“maven搭建webService”的第七步中一样。
   此源码可以到这里来下载:webServiceCXFjar.rar

   到此,CXF搭建webService服务器的介绍已经完毕,下面还有使用CXF制作客户端可以参考文章:java中webservcie客户端的设计开发与应用与js的webservice客户端的设计开发与应用