• CXF整合Spring开发WebService


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

    这里写图片描述

    IMyServer.java

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

    MyServerImpl.java

    @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;
        }
    
    }
    

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

    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文件了,看:

    web.xml

    <?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文件了。
    这里写图片描述

    直接调用即可:

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

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

  • 相关阅读:
    Java8IntStream数值流的常用操作以及与装箱和拆箱的关系
    iOS滚动回弹修复方案
    ios Safari 不兼容问题 transform rotateY
    typescript的?? 和?: 和?.是什么意思?还有!:
    原生js解决ios手机input输入框弹出覆盖问题
    requestIdleCallback和requestAnimationFrame的区别
    axios的兼容性问题
    第三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)
    直播平台对比
    react中实现路由缓存和组件缓存
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461847.html
Copyright © 2020-2023  润新知