CXF整合Spring开发WebService

刚开始学webservice时就据说了cxf,一直没有尝试过,这两天试了一下,还不错,总结以下:
要使用cxf固然是要先去apache下载cxf,下载完成以后,先要配置环境变量,有如下三步:
1.打开环境变量配置窗口,点击新建,新建%CXF_HOME%变量,值为你下载的cxf所在的目录,个人是D:\tools\apache-cxf-3.1.0
2.在Path变量中新加一句%CXF_HOME%\lib,注意要和已有的path变量用;隔开
3.在CLASSPATH中新加一句%CXF_HOME%\lib\cxf-manifest.jar,这里也要和已有的classpath变量用;隔开
好了,至此配置已经完成,接下来咱们新建一个web项目,把下载的cxf文件夹中的lib文件夹下的全部jar文件拷贝到WEB-INF中的lib文件夹中。下来就能够正式开发了,先看看工程目录结构:java

这里写图片描述

IMyServer.javaweb

@WebService
public interface IMyServer {

    @WebResult(name="addResult")
    public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);
}

MyServerImpl.javaspring

@WebService(endpointInterface="cxf.lenve.test.IMyServer")
public class MyServerImpl implements IMyServer {

    @Override
    public int add(int a, int b) {
        System.out.println("服务端..."+a+"+"+b+"="+(a+b));
        return a+b;
    }

}

写一个接口一个实现类就能够了,至于发布则在配置文件中完成便可apache

beans.xml浏览器

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <!-- 定义webservice服务,至关于发布 -->
    <jaxws:server id="MyServer" address="/MyServer" serviceClass="cxf.lenve.test.IMyServer">
        <!--发布服务类  -->
        <jaxws:serviceBean>
            <bean class="cxf.lenve.test.MyServerImpl"></bean>
        </jaxws:serviceBean>
    </jaxws:server>
</beans>

好了,文档已经发布,剩下的就是配置web.xml文件了,看:app

web.xmlide

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">
     <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>WEB-INF/beans.xml</param-value>
   </context-param>

   <listener>
      <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class>
   </listener>
   <!--cxfservlet的做用就是解析webservice请求  -->
   <servlet>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
   </servlet>
   <!-- 全部前缀为ws的请求都被解析为webservice请求 -->
   <servlet-mapping>
   <servlet-name>cxf</servlet-name>
   <url-pattern>/ws/*</url-pattern>
   </servlet-mapping>
</web-app>

好了,至此一个cxf整合spring的webservice的应用编写成功了,运行该网站,在浏览器中查看wsdl文档:工具

这里写图片描述

服务端成功发布,客户端该怎样访问呢?从前咱们使用wsimport将wsdl导出为java文件,如今使用cxf,能够直接使用cxf中自带的工具wsdl2java导出wsdl文件。
先建立一个客户端工程,在命令行进入该工程的src文件夹中,而后,使用以下命令导出java文件:网站

这里写图片描述

刷新客户端工程,就能够看到导出的java文件了。
这里写图片描述url

直接调用便可:

public class Client1 {

    public static void main(String[] args) {
        IMyServer iMyServer = new IMyServerService().getIMyServerPort();
        System.out.println(iMyServer.add(3, 4));
    }
}

这即是cxf整合spring的一个简单项目。

相关文章
相关标签/搜索