1.1      什么是rest服务

REST 是一种软件架构模式,只是一种风格,rest服务采用HTTP 做传输协议,REST 对于HTTP 的利用实现精确的资源定位。

Rest要求对资源定位更加准确,如下:

非rest方式:http://ip:port/queryUser.action?userType=student&id=001

Rest方式:http://ip:port/user/student/query/001

Rest方式表示互联网上的资源更加准确,但是也有缺点,可能目录的层级较多不容易理解。

REST 是一种软件架构理念,现在被移植到Web 服务上,那么在开发Web 服务上,偏于面向资源的服务适用于REST,REST 简单易用,效率高,SOAP 成熟度较高,安全性较好。

注意:REST 不等于WebService,JAX-RS 只是将REST 设计风格应用到Web 服务开发上。

1.2      发布rest服务

1.2.1     需求:

发布查询学生信息的服务,以json和xml数据格式返回。

1.2.2     pojo

@XmlRootElement(name="student")

public class Student {

private long id;

private String name;

private Date birthday;

1.2.3     SEI

@WebService

@Path("/student")

public interface StudentService {

@GET

@Produces(MediaType.APPLICATION_XML)

@Path("/query/{id}")

public Student queryStudent(@PathParam("id")long id)throws Exception;

@GET

@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_XML})

@Path("/querylist/{id}")

public List<Student> queryStudentList(@PathParam("id")long id)throws Exception;

}

上边代码中:

queryStudent方法以xml格式发布

queryStudentList方法以json和xml两种格式发布。

1.2.4     SEI实现类

public class StudentServiceImpl implements StudentService {

@Override

public Student queryStudent(long id) throws Exception {

Student student = new Student();

student.setId(100000l);

student.setName("张三");

student.setBirthday(new Date());

return student;

}

@Override

public List<Student> queryStudentList(long id) throws Exception {

Student student1 = new Student();

student1.setId(100000l);

student1.setName("李四");

student1.setBirthday(new Date());

Student student2 = new Student();

student2.setId(100000l);

student2.setName("张三");

student2.setBirthday(new Date());

List<Student> list = new ArrayList<Student>();

list.add(student1);

list.add(student2);

return list;

}

}

1.2.5     程序代码发布

public class RestServer {

public static void main(String[] args) {

JAXRSServerFactoryBean jaxrsServerFactoryBean = new JAXRSServerFactoryBean();

//rest地址

jaxrsServerFactoryBean.setAddress("http://127.0.0.1:12345/rest");

//设置SEI实现类

jaxrsServerFactoryBean.setResourceClasses(StudentServiceImpl.class);

jaxrsServerFactoryBean.create();

}

}

1.2.6     Spring配置文件发布

<!-- rest服务发布 -->

<jaxrs:server address="/rest">

<jaxrs:serviceBeans>

<bean class="cn.itcast.ws.cxf.rest.server.StudentServiceImpl"/>

</jaxrs:serviceBeans>

1.2.7     测试

queryStudent方法测试:

http://127.0.0.1:8080/工程名/ws/rest/student/query/1

queryStudentList方法测试:

返回json

http://127.0.0.1:8080/工程名/ws/rest/student/querylist/1?_type=json

返回xml

http://127.0.0.1:8080/工程名/ws/rest/student/querylist/1?_type=xml

CXF 发布rest服务的更多相关文章

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

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

  2. JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务

    1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...

  3. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  4. Web Service——CXF发布REST服务

    1. 什么是REST REST,英文representational state transfer(表象性状态转变)或者表述性状态转移,REST是web服务的一种架构风格,使用HTTP.URI.XML ...

  5. cxf发布 webservice服务

    导包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.3.jar commons-collections-3.2.1.jar commons-lang-2.6.ja ...

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

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

  7. 客户端调用cxf发布的服务

    import java.util.ArrayList; import java.util.List; import javax.xml.namespace.QName; import org.apac ...

  8. 使用Cxf发布Webservice服务,如果待发布的接口中有重载方法,怎么处理??

    使用 @WebMethod(operationName="multiParamByName")  重新指定名字. http://bbs.csdn.net/topics/270059 ...

  9. WebService--使用 CXF 开发 REST 服务

    现在您已经学会了如何使用 CXF 开发基于 SOAP 的 Web 服务,也领略了 Spring + CXF 这个强大的组合,如果您错过了这精彩的一幕,请回头看看这篇吧: Web Service 那点事 ...

随机推荐

  1. 滑动swipe的妙用

    转自:http://www.cnblogs.com/NEOCSL/archive/2013/03/04/2942861.html iterface ITouchable; function OnPic ...

  2. winfrom实现控件全屏效果

    用常规方法实现全屏显示时,由于采用的三方控件导致界面顶端一直有一条半透明的类似标题栏的东西无法去除,原因一直没找到. 下面综合整理下网上两位博主的用WindowsAPI实现全屏的方法: 控件全屏显示: ...

  3. Spring MVC Flash Attribute 的讲解与使用示例

    转自:https://www.oschina.net/translate/spring-mvc-flash-attribute-example Spring MVC 3.1版本加了一个很有用的特性,F ...

  4. Java异常处理的10个最佳实践

    本文作者: ImportNew - 挖坑的张师傅 未经许可,禁止转载! 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可 ...

  5. redis系列:redis介绍与安装

    前言 这个redis系列的文章将会记录博主学习redis的过程.基本上现在的互联网公司都会用到redis,所以学习这门技术于你于我都是有帮助的. 博主在写这个系列是用的是目前最新版本4.0.10,虚拟 ...

  6. 【mysql-索引+存储过程+函数+触发器-更新。。。】

    BaseOn ===>MySQL5.6 一:索引 1:创建索引: create index nameIndex on seckill(name) ; 2:查看索引: show index fro ...

  7. C++内存管理之unique_ptr

    一个unique_ptr"拥有“他所指向的对象.与shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定的对象.当unique_ptr被销毁时,它所指向的对象也被销毁. ...

  8. 安全测试 + 渗透测试 Xmind 要点梳理

    从事测试工作多年,一直对安全测试充满神秘感.买了本书,闲来无事时翻看了解.发现书的开头提供的Xmind脑图挺有参考价值,所以做了次“搬运工”,提供给想接触了解安全测试/渗透测试的小伙伴. 安全测试要点 ...

  9. [CentOS7] 设备与文件名对应表

  10. go语言实战教程:实战项目资源导入和项目框架搭建

    从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...