• webservice开发spring整合cxf入门案例


    一、创建服务端发布服务

      1. 添加依赖

     <dependencies>
            <!-- cxf 进行rs开发 必须导入  -->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxrs</artifactId>
                <version>3.0.1</version>
            </dependency>
            <!-- 日志引入  -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.12</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工具包,被extension providers 依赖 -->
            <dependency>
                <groupId>org.codehaus.jettison</groupId>
                <artifactId>jettison</artifactId>
                <version>1.3.7</version>
            </dependency>
    
            <!-- spring 核心 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
            <!-- spring web集成 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
            <!-- spring 整合junit  -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
            <!-- junit 开发包 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>

      2. 创建服务接口

    import javax.ws.rs.Consumes;
    import javax.ws.rs.DELETE;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.PUT;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    
    import cn.itcast.domain.User;
    
    //@Path("/userService")
    @Produces("*/*")
    public interface IUserService {
    
        @POST
        @Path("/user")
        @Consumes({ "application/xml", "application/json" })
        public void saveUser(User user);
    
        @PUT
        @Path("/user")
        @Consumes({ "application/xml", "application/json" })
        public void updateUser(User user);
    
        @GET
        @Path("/user")
        @Produces({ "application/xml", "application/json" })
        public List<User> findAllUsers();
    
        @GET
        @Path("/user/{id}")
        @Consumes("application/xml")
        @Produces({ "application/xml", "application/json" })
        public User finUserById(@PathParam("id") Integer id);
    
        @DELETE
        @Path("/user/{id}")
        @Consumes({"application/xml", "application/json"})
        public void deleteUser(@PathParam("id") Integer id);
    }

      3. 创建服务接口实现

    import java.util.ArrayList;
    import java.util.List;
    
    public class UserServiceImpl implements IUserService {
    
        public void saveUser(User user) {
            System.out.println("save user:" + user);
        }
    
        public void updateUser(User user) {
            System.out.println("update user:" + user);
        }
    
        public List<User> findAllUsers() {
            List<User> users = new ArrayList<User>();
            User user1 = new User();
            user1.setId(1);
            user1.setUsername("小明");
            user1.setCity("北京");
    
            List<Car> carList1 = new ArrayList<Car>();
            Car car1 = new Car();
            car1.setId(101);
            car1.setCarName("保时捷");
            car1.setPrice(1000000d);
            carList1.add(car1);
            Car car2 = new Car();
            car2.setId(102);
            car2.setCarName("宝马");
            car2.setPrice(400000d);
            carList1.add(car2);
            user1.setCars(carList1);
    
            users.add(user1);
    
            User user2 = new User();
            user2.setId(2);
            user2.setUsername("小丽");
            user2.setCity("上海");
            users.add(user2);
    
            return users;
        }
    
        public User finUserById(Integer id) {
            if (id == 1) {
                User user1 = new User();
                user1.setId(1);
                user1.setUsername("小明");
                user1.setCity("北京");
                return user1;
            }
            return null;
        }
    
        public void deleteUser(Integer id) {
            System.out.println("delete user id :" + id);
        }
    
    }

      4. 配置web.xml

     <!-- 1. 加载spring配置文件-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-cxf.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- 2.CXF的核心控制器 -->
        <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>/*</url-pattern>
        </servlet-mapping>

      5. 配置applicationContext-cxf.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:jaxrs="http://cxf.apache.org/jaxrs"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/jaxrs
            http://cxf.apache.org/schemas/jaxrs.xsd">
    
        <!-- 1. 通过容器发布服务
        2. 服务访问地址 http://localhost:12345/web.xml配置/spring中的address地址/service接口地址
        3. 如: http://localhost:12345/ws/userService -->
    
        <jaxrs:server address="/userService" serviceClass="cn.itcast.service.UserServiceImpl"/>
    
    </beans>

      6. 启动项目发布服务

    二、创建客户端调用服务

    import org.apache.cxf.jaxrs.client.WebClient;
    import org.junit.Test;
    import javax.ws.rs.core.MediaType;
    import java.util.Collection;
    
    public class WebServiceClient {
        /**
         * webservice客户端调用服务
         */
    
        // 请求默认xml格式
        @Test
        public void save() {
    
            User user = new User();
            user.setId(10);
            user.setUsername("刘备");
    
            //WebClient就是webservice客户端调用对象
            WebClient.create("http://localhost:12345/userService/user")
                    .post(user);
        }
    
        // 指定请求数据为json格式
        @Test
        public void update() {
            User user = new User();
            user.setUsername("关羽");
            user.setId(12);
            user.setCity("荆州");
            WebClient.create("http://localhost:12345/userService/user")
                    .type(MediaType.APPLICATION_JSON)
                    .put(user);
        }
    
        @Test
        public void findById() {
            User user = WebClient.create("http://localhost:12345/userService/user/1")
                    .type(MediaType.APPLICATION_JSON) //指定请求数据格式
                    .accept(MediaType.APPLICATION_JSON)//响应数据格式
                    .get(User.class);
            System.out.println(user);
        }
    
        @Test
        public void findAll() {
            Collection<? extends User> users = WebClient.create("http://localhost:12345/userService/user")
                    .getCollection(User.class);
            System.out.println(users);
        }
    
        @Test
        public void delete() {
            WebClient.create("http://localhost:12345/userService/user/1")
                    .delete();
        }
    
    }
  • 相关阅读:
    mysql日志
    MYSQL-事务中的锁与隔离级别
    MYSQL事务的日志
    Innodb核心特性-事务
    Innodb存储引擎-表空间介绍
    innodb存储引擎简介
    MYSQL之存储引擎
    MYSQL之索引配置方法分类
    MYSQL之索引算法分类
    MYSQL之select的高级用法
  • 原文地址:https://www.cnblogs.com/pomelo-lemon/p/11434348.html
Copyright © 2020-2023  润新知