input发送a.jax

我试图想到一个更好的标题,但未能拿出一个! 请多多包涵……。

JAX-RS 2.0规范允许我们无缝地将JAXB对象编组到HTTP请求/响应主体,或从HTTP请求/响应主体中解组。 简而言之,我们可以使用域对象,而不必担心基于JAX-RS的解决方案中的低级XML序列化。

在开始之前, 这是指向下面引用的源代码的GitHub链接 –并不多,但以防万一,您需要窥视一下。

开发环境

  • Java EE 7(当然!)
  • JDK 8-不要激动,到目前为止还没有lambda!
  • Netbeans 8
  • Wildfly 8和GlassFish 4(是的,已经在两台服务器上都进行了测试)–它只是在Netbeans中切换服务器,花费15/30秒左右的时间。 所以这没什么大不了的!

首先,让我们看一下用例,这些用例演示了JAX-RS实现的开箱即用功能,以便通过网络处理带有JAXB注释的实体/域对象。

这是一个简单的示例,其中我们尝试“ 获取 ”域对象的表示,该对象恰好是用JAXB 注释的 POJO

当我们触发GET HTTP请求时,将获得以下JSON响应 。 这里使用的工具是邮递员

同样,也可以通过简单地切换“ 接受”来观察XML响应。   HTTP标头到application / xml

让我们看一个案例,其中我们尝试通过网络“ 发布 ”域对象(XML / JSON)的表示形式

通过邮递员启动POST请求

服务器日志中STDOUT的代码段(按照上面的代码)

因此,我们刚刚看到,在JAXRS中,装饰有JAXB批注的域对象可以在网上交换XML和JSON格式而不会费劲!

考虑一个场景,在该场景中我们已经可以使用丰富的域Java对象。 但

  • 我们无权访问源代码
  • 我们无法真正使用JAXB批注对其进行批注
  • 域实体是不兼容JAXB的旧式POJO。

在这里,我们可以利用JAX-RS 2.0中提供的自定义内容处理功能MessageBodyWriterMessageBodyReader接口为我们提供了一种插入自定义编组/解组机制的方式,并允许JAX-RS运行时处理其余工作!

  • 下面的示例主要处理XML和JSON格式,但是请注意,这些接口可用于“任何”数据格式-互联网上到处都是数百种,每天都有新的接口出现!

让我们看一些代码。 。 。 。 再次…..

首先,为了模拟get场景,让我们仅从JAXRS资源方法返回Legacy POJO的实例它与JAXB不兼容 /我们没有通过JAXB批注装饰它的源代码

您如何看待这将通过网络串行化为XML ? 我们对javax.ws.rs.ext.MessageBodyWriter接口的定制实现将有助于实现这一点。

该接口有3个抽象方法,一个需要实现。 该片段展示了writeTo()方法,其中包含大量的转换逻辑。

  • 您可以在Java EE 7 javadocs中进一步了解它

因此,和往常一样,我们要求邮递员为我们验证事情,这就是他不得不说的。 不用麻烦! 想象一下,如果直接从持久性(DB)存储中获取旧版POJO表示形式-您需要做的就是返回它,因为在线表示形式已得到处理

现在,相反的情况–从我们的客户端层发布 XML表示,并观察它被序列化到Legacy POJO实例中。 想坚持下去吗? 当然,继续并解雇实体管理器! (不要忘记@ javax.ejb.Stateless !)

您如何看待客户端发送XML有效负载通过网络转换为我们的Leagcy POJO 实例 ? 我们对javax.ws.rs.ext.MessageBodyReader接口的自定义实现将使这种情况发生。

呼叫Postman,通过网络发布 XML表示,然后查看结果

只是为了确保我们的旧版POJO确实已序列化– 通过服务器STDOUT日志进行了确认

因此,借助一个简单的示例,我们看到了在基于JAXRS的实现中定义自定义转换/类包装逻辑来处理自定义域对象/实体/ POJO的过程是多么容易。

签字之前的几点观察

  • GlassFish4 中的 JAXRS实现不支持通过装饰有JAXB的POJO进行无缝的JSON序列化/反序列化Wildfly 8的魅力十足 ! 荣誉!
  • 在将marshall / unmarshall流程委派给实体拦截器(读取器/写入器实现)后,对JSON的无缝支持不再起作用(在GlassFish和Wildfly中均是如此)。 不知道为什么。 我猜想JAXRS实现是直接从/分别向输入/输出流中提取有效负载,并且以某种方式没有中间层可用于内容协商

我希望我不会在这里错过任何把戏! 如果您这样认为,请足够热情地通知我!

好吧,仅此而已! 编码愉快…………!

翻译自: https://www.javacodegeeks.com/2014/04/jax-rs-2-0-custom-content-handling.html

input发送a.jax

input发送a.jax_JAX-RS 2.0:自定义内容处理相关推荐

  1. input发送a.jax_Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权...

    input发送a.jax 在使用已可用的HTTP协议实施Web服务时,REST带来了很多便利. 通过仅通过指定的URL触发GET,POST和其他HTTP方法,您将确保通过REST服务的响应来完成某些工 ...

  2. input发送a.jax_Java REST JAX-RS 2.0 –如何处理日期,时间和时间戳记数据类型

    input发送a.jax 无论是X-Form-Urlencoded还是JSON HTTP发布到REST资源端点,对于与日期或时间相关的数据都没有特定的"数据类型". 大多数开发人员 ...

  3. input发送a.jax_Java EE 7和JAX-RS 2.0

    input发送a.jax 带有JAX-RS 2.0的Java EE 7带来了几个有用的功能,这些功能进一步简化了开发并导致创建了更加复杂但精简的Java SE / EE RESTful应用程序. 亚当 ...

  4. input发送a.jax_JAX-RS 2.0:服务器端处理管道

    input发送a.jax 这篇文章的灵感来自JAX-RS 2.0规范文档 (附录C)中的Processing Pipeline部分. 我喜欢它的原因在于它提供了JAX-RS中所有模块的漂亮快照-以准备 ...

  5. input发送a.jax_Java EE 7 / JAX-RS 2.0 – REST上的CORS

    input发送a.jax Java EE REST应用程序在开箱即用的开发机器上通常可以很好地运行,在该机器上,所有服务器端资源和客户端UI都指向" localhost"或127. ...

  6. input发送a.jax_JAX-RS 2.0的新功能– @BeanParam批注

    input发送a.jax 至少可以说JAX-RS很棒,也是我的最爱之一! 为什么? 功能丰富 直观(因此学习曲线不那么陡峭) 易于使用和开发 具有出色的RI – Jersey , RestEasy等 ...

  7. input发送a.jax_JAX-RS 2.0中的透明PATCH支持

    input发送a.jax PATCH方法是最不受欢迎的HTTP方法之一,因为直到最近才真正没有一种标准的PATCH格式. 一段时间以来,它已经针对JSON进行了标准化,因此有很多库可以为您完成繁重的工 ...

  8. input发送a.jax_与时俱进:在JAX-RS API中采用OpenAPI v3.0.0

    input发送a.jax 看到时间流逝如此之快,真是太恐怖了! OpenAPI规范3.0.0是对Swagger规范的重大改进,大部分已于一年前发布,但工具赶上了一段时间. 但是,随着最近Swagger ...

  9. JAX-RS 2.0:自定义内容处理

    我试图想到一个更好的标题,但未能拿出一个! 请多多包涵--. JAX-RS 2.0规范允许我们无缝地将JAXB对象编组到HTTP请求/响应主体/从HTTP请求/响应主体中解组. 简而言之,我们可以使用 ...

最新文章

  1. 100%抄袭!ICLR 2022投稿竟公然剽窃两篇顶会,程序主席放「实锤」严词拒稿
  2. cglib动态代理jar包_代理模式详解:静态代理+JDK/CGLIB 动态代理实战
  3. linux ubuntu 17,Ubuntu 17.04(Zesty Zapus)已经结束支持,请升级到Ubuntu 17.10
  4. 博士申请 | 哥本哈根大学招收机器学习和信息检索全奖博士生(年薪34万)
  5. 数据库-in子句-exists子句
  6. CH - 0304 IncDec Sequence(差分+思维)
  7. Spring Boot----监控管理
  8. 【文章】工作之余,放松心情
  9. 【VMCloud云平台】SCCM(八) OSD(一)- 部署准备
  10. 组件注册@ComponentScan的自动扫描和指定扫描规则
  11. 1177: 按要求排序(指针专题)_数据结构 8 基础排序算法详解、快速排序的实现、了解分治法...
  12. 自定义新浪微博分享按钮
  13. linux ad7705驱动程序,tm7705_51单机片驱动
  14. C#实现简单的加密防止拷贝复制软件
  15. android 6.0 大神f2,酷派大神F2刷机包 64位1080p 全高清版 MIUI8安卓6.0 插桩适配ROM 锁屏画报 极致体验...
  16. pytorch导出onnx格式模型时,不固定输入输出维度
  17. 富途客户端软件测试笔试and面试
  18. STL容器底层数据结构
  19. PowerDesigner16.5如何导出表到word的方法
  20. tar 命令打包压缩tar.gz,不包含当前文件夹路径

热门文章

  1. [XSY4170] 妹子(线段树上二分)
  2. [XSY3383]多线程(笛卡尔树,DP)
  3. Java 多线程 —— 深入理解 volatile 的原理以及应用
  4. Java 父类子类的对象初始化过程
  5. Oracle入门(十二H)之设置、恢复和删除不可用列
  6. Failed to execute
  7. 分布式锁之Redis6+Lua脚本实现原生分布式锁
  8. SpringBootAdmin客户端接入
  9. 把一个不等于0的数最右侧的1提取出来
  10. 尚硅谷2020最新版SpringCloud(H版alibaba)框架开发教程全套完整版从入门到精通