分布式(基础)-WebService(五)

简介: 分布式(基础)-WebService(五)

WebService-CXF

CXF:也是用来开发WebService的。不依赖于任何的服务端端的接口和类

收到的是xml文件,但是需要自己去解析xmlw文件。

1、CXF也能整合到SpringBoot中去的。

1.1、搭建Spring CXF+RESTFUL风格的WebService

1.2、引入相关的依赖如下:

  1. <dependencies>
  2.  <dependency>
  3.    <groupId>org.springframework</groupId>
  4.    <artifactId>spring-context</artifactId>
  5.    <version>${spring.version}</version>
  6.  </dependency>
  7.  <dependency>
  8.    <groupId>org.springframework</groupId>
  9.    <artifactId>spring-web</artifactId>
  10.    <version>${spring.version}</version>
  11.  </dependency>
  12.  <!--CXF相关包-->
  13.  <dependency>
  14.    <groupId>org.apache.cxf</groupId>
  15.    <artifactId>cxf-rt-transports-http</artifactId>
  16.    <version>${cxf.version}</version>
  17.  </dependency>
  18.  <dependency>
  19.    <groupId>org.apache.cxf</groupId>
  20.    <artifactId>cxf-rt-frontend-jaxws</artifactId>
  21.    <version>${cxf.version}</version>
  22.  </dependency>
  23.  <dependency>
  24.    <groupId>org.apache.cxf</groupId>
  25.    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
  26.    <version>${cxf.version}</version>
  27.  </dependency>
  28.  <dependency>
  29.    <groupId>javax.ws.rs</groupId>
  30.    <artifactId>javax.ws.rs-api</artifactId>
  31.    <version>2.0</version>
  32.  </dependency>
  33.  <!-- web service -->
  34.  <dependency>
  35.    <groupId>javax.ws.rs</groupId>
  36.    <artifactId>jsr311-api</artifactId>
  37.    <version>1.1.1</version>
  38.  </dependency>
  39.  <dependency>
  40.    <groupId>com.fasterxml.jackson.jaxrs</groupId>
  41.    <artifactId>jackson-jaxrs-json-provider</artifactId>
  42.    <version>2.9.7</version>
  43.  </dependency>

  44.  <dependency>
  45.    <groupId>javax.servlet</groupId>
  46.    <artifactId>servlet-api</artifactId>
  47.    <version>2.5</version>
  48.  </dependency>
  49.    <spring.version>4.3.18.RELEASE</spring.version>
  50.    <jackson.version>2.9.6</jackson.version>
  51.    <cxf.version>3.2.7</cxf.version>

1.3、编写WebService终端接口的API和实体类的代码如下:

  1. package com.xf.demo.service;

  2. import com.xf.demo.domain.User;

  3. import javax.jws.WebService;
  4. import javax.ws.rs.*;
  5. import javax.ws.rs.core.MediaType;
  6. import javax.ws.rs.core.Response;
  7. import java.util.List;

  8. @WebService
  9. @Path(value="/users/")
  10. public interface UserService {

  11.    @GET
  12.    @Path("/")  //http://ip:port/users
  13.    @Produces({MediaType.APPLICATION_JSON})
  14.    List<User> getUsers();

  15.    @DELETE
  16.    @Path("{id}")  //http://ip:port/users/1
  17.    @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) //请求accept
  18.    Response delete(@PathParam("id") int id);

  19.    @GET
  20.    @Path("{id}") //http://ip:port/users/1
  21.    @Produces(MediaType.APPLICATION_JSON)
  22.    User getUser(@PathParam("id") int id);

  23.    @POST
  24.    @Path("/add")
  25.    @Produces({MediaType.APPLICATION_JSON})
  26.    Response add(User user);

  27.    @PUT
  28.    @Path("/update")
  29.    Response update(User user);
  30. }
  31. package com.xf.demo.service;
  32. import com.xf.demo.domain.User;
  33. import com.xf.demo.result.Response;
  34. import org.springframework.stereotype.Service;
  35. import java.util.Date;
  36. import java.util.List;
  37. import java.util.concurrent.CopyOnWriteArrayList;
  38. @Service
  39. public class UserServiceImpl implements UserService {
  40.    public static List<User> users=null;
  41.    static{
  42.        users=new CopyOnWriteArrayList<>();
  43.        users.add(new User(1001,"张三",20,new Date()));
  44.        users.add(new User(1002,"王五",21,new Date()));
  45.        users.add(new User(1003,"赵六",22,new Date()));
  46.        users.add(new User(1004,"田七",23,new Date()));

  47.    }
  48.    @Override
  49.    public List<User> getUsers() {
  50.        return users;
  51.    }

  52.    @Override
  53.    public Response delete(int id) {
  54.        int size=users.size();
  55.        for(User user:users){
  56.            if(user.getId().intValue()==id){
  57.                users.remove(user);
  58.            }
  59.        }
  60.        if(users.size()<size){
  61.            return new Response(0,"success",null);
  62.        }else{
  63.            return new Response(1,"fail",null);
  64.        }

  65.    }

  66.    @Override
  67.    public User getUser(int id) {
  68.        return users.get(id-1);
  69.    }

  70.    @Override
  71.    public Response add(User user) {
  72.        users.add(user);
  73.        return new Response(0,"success",null);
  74.    }

  75.    @Override
  76.    public Response update(User user) {
  77.        return null;
  78.    }
  79. }

cxf格式的webService不是把接口发不出去,而是像RestFul形式的去访问。

cxf返回的是即是json也可以是xml文件,因为在cxf中提供了转换器可以把xml文件转换成json的格式

1.4、发布下:这就是restful的json

1.5、cxf这种方式可以设置不同的请求头,来控制 返回的是xml还是json,比前几种更方便。

1.6、如果想要获取的是xml的话:需要在在实体类上加上注解:

1.7、在次访问下delete的方法,请求的结果如下:

革命尚未成功,继续努力!!!!

相关文章
|
JSON 网络协议 Dubbo
RPC框架(技术总结)
RPC框架(技术总结)
RPC框架(技术总结)
|
11小时前
|
XML Java 数据格式
分布式(基础)-WebService(二)
分布式(基础)-WebService(二)
|
11小时前
|
XML JSON 网络协议
分布式(基础)-WebService(一)
分布式(基础)-WebService(一)
|
11小时前
|
XML Java 数据格式
分布式(基础)-WebService(四)
分布式(基础)-WebService(四)
|
11小时前
|
XML Java Apache
分布式(基础)-WebService(三)
分布式(基础)-WebService(三)
|
4月前
|
XML 网络协议 网络架构
WebService - 基础详解
WebService - 基础详解
288 0
|
XML SQL JSON
开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
134 0
开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
|
JSON 负载均衡 算法
轻量级RPC框架(0 - 项目概述)
轻量级RPC框架(0 - 项目概述)
轻量级RPC框架(0 - 项目概述)
|
Java 数据格式 网络架构
主流RPC框架详解,以及与SOA、REST的区别
什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
1615 0