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

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

2

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

1个

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

3

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

4

通过邮递员启动POST请求

6

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

5

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

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

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

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

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

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

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

7

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

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

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

8

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

9

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

101

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

13

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

11

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

12

因此,借助一个简单的示例,我们看到了在基于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业以太网交换机出现温度过高如何处理?

工业交换机由于其良好的通信性能、超强的抗磁抗干扰性被应用在工业环境下。我们都知道工业环境是很恶劣的,加上工业交换机要连续不间断的工作,很容易造成工业交换机过热的现象!因此除了产品本身采用宽温度范围的元器件之外,我们更…

如何将Java应用程序置于Apache HTTP服务器之后

在过去 ,将Apache HTTP服务器置于Java应用程序服务器或Java应用程序本身的前面是很常见的事情。 其背后的原因非常简单,可以以简单的方式添加缓存,还可以添加负载平衡,并且在此静态内容之上可以由Apache HTTP提供服务&#xff0c…

工业以太网交换机的概念及其主要功能介绍

随着互联网技术的快速发展,工业以太网在工业的通信领域也在大展身手,工业以太网交换机作为重要的通信设备,在整个工业通信行业中有着极其重要的功能!下面,飞畅科技的小编就来为大家详细介绍一下什么是工业以太网交换机…

Zigbee 电动智能窗帘系统 解决方案

随着社会经济结构、家庭人口结构以及信息技术的发展变化以及人类对家居环境的安全性、舒适性、效率性要求的提高,造成家居智能化的需求大大增加, 同时越来越多的家庭要求智能家居产品不仅要满足一些基本的需求,更要求智能家居系统在功能扩展、…

oracle utf8 varchar,Oracle中字符集的类型决定varchar2的字符长度

1.前几天往数据库表里面插入数据的报了一个这样的错误如下:SQL> insert into student values(中华人民共和,60);insert into student values(中华人民共和,60)*第 1 行出现错误:ORA-12899: 列 "SYSTEM"."STUDENT"."NAME" 的值太大…

为什么BAT这些大企业都喜欢用LoRa技术?

相信对于很多朋友来说LORA通讯协议还是比较陌生的,因为LORA这种通讯技术是在2016年开始才正式传入中国的。现在阿里、Google、腾讯等互联网巨头都已经加入了LORA联盟,最有意思的是亚马逊,它在今年西雅图举行的硬件大会上,发布了一…

蓝牙的原理,蓝牙耳机怎么连接手机

蓝牙技术是一种无线数据和语音通信的通信协议,它是一种基于低成本的近距离的无线连接,为固定和移动设备监理通信环境的一种近距离无线连接技术。 蓝牙的作用 蓝牙使今天的一些便携式移动设备和计算机是被能够不需要线路就能相互链接,并且可以…

物联网中的无线通信模块到底是什么

物联网市场的爆发式增长速度,离不开无线通信模块产品的强有力的拉动,无线通信模块也是物联网的核心,但是很多人只知道物联网却对于组成物联网的无线通信模块知之甚少,所以下面就让我们一起来了解一下,物联网中的无线通…

基于NB-IOT的智能烟感应用方案

据国家有关部门发布的2018年火灾数据统计,全国共发生火灾23.7万起,造成1407人死亡,伤798人。直接财产损失36.75亿元,其中居民住宅火灾10.7万起,超过全年火灾总数的45%,其原因与我国当前火灾预防基础设施建设…

带网管工业交换机跟不带网管交换机的差别

交换机是局域网的一种核心设备,可以自主工作的多个计算机系统连接在一起,实现局部的软硬件共享的网络。通常的交换机是利用第二层的MAC地址的进行工作的,所以一般的家庭交换机基本上都是二层交换机。交换机有带网管的也有不带网管的&#xff…

通讯模块板载天线设计方法

注:本文来自 成都亿佰特 蛇形板载天线是无线通讯模块应用最广泛的一种天线类型,应用在蓝牙、WiFi、ZigBee等对性能要求不高、但对空间要求比较高的领域。今天就让成都亿佰特小编给大家普及一下蛇形板载天线的相关知识吧~ 作为天线工程师,每…

物联网在水位监测中的应用

注:本文来自 成都亿佰特 基于E820-DTU(2I2-433L)和E90-DTU(433C30)的水位监测应用 水位资料与人类社会生活和生产关系密切。水利工程的规划、设计、施工和管理需要水位资料。桥梁、港口、航道、给排水等工程建设也需水位资料。防汛抗旱中,水位资料更为…

接入层工业交换机、汇聚层工业交换机与核心层工业交换机区别

了解工业交换机的人都知道,工业交换机被划分为接入层工业交换机、汇聚层工业交换机和核心层工业交换机,今天,飞畅科技的小编就来为大家详细说下这三种工业交换机,感兴趣的朋友就一起来看看吧! 首先,核心层工…

E820-DTU与昆仑通态组态软件联机

随着工业自动化水平的迅速提高,计算机在工业领域的广泛应用,人们对工业自动化的要求越来越高,种类繁多的控制设备和过程监控装置在工业领域的应用,使得传统的工业控制软件已无法满足用户的各种需求。 在开发传统的工业控制软件时&…

BLE蓝牙和传统蓝牙的区别

在移动设备上使用的蓝牙协议大多都是4.0,而蓝牙的4.0又有两个分支,经典4.0蓝牙和BLE4.0蓝牙,经典4.0就是传统的3.0蓝牙升级而成,向下兼容。而BLE4.0蓝牙是一个新的分支,不向下兼容。相较于传统的蓝牙,BLE蓝…

什么是核心交换机?如何选择核心交换机?

在系统组网中,经常会提到接入交换机、汇聚交换机、核心交换机。通常,我们将网络中直接面向用户连接或访问网络的部分称为接入层,将位于接入层和核心层之间的部分称为分布层或汇聚层,而将网络主干部分称为核心层。那么什么是核心交…

5W-Lora电台的远距离传输优势

本文来自 成都亿佰特 无线数传电台作为一种通讯媒介,与光纤、微波、明线一样,有一定的适用范围:它提供某些特殊条件下专网中监控信号的实时、可靠的数据传输,具有成本低、安装维护方便、绕射能力强、组网结构灵活、覆盖范围远的特…

什么是网管交换机?

交换机的作用我们就不多说了,熟悉通信领域的人都知道交换机是目前我们进行数据通信或者联网使用最多的一种设备。因为使用的多,所以交换机的种类也非常多,其中最常见的就是网管交换机和非网管(傻瓜)交换机。非网管交换…

无线模块在“水盾”防溺水安全预警系统的应用

一、"水盾"防溺水安全预警系统简介 "水盾"防溺水安全预警系统(下文简称,"水盾"系统),主要由5大部分组成:客户端、转发中继系统主机、系统软件、报警终端。 "水盾"系统的客户端…

java wcf_尝试将WCF映射到Java术语

java wcf通过写这篇文章,我冒着被.NET和Java社区拒绝的巨大风险。 这是为了说明Windows Communication Foundation的WCF用Java来解释。 从WCF到Java的映射并不简单。 我缺乏对WFC使用者应该了解的与服务通信类型的了解:请求/响应或异步消息传递。 我很难…