CXF Rest Client

接上一篇 http://sunbo1591.iteye.com/blog/765869

上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端。
客户端的实现方式有无数种。。。可以是.net,c++,还有很多java框架甚至socket。这里用cxf给的一个WebClient类来实现:
Java代码   收藏代码
  1. package com.client;  
  2.   
  3. import org.apache.cxf.jaxrs.client.WebClient;  
  4.   
  5. import com.DAO.Room;  
  6.   
  7. public class Client {  
  8.     static WebClient client;  
  9.   
  10.     public static void main(String[] args) {  
  11.         client = WebClient.create("http://localhost:9999/");  
  12.         put();  
  13.     }  
  14.   
  15.     static void get() {  
  16.         Room room = client.path("roomservice/room/001")  
  17.                 .accept("application/xml").get(Room.class);  
  18.         System.out.println("get the room which id is:" + room.getId());  
  19.     }  
  20.   
  21.     static void post() {  
  22.         Room room = new Room();  
  23.         room.setId("003");  
  24.         client.path("roomservice/room").accept("application/xml")  
  25.                 .post(room, Room.class);  
  26.     }  
  27.   
  28.     static void delete() {  
  29.         client.path("roomservice/room/002").accept("application/xml").delete();  
  30.     }  
  31.   
  32.     static void put() {  
  33.         Room room = new Room();  
  34.         room.setId("006");  
  35.         client.path("roomservice/room/003").accept("application/xml").put(room);  
  36.     }  
  37. }  




这个类用起来很简单,给WebClient的静态方法create一个参数,该参数是服务器地址的字符串。
client.path("roomservice/room/001")
.accept("application/xml").get(Room.class);
这句代码,是告诉client要访问的restful资源,以及格式,最后的get,也就是对这个资源发送一个http GET请求,参数Room.class是告诉client要以什么方式接受服务器发送来的response。(服务器端和客户端的格式应该一致,所以这里用的和服务器端用的是一个POJO,如果客户端不是用CXF,那么应该定义一个scheme,这样才能让双方明白来回发送的XML应该怎么处理,暂时也没深入,回头再研究。)
DELETE方法很好理解,就是把你指定的资源删除掉,所以delete()不用带参数。
POST,PUT方法有点不同,

post(Object body, Class<Room> )
put(Object body, Class<Room> )

第一参数是你要传给服务器的POJO,第二个参数是告诉client要将server返回的response转化为的POJO的类型。第二个参数可以不写,如果不写,收到的将是一个response。

调用这些操作后,可以通过http://localhost:9999/roomservice/room/  查看结果。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。而Apache CXF是一个开源的、全功能的Web服务框架,可用于构建和部署SOAP和RESTful Web服务。 在Spring Boot中整合CXF REST服务的步骤如下: 1. 添加CXF和Spring Boot的相关依赖。在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxrs</artifactId> <version>3.3.7</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.5.0</version> </dependency> </dependencies> ``` 2. 创建一个RESTful Web服务接口。在Spring Boot项目中创建一个标注有`@Path`注解的接口,定义RESTful风格的服务接口。 ```java @Path("/users") public interface UserService { @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) User getUser(@PathParam("id") String id); @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) User createUser(User user); // ... } ``` 3. 实现RESTful接口。创建一个实现了上述接口的类,并添加`@Service`注解,将其作为Spring的Bean进行管理。 ```java @Service public class UserServiceImpl implements UserService { @Override public User getUser(String id) { // 实现具体的逻辑 } @Override public User createUser(User user) { // 实现具体的逻辑 } // ... } ``` 4. 配置CXF。在application.properties(或application.yml)文件中添加以下配置: ```properties cxf.path=/api cxf.jaxrs.classes-scan=true ``` 这将配置CXF的访问路径和自动扫描RESTful服务接口的功能。 5. 启动Spring Boot应用程序。可以通过`@SpringBootApplication`注解标注主类,并添加`@Endpoint`注解来启动应用程序和发布Web服务。 至此,我们已经成功地将CXF REST服务整合到Spring Boot应用程序中。可以通过访问`http://localhost:8080/api/users/1`来调用RESTful接口的`getUser`方法,并得到返回结果。 总的来说,整合Spring Boot和CXF REST服务相对简单,只需添加相关依赖、定义接口和实现类,然后配置CXF即可。这种整合方式可以使开发者更加便捷地构建和部署RESTful Web服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值