使用jersey2.X发布rest服务
来源:互联网 发布:java与javascript区别 编辑:程序博客网 时间:2024/05/30 22:57
使用jersey2.X发布rest服务
jersey2.X发布rest服务的方式跟jersey1.X版本不同,需要做不同的处理;本文使用的jersey版本为2.26-b07,下载地址:http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jaxrs-ri/2.26-b07/
1、需要的jar包(下载的jaxrs-ri-2.26-b07.zip解压后的lib、api和ext目录下的所有jar包合集)
2、创建rest服务所有的package路径(这里以com.cherry.rest为例),并在包下创建rest服务代码
package com.cherry.rest;import com.cherry.model.Student;import com.cherry.util.JsonUtil;import javax.validation.constraints.NotNull;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;/** * Created by Leander Cherry on 2017/7/2. */@Path("/test")public class RestService{ @GET @Path("/getText") public String getString(@QueryParam("name") String name) { return "Hello, " + name; } @GET @Path("getJson") @Produces(MediaType.APPLICATION_JSON) public Student getJson(@QueryParam("name") String name) { Student student = new Student(); student.setName(name); return student; } @POST @Path("jsonTest") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Student addStudent(@NotNull() Student student) { return student; }}
其中Student类是我自己实现的一个学生信息的Bean,实际开发时可以是任意自己实现的一个Bean均可
3、创建RestApplication类,该类继承自ResourceConfig,来配置需要扫描加载为rest服务的类所在的package,同时可以配置一下其他需要的配置,本例中不做任何配置
package com.cherry;/*** Created by Leander Cherry on 2017/7/2.*/import org.glassfish.jersey.server.ResourceConfig;public class RestApplication extends ResourceConfig{ public RestApplication() { //服务类所在的包路径 packages("com.cherry.rest"); }}
4、在web.xml中配置servletContainer和对应的ResourceConfig从而使得服务启动时能够自动扫描需要加载的rest服务类,同时如果rest服务要使用json格式的文本传输还需要设置Json相关的配置,使得Json可以自动转换
<servlet> <servlet-name>jersey_rest</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.cherry.RestApplication</param-value> </init-param> <init-param> <param-name>javax.json.stream.JsonGenerator.prettyPrinting</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>jersey_rest</servlet-name> <url-pattern>/rest/*</url-pattern></servlet-mapping>
5、将服务发布到tomcat或其他Web容器中即实现了一个Rest服务端,可以直接通过postman或任意的浏览器访问发布的rest接口
getJson
getText
POST JSON
注意:
1、在RestApplication中,当前的例子其实packages方法的参数设置为加载任意的包路径,本实例中的rest服务都能发布成功,博主怀疑时ResourceConfig会自动扫描递归加载子类所在的包及其各级子包,但是看了jersey的官方API文档也没找到支撑的论据,所以目前我还是一阵懵逼,不懂为什么;
2、如果要支持Json文本必须在web.xml中配置Json相关的支持(javax.json.stream.JsonGenerator.prettyPrinting设置为true);
3、如果某个接口支持请求或响应为Json格式的文本,需要将相应的Consumes和Produces注解设置为application/json格式
- 使用jersey2.X发布rest服务
- 使用CXF和spring发布rest服务
- Tuscany发布REST服务
- springmvc发布rest服务
- Jersey2.x Helloworl
- Jersey2.X + Jetty9(Embed)
- jersey2.x 简单例子。
- 使用cxf发布rest服务接口,和spring的整合
- ArcGIS Server 发布 REST 服务
- ArcGIS Server 发布 REST 服务
- 14_CXF发布REST服务
- Jersey 发布rest服务接口
- Java Jersey2使用总结
- Java Jersey2使用总结
- Java Jersey2使用总结
- Java Jersey2使用总结
- jersey2.x 解析json字符串
- jersey2
- KMP算法中Next数组及改进后的nextval数组的求法
- [高频] 一.Interview Style
- OpenGl绘制基本单元注解
- 生活中的ISBN码和身份证号码的校验
- 二分法求一元二次方程的根
- 使用jersey2.X发布rest服务
- [内核源码][编译] 关于openssl/opensslv.h错误的解决方案
- windows10下使用Charles进行移动端抓包
- 1166 敌兵布阵(线段树求区间和)
- 面试问题你觉得你能胜任么
- 1698 Just a Hook(线段树段修改)
- 安装Boost
- Hibernate HQL查询
- 通达信公式破解