使用cxf 发布 jax-rs 风格webservice 。并客户端测试。
详细介绍:http://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/
1、定义一个User对象
- package com.zf.test;
- import java.util.Date;
- import javax.xml.bind.annotation.XmlRootElement;
- @XmlRootElement(name="User")
- public class User {
- private long id;
- private String name;
- private Date birthday;
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- }
2、编写Service接口
- package com.zf.test;
- import javax.ws.rs.Consumes;
- import javax.ws.rs.GET;
- import javax.ws.rs.POST;
- import javax.ws.rs.Path;
- import javax.ws.rs.PathParam;
- import javax.ws.rs.Produces;
- import javax.ws.rs.QueryParam;
- import javax.ws.rs.core.MediaType;
- @Path(value="/user")
- @Produces(MediaType.TEXT_XML) //指定返回给客户端的类型
- @Consumes(MediaType.TEXT_XML) //接收客户端来的类型
- public interface IUserService {
- @GET
- @Path(value="/info/{id}")
- public User getUser(@PathParam("id") long id,@QueryParam("name") String name);
- @GET
- @Path(value="/info2")
- public User getUser(@QueryParam("name") String name);
- @POST
- @Path(value = "/info3")
- public User getUser(User user);
- }
3、实现Service类
- package com.zf.test;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- public class UserServiceImpl implements IUserService {
- public User getUser(long id,String name) {
- User user=new User();
- user.setId(id);
- user.setName(name);
- try {
- user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1987-02-01"));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return user;
- }
- public User getUser(String name) {
- User user=new User();
- user.setId(1);
- user.setName(name);
- try {
- user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1985-03-01"));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return user;
- }
- @Override
- public User getUser(User user) {
- System.out.println("getUser");
- if(user != null)
- System.out.println( user.getId() + " " + user.getName() + " " + user.getBirthday().toLocaleString());
- else
- System.out.println("user is null!");
- return user;
- }
- }
4、编写客户端
可以直接在浏览器中输入 http://localhost:9999/user/info/3?name=is_zhoufeng 访问。 在浏览器中会输出如下结果:
- <User><birthday>1987-02-01T00:00:00+08:00</birthday><id>3</id><name>is_zhoufeng</name></User>
(下面的操作之前,应该在客户端生成对应的User类型。可以在服务端提供相应的xsd文件。给客户端生成。我这里直接将User复制过去了)
首先根据服务端 编写客户端Service接口
- package com.zf.vo;
- import javax.ws.rs.Consumes;
- import javax.ws.rs.GET;
- import javax.ws.rs.POST;
- import javax.ws.rs.Path;
- import javax.ws.rs.Produces;
- import javax.ws.rs.core.MediaType;
- @Path("/user")
- @Produces(MediaType.TEXT_XML)
- @Consumes(MediaType.TEXT_XML)
- public interface UserService {
- @POST
- @Path("/info3")
- User info(User user);
- @GET
- @Path(value="/info2")
- User info2(String name) ;
- }
访问GET方法
- package com.zf.vo;
- import org.apache.cxf.jaxrs.client.WebClient;
- public class RestClient {
- public static void main(String[] args) {
- WebClient client=WebClient.create("http://127.0.0.1:5555/user/info/3?name=is_zhoufeng");
- User user=(User)client.accept("text/xml").get(User.class);
- System.out.println(user.getName());
- }
- }
访问POST方法
- package com.zf.vo;
- import java.util.Date;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class PostRestClient {
- public static void main(String[] args) {
- ApplicationContext cxt = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","jaxrs-https.xml"});
- UserService countriesService = (UserService)cxt.getBean("userService");
- User user = new User();
- user.setBirthday(new Date());
- user.setId(3);
- user.setName("is_zhoufeng");
- User u = countriesService.info(user);
- System.out.println(u.getId());
- System.out.println(u.getName());
- System.out.println(u.getBirthday().toLocaleString());
- }
- }
使用cxf 发布 jax-rs 风格webservice 。并客户端测试。的更多相关文章
- Spring整合CXF,发布RSETful 风格WebService(转)
Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...
- Spring整合CXF,发布RSETful 风格WebService
原文地址:http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有 ...
- CXF发布restful WebService的入门例子(服务器端)
研究了两天CXF对restful的支持. 现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...
- webservice用cxf发布REST
1.新建一个java项目 2.导入cxf相关的jar包,并部署到项目中 3.bean类 package com.xiaostudy; import javax.xml.bind.annotation. ...
- SSH集成cxf 发布restful webservice
首先讲一下什么是restful webservice ,这个问题网上一搜有很多博文去长篇大论的介绍它,但是最后你看完了也会觉得云里雾里的,所以我在这里简单的讲一下我理解的rest webservice ...
- 使用CXF发布webservice服务及注意要点
一.概念 1.什么是webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用 ...
- 使用CXF发布WebService
这里普及一下WebService和cxf的知识.关于webservice和cxf: WebService.各种提供服务的组件 .企业总线.通讯总线(ESB)CXF:是一个SOA框架,Axi ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- CXF发布restful WebService的入门例子(客户端)
上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...
- [置顶] 利用CXF发布webService的小demo
其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...
随机推荐
- oop典型应用:实体类
1. 要知道这个图三者的关系 2.实体类属性类型与数据库类型 3.readonly与const的对比 两者的区别如下: ①const能修饰类中的字段(field)或者局部变量(local variab ...
- C 碎片六 函数
一.程序编译执行过程 程序的编译执行过程分为4个阶段:预处理阶段.编译阶段.汇编阶段.连接阶段 1. 预处理阶段:预处理器(cpp)处理以头文件.宏.条件编译(字符#开头)等内容的替换.此阶段不进行语 ...
- Java开发笔记(九十八)利用Callable启动线程
前面介绍了如何利用Runnable接口构建线程任务,该方式确实方便了线程代码的复用与共享,然而Runnable不像公共方法那样有返回值,也就无法将线程代码的处理结果传给外部,造成外部既不知晓该线程是否 ...
- Java并发(六):并发策略
通过多次优化实例来了解选择并发策略的正确姿势 通过模拟浏览器程序的渲染页面(Page-Rendering)功能,为了方便,假设HTML页面只会包含标签文本和图片以及URL; 第一个版本:串行加载页面元 ...
- unobtrusive验证,ajax局部加载后验证失效解决方法
页面加载后运行此代码 $(function() {$.validator.unobtrusive.parse($("form")); }); 原因: 页面加载后unobtrusiv ...
- js数字滑动时钟
js数字滑动时钟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Eucalyptus-利用镜像启动一个Windows Server 2008r2实例
1.前言 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)——http://www.cnblogs.com/gis-luq/p/3990792.html 上一篇 ...
- WebChromeClient
WebChromeClient 辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 onCloseWindow(关闭WebView) onCreateWindow ...
- Spring IoC和AOP的介绍
基于Spring Framework 版本:5.0.2.RELEASE IoC 概念:传统Java开发中,程序通过new主动创建对象实例,而Spring有专门的IoC容器来创建对象,具体来说就是在Sp ...
- UML中类图(Class Diagram)的关系整理
什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...