Jersey系列:实践全干货
在实践中总结Jersey实用干货,包括介绍和快速入门、常用注解、架构实践案例等内容。
机器熊技术大杂烩
欢迎访问机器熊的技术大杂烩,专注Java技术。
展开
-
Jersey框架:深入研究的终极大招-Jersey用户手册
任何框架,要深入研究必须要从官方提供的用户手册(User Guide)入手,网上关于Jersey的用户手册都是网页链接方式。本文发扬雷锋精神,将网页链接整理成pdf,供Jersey框架开发者参考。Jersey 2.17 User Guide下载链接:链接:https://pan.baidu.com/s/19zuOwbVJWltKwr7jUKaf1Q提取码:n6eq...原创 2020-01-06 23:58:06 · 940 阅读 · 0 评论 -
Jersey框架:利用ModelProcessor接口获取所有注册的资源
1.业务场景1.1 业务需求数据服务是数据治理的重要主题之一,目前流行的接口配置中心方案可以通过Jersey的Programming API实现,微服务启动时根据用户通过UI注册的资源路径进行服务动态注册,无需通过硬编码即可实现服务注册。1.2 技术需求Jersey的路径和请求方法唯一组成一个HTTP请求资源,Jersey微服务启动时,对所有注册的资源进行统计,方便后续用户在运行时注册资源...原创 2020-01-06 23:21:43 · 1014 阅读 · 0 评论 -
Jersey框架:统一响应404请求
1.业务场景在Jersey框架中,如果用户访问不存在的资源路径,默认会调用Jersey自己的异常处理机制,返回类似下图的响应,不利于前端处理404请求。本文介绍一种统一处理404NotFound请求响应的方式,利用Jersey的异常映射机制,将NotFoundException统一处理,请求响应如下。{"status":404,"message":"HTTP 404 Not Found",...原创 2020-01-05 14:55:05 · 1658 阅读 · 0 评论 -
Jersey框架:用@PreMatching注解拦截所有请求
1.业务场景为了对用户请求进行统一的接入管理(权限认证、日志记录、请求转发等),在用户发起任何HTTP请求时,在Jersey框架中实现过统一的过滤器拦截所有用户请求。主要需求:拦截注册到Jersey容器的请求资源,做日志记录拦截Jersey容器中未注册(请求不存在,报NotFound错误)的请求资源,做统一转发2.技术原理Jersey的过滤器包括两种,一种是请求后置过滤器(post...原创 2020-01-05 11:33:50 · 2103 阅读 · 1 评论 -
Jersey框架:封装基于Jetty的通用服务器
1.需求场景依赖于Jetty容器封装一个Jersey微服务的启动类,在微服务入口中通过简单的调用即可实现微服务启动。主要需求如下:可以指定服务启动端口可以指定服务的应用域路径可以指定要注册到Jersey容器的资源包可以指定要注册到Jersey容器的资源类2.设计思路在通用封装类中维护一个Jetty的Server实例,代表真正的服务器默认注册res、filter和excepti...原创 2020-01-04 23:04:57 · 438 阅读 · 0 评论 -
Jersey系列:实践全干货
介绍和快速入门轻量级微服务框架Jersey微服务框架Jersey:快速入门常用注解Jersey框架常用注解1:HTTP请求方法注解 Jersey框架常用注解2:@Path和@PathParam注解Jersey框架常用注解3:媒体类型注解@Consumes和@ProducesJersey框架常用注解4:最强大的注解@ContextJersey框架常用注解5:参数获取注解高效编码和代...原创 2019-04-21 18:10:04 · 1081 阅读 · 1 评论 -
轻量级微服务框架Jersey
Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,它已经是一个产品级的 RESTful service 和 client 框架。——百度百科介绍Jersey...原创 2019-04-20 08:52:22 · 1278 阅读 · 0 评论 -
微服务框架Jersey:快速入门
本文介绍如何利用Jersey构建微服务应用,包括基本框架搭建、服务启动和服务访问等。环境及版本开发环境:Windows 7 、IntelJ IDEA、maven、jdkJersey:2.19JDK: 1.8基本框架搭建搭建Jersey微服务应用,基本框架构建主要步骤:创建maven工程,组织依赖库和编译插件编写服务器启动类注册REST资源日志配置整体框架结构如图所示:...原创 2019-04-20 20:32:13 · 1095 阅读 · 1 评论 -
Jersey框架:嵌入式Web应用
本文介绍如何使用嵌入式Jetty容器在Jersey中集成Webapp应用,前端以最简单的html和jquery方式实现。业务场景几乎所有Apache所有的大数据组件自带的Web界面都采用Jersey和内置容器Jetty的实现方案,如HDFS、Spark、Hive、Storm、Nifi、Zeppelin等。如HDFS服务,后端API和前端Web界面均默认使用50070端口启动,API为Web界...原创 2019-04-28 10:07:34 · 811 阅读 · 0 评论 -
Jersey框架:注解实现用户请求的日志记录
本文相关Jersey过滤器、@NameBinding、@Provider等内容请参考以下文章:Jersey框架常用注解4:最强大的注解@ContextJersey框架:用注解实现用户认证 业务场景日志是用于记录系统操作事件的记录,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。用户访问日志是业务系统最重要的日志记录,可以用作用户行为分析、系统性能分析...原创 2019-04-24 11:07:34 · 894 阅读 · 0 评论 -
Jersey框架:使用注解实现用户认证
业务场景描述微服务框架势必要面临用户鉴权问题,如在搭建系统应用时必须要考虑什么资源可以公开,什么资源只有系统用户才可以访问?本文针对Jersey框架,就REST资源的用户鉴权提供可行的解决思路,以简洁方便的注解形式实现。Jersey的过滤器(Filter)当你想要修改请求或响应参数,如HTTP请求响应头,可以使用过滤器来完成任务。例如,希望添加一个响应头X-Powered-By 到每个生成...原创 2019-04-24 10:34:38 · 1133 阅读 · 4 评论 -
Jersey框架:文件上传下载
企业应用中,文件管理是非常通用和重要的模块,功能包括文件上传、下载、文件管理(浏览、删除、权限等)操作,本文针对Jersey框架实现文件的上传和下载。Jersey文件特性Jersey实现文件上传需要jersey-media-multipart库的支持,并且要在服务器启动类中注册MultiPartFeature。特别注意:虽然jersey-media-multipart库依赖于mimepul...原创 2019-04-24 08:46:20 · 2119 阅读 · 4 评论 -
Jersey框架:统一异常处理
为什么要统一处理异常?在企业应用中,后端响应前端请求必须要带响应状态码,如状态码200表示请求正常响应,403代表权限认证失败,404代表资源不存在等。在Jersey框架中带响应状态码的响应一般都要通过Response对象实现,举例如下。@Path("/book")public class Book { @Path("") @GET public Response g...原创 2019-04-21 17:55:14 · 1394 阅读 · 0 评论 -
Jersey框架:参数校验
参数校验的业务场景在进行数据库查询前,后端程序会先对前端提交的参数进行校验,如果校验不通过则直接提示相应错误,避免无谓的错误操作。Jersey参数校验机制Jersey支持参数校验,注解定义在javax.validation.constraints包中,是一个空壳子,在具体校验时需要引入具体的实现。org.glassfish.jersey.ext包实现的jersey-bean-validat...原创 2019-04-21 16:47:06 · 2778 阅读 · 0 评论 -
Jersey框架:自动JSON格式转换
问题的提出一般情况下,资源方法的返回类型都是String,但如果我们指定了输出类型为标准的JSON格式,就需要借助JSON转换工具(如fastjson等)将对象转成JSON字符串再输出。注意:虽然指定了@Produces(MediaType.APPLICATION_JSON),但当输出不是标准JSON时,框架并不会报错,但这会造成前端程序处理的困惑,即前端程序明明拿到的是JSON格式,但处理...原创 2019-04-21 15:32:10 · 1012 阅读 · 0 评论 -
Jersey框架常用注解5:参数获取注解
JAX-RS标准支持丰富的参数获取方式,可以获取查询参数、表单参数、请求头、文件、路径等各种类型的参数。@QueryParamHTTP请求路径中的?k1=v1&k2=v2这样的键值对称为查询参数,@QueryParam注解用来获取HTTP地址中的查询参数。举例:假设HTTP访问地址为http://localhost/user?name=Michale&age=120,则在方法...原创 2019-04-21 14:46:05 · 1256 阅读 · 0 评论 -
Jersey框架常用注解4:最强大的注解@Context
@Context注解该注解用来注入上下文参数,和Spring的@AutoWired效果类似。可以注入ResourceInfo、UriInfo、HttpHeaders、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse、SecurityContext等对象。使用频率较高的对象如下:ResourceInfo:资...原创 2019-04-21 13:53:20 · 9086 阅读 · 0 评论 -
Jersey框架常用注解3:媒体类型注解@Consumes和@Produces
@Consumes指定http请求的MIME类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。@Produces指定http响应的MIME类型,默认是*/*,表示任意的MIME类型。该注解的值是数组类型,支持多个MIME类型,可以使用MediaType来指定MIME类型。例如指定创建用户的方法消费的媒体类型...原创 2019-04-21 12:30:10 · 16085 阅读 · 0 评论 -
Jersey框架常用注解2:@Path和@PathParam注解
什么是资源(Resource)所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的标识符。应用,资源和子资源一个完整的资源访问路径(URI)由以下部分构...原创 2019-04-21 10:56:59 · 12884 阅读 · 2 评论 -
Jersey框架常用注解1:HTTP请求方法注解
HTTP请求的方法HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。HTTP请求方法注解Jersey框架提供的@GET、@POST、@P...原创 2020-01-05 10:02:13 · 1024 阅读 · 0 评论