CXF 发布rest服务
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服务的更多相关文章
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务
1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...
- 使用CXF发布WebService服务简单实例
一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...
- Web Service——CXF发布REST服务
1. 什么是REST REST,英文representational state transfer(表象性状态转变)或者表述性状态转移,REST是web服务的一种架构风格,使用HTTP.URI.XML ...
- 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 ...
- 使用CXF发布webservice服务及注意要点
一.概念 1.什么是webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用 ...
- 客户端调用cxf发布的服务
import java.util.ArrayList; import java.util.List; import javax.xml.namespace.QName; import org.apac ...
- 使用Cxf发布Webservice服务,如果待发布的接口中有重载方法,怎么处理??
使用 @WebMethod(operationName="multiParamByName") 重新指定名字. http://bbs.csdn.net/topics/270059 ...
- WebService--使用 CXF 开发 REST 服务
现在您已经学会了如何使用 CXF 开发基于 SOAP 的 Web 服务,也领略了 Spring + CXF 这个强大的组合,如果您错过了这精彩的一幕,请回头看看这篇吧: Web Service 那点事 ...
随机推荐
- 【转】Pro Android学习笔记(十五):用户界面和控制(3):Button控件
目录(?)[-] 基础Button ImageButton ToggleButton CheckBox RadioButton 基础Button Button是最常用的基础控件之一,在Android中 ...
- 电脑当路由使用(目前只在win7上用过)
前提:电脑有无线网卡,并打开了无线 第一步使用管理员权限运行cmd.exe 1.执行如下命令 netsh wlan set hostednetwork mode=allow ssid=myWifi k ...
- [hdu2159]FATE二维多重背包(背包九讲练习)
解题关键:二维约束条件,只需加一维状态即可. 转移方程:$f[j][k] = \max (f[j][k],f[j - w[i]][k - 1] + v[i])$ #include<bits/st ...
- hadoop slf4j-api 1.6.x (or later) is incompatible with this binding
hadoop slf4j-api 1.6.x (or later) is incompatible with this binding 解决方法: 在POM文件最前面加入: <dependenc ...
- Qt Console Application
代码编译完生成的.o文件(又称对象文件,是可执行文件)和链接.o文件形成的.exe可执行文件都保存在“build-Project-Desktop_Qt_5_8_0_GCC_64bit-Debug”中. ...
- 做c语言的码农专业发展方向
写了几年C语言代码,最近在思索,何去何从比较好? 搜索了一下,发现几个答案: 2015年10月编程语言排行榜 丢开C语言在教学应用外.在目前C语言的实际应用中.常见的应用的情景有如下: 内核/驱动,b ...
- webAPI中使用log4net进行日志记录
1.从nuget下载log4net 2.根据需求配置web.config,或者另外写一个log4net.config文件,各个节点的意义详细查询api <section name="l ...
- Spring入门第二课
看代码 package logan.spring.study; public class HelloWorld { private String name; public void setName2( ...
- hdu1070
#include <stdio.h>#include <string.h>struct milk{ char brand[128]; int price; int volume ...
- vue 绑定属性(index)
<el-menu-item v-for="item in links" :key="item.id" v-bind:index="item.id ...