zoukankan      html  css  js  c++  java
  • WebService

    WebService CXF  使用入门

      很多个系统,进行分布的部署,分布的系统数据通信 解决技术就是 WebService


    CXF WebService 开发,主要分为两种服务提供方式 WS 、RS

      

      JAX-WS 传输数据,就是 XML 格式,基于 SOAP 协议
      JAX-RS 传输数据,传输 XML 格式或者 JSON 格式,基于 HTTP 协议

    JAX-RS

      

      RS好处:基于HTTP协议,支持多种消息格式,比如XML,JSON
      更易于实现缓存机制(第一次访问资源,缓存,第二次访问资源,放回304客户端本地)

    POST请求方式访问 保存操作
    PUT请求方法访问 修改操作
    GET请求方式访问 查询操作
    DELETE请求方式访问 删除操作

    不带参数查询:

        @GET
        @Path("/user")
        @Produces({"application/xml","application/json"})
        public List<User> findAllUsers();    

    带参数查询:

        @GET
        @Path("/user/{id}")
        @Consumer("application/xml")
        public User findUserById(@PathParam("id") Integer id);

    @Path 服务访问资源路径

    @Produces 生成(方法返回值) @Consumes 消费 (方法参数)

      @Consumes 指定能够处理客户端传递过来数据格式
      @Produces 指定能否生成哪种格式数据返回给客户端

    JAX-RS整合spring

      导入maven坐标

    <!-- CXF进行开发必须导入-->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.0.1</version>
            </dependency>
            <!--客户端需要的坐标-->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-rs-client</artifactId>
                <version>3.0.1</version>
            </dependency>
            <!--扩展JSON-->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-rs-extension-providers</artifactId>
                <version>3.0.1</version>
            </dependency>
            <!--转换json工具包,被扩展json依赖-->
            <dependency>
                <groupId>org.codehaus.jettison</groupId>
                <artifactId>jettison</artifactId>
                <version>1.3.7</version>
            </dependency>

    省略spring的基本坐标

    在web.xml文件中配置servlet

        <!-- CXF Servlet -->
        <servlet>
            <servlet-name>CXFService</servlet-name>
            <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>CXFService</servlet-name>
            <url-pattern>/service/*</url-pattern>
        </servlet-mapping>

    引入名称空间

      xmlns:jaxrs="http://cxf.apache.org/jaxrs"
        http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd

    创建applicationContext-WebService.xml文件


    applicationContext-WebService.xml配置模板

    <jaxrs:server id="userService" address="/userService">
            <jaxrs:serviceBeans>
                <bean class="com.learn.web.service.base.impl.UserServiceImpl" />
            </jaxrs:serviceBeans>
            <jaxrs:inInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
            </jaxrs:inInterceptors>
            <jaxrs:outInterceptors>
                <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
            </jaxrs:outInterceptors>
        </jaxrs:server>

    最终访问资源服务路径

      

        服务器根目录地址 + web.xml 配置 + applicationContext-WebService.xml address 配置 + 类 @Path +
    方法 @Path


    被传输的实体类需要加上@XmlRootElement,代表这个实体类能在web-service

    例如

    @XmlRootElement(name = "customer")
    public class Customer {
  • 相关阅读:
    python基础33——进程池&线程池/协程
    python基础32——线程
    pycharm2020
    python基础31——进程
    python基础31——操作系统史&多道
    jmeter如何保持JSESSIONID
    Jmeter中自动重定向与跟随重定向的区别
    Jmeter之HTTP Cookie 管理器
    Kubernetes简述
    docker集群部署
  • 原文地址:https://www.cnblogs.com/learnjfm/p/7380317.html
Copyright © 2011-2022 走看看