详细介绍:http://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/

1、定义一个User对象

  1. package com.zf.test;
  2. import java.util.Date;
  3. import javax.xml.bind.annotation.XmlRootElement;
  4. @XmlRootElement(name="User")
  5. public class User {
  6. private long id;
  7. private String name;
  8. private Date birthday;
  9. public long getId() {
  10. return id;
  11. }
  12. public void setId(long id) {
  13. this.id = id;
  14. }
  15. public String getName() {
  16. return name;
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public Date getBirthday() {
  22. return birthday;
  23. }
  24. public void setBirthday(Date birthday) {
  25. this.birthday = birthday;
  26. }
  27. }

2、编写Service接口

  1. package com.zf.test;
  2. import javax.ws.rs.Consumes;
  3. import javax.ws.rs.GET;
  4. import javax.ws.rs.POST;
  5. import javax.ws.rs.Path;
  6. import javax.ws.rs.PathParam;
  7. import javax.ws.rs.Produces;
  8. import javax.ws.rs.QueryParam;
  9. import javax.ws.rs.core.MediaType;
  10. @Path(value="/user")
  11. @Produces(MediaType.TEXT_XML)  //指定返回给客户端的类型
  12. @Consumes(MediaType.TEXT_XML)  //接收客户端来的类型
  13. public interface IUserService {
  14. @GET
  15. @Path(value="/info/{id}")
  16. public User getUser(@PathParam("id") long id,@QueryParam("name") String name);
  17. @GET
  18. @Path(value="/info2")
  19. public User getUser(@QueryParam("name") String name);
  20. @POST
  21. @Path(value = "/info3")
  22. public User getUser(User user);
  23. }

3、实现Service类

  1. package com.zf.test;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. public class UserServiceImpl implements IUserService {
  5. public User getUser(long id,String name) {
  6. User user=new User();
  7. user.setId(id);
  8. user.setName(name);
  9. try {
  10. user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1987-02-01"));
  11. } catch (ParseException e) {
  12. e.printStackTrace();
  13. }
  14. return user;
  15. }
  16. public User getUser(String name) {
  17. User user=new User();
  18. user.setId(1);
  19. user.setName(name);
  20. try {
  21. user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1985-03-01"));
  22. } catch (ParseException e) {
  23. e.printStackTrace();
  24. }
  25. return user;
  26. }
  27. @Override
  28. public User getUser(User user) {
  29. System.out.println("getUser");
  30. if(user != null)
  31. System.out.println( user.getId() + " " + user.getName() + "  " + user.getBirthday().toLocaleString());
  32. else
  33. System.out.println("user is null!");
  34. return user;
  35. }
  36. }

4、编写客户端

可以直接在浏览器中输入 http://localhost:9999/user/info/3?name=is_zhoufeng 访问。 在浏览器中会输出如下结果:

  1. <User><birthday>1987-02-01T00:00:00+08:00</birthday><id>3</id><name>is_zhoufeng</name></User>

(下面的操作之前,应该在客户端生成对应的User类型。可以在服务端提供相应的xsd文件。给客户端生成。我这里直接将User复制过去了)

首先根据服务端 编写客户端Service接口

  1. package com.zf.vo;
  2. import javax.ws.rs.Consumes;
  3. import javax.ws.rs.GET;
  4. import javax.ws.rs.POST;
  5. import javax.ws.rs.Path;
  6. import javax.ws.rs.Produces;
  7. import javax.ws.rs.core.MediaType;
  8. @Path("/user")
  9. @Produces(MediaType.TEXT_XML)
  10. @Consumes(MediaType.TEXT_XML)
  11. public interface UserService {
  12. @POST
  13. @Path("/info3")
  14. User info(User user);
  15. @GET
  16. @Path(value="/info2")
  17. User info2(String name) ;
  18. }

访问GET方法

  1. package com.zf.vo;
  2. import org.apache.cxf.jaxrs.client.WebClient;
  3. public class RestClient {
  4. public static void main(String[] args) {
  5. WebClient client=WebClient.create("http://127.0.0.1:5555/user/info/3?name=is_zhoufeng");
  6. User user=(User)client.accept("text/xml").get(User.class);
  7. System.out.println(user.getName());
  8. }
  9. }

访问POST方法

    1. package com.zf.vo;
    2. import java.util.Date;
    3. import org.springframework.context.ApplicationContext;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. public class PostRestClient {
    6. public static void main(String[] args) {
    7. ApplicationContext cxt = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","jaxrs-https.xml"});
    8. UserService countriesService = (UserService)cxt.getBean("userService");
    9. User user = new User();
    10. user.setBirthday(new Date());
    11. user.setId(3);
    12. user.setName("is_zhoufeng");
    13. User u = countriesService.info(user);
    14. System.out.println(u.getId());
    15. System.out.println(u.getName());
    16. System.out.println(u.getBirthday().toLocaleString());
    17. }
    18. }

使用cxf 发布 jax-rs 风格webservice 。并客户端测试。的更多相关文章

  1. Spring整合CXF,发布RSETful 风格WebService(转)

    Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...

  2. Spring整合CXF,发布RSETful 风格WebService

    原文地址:http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有 ...

  3. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  4. webservice用cxf发布REST

    1.新建一个java项目 2.导入cxf相关的jar包,并部署到项目中 3.bean类 package com.xiaostudy; import javax.xml.bind.annotation. ...

  5. SSH集成cxf 发布restful webservice

    首先讲一下什么是restful webservice ,这个问题网上一搜有很多博文去长篇大论的介绍它,但是最后你看完了也会觉得云里雾里的,所以我在这里简单的讲一下我理解的rest webservice ...

  6. 使用CXF发布webservice服务及注意要点

    一.概念 1.什么是webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用 ...

  7. 使用CXF发布WebService

    这里普及一下WebService和cxf的知识.关于webservice和cxf:   WebService.各种提供服务的组件     .企业总线.通讯总线(ESB)CXF:是一个SOA框架,Axi ...

  8. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  9. CXF发布restful WebService的入门例子(客户端)

    上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

  10. [置顶] 利用CXF发布webService的小demo

    其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...

随机推荐

  1. 机器学习框架ML.NET学习笔记【2】入门之二元分类

    一.准备样本 接上一篇文章提到的问题:根据一个人的身高.体重来判断一个人的身材是否很好.但我手上没有样本数据,只能伪造一批数据了,伪造的数据比较标准,用来学习还是蛮合适的. 下面是我用来伪造数据的代码 ...

  2. (四)Redis主从复制(单机版,不集群)

    持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可 ...

  3. Java学习笔记--关于面向对象的思考

    1.不可改变的类生成对象以及变量的范围 2. 关键词this的使用 3.用类抽象的思想制作软件 4.通过关系模型建立类 5.使用面向对象的范例来设计程序,遵循类设计指导. 已经学习了:怎么定义类已经创 ...

  4. 解决mac下安装yeoman时没有权限问题

    在mac下安装yeoman经常会出现如下图错误: 解决办法:在命令行执行-- sudo chown -R $USER /usr/local/lib/node_modules 回车就OK

  5. linux服务器安装nodejs运行环境

    安装nodejs运行环境 第一步:到node官网下载相应版本的安装包,将安装包放置服务器上,路径为 usr/local/node(可根据自身情况进行修改) 第二步:解压 ***.tar.xz格式文件需 ...

  6. FusionCharts使用JavaScript渲染图表(不用Flash)

    FusionCharts可以让用户只使用JavaScript建立图表(而不是使用Flash),只需要添加另一行代码,如下所示: FusionCharts.setCurrentRenderer('jav ...

  7. SpringBoot的启动报错

    1.

  8. OSS基本概念介绍

    存储空间(Bucket): 存储空间是用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间. 可以设置和修改存储空间属性用来控制地域.访问权限.生命周期等,这些属性设置直接作用于该存 ...

  9. 【Oracle】曾经的Oracle学习笔记(8-15)ER图,三大范式,数据库字典,视图,索引,序列

    一.数据库建模 二.建表 三.数据库字典 四.DML语句 五.视图 六.索引 七.序列 八.DDL语句 Lesson 8 Overview of Data Modeling and Database ...

  10. uvm_svcmd_dpi——DPI在UVM中的实现(二)

    UVM中有需要从cmmand line 输入参数的需求,所有uvm_svcmd_dpi.svh和uvm_svcmd_dpi.cc 文件就是实现功能. uvm_svcmd_dpi.svh的源代码如下,我 ...