jibx_Jibx Jersey2集成

jibx

Jersey2为Jackson和JAXB提供内置支持。 但是默认情况下不支持Jibx。 要将Jibx与Jersey2结合使用,我们将XML输入作为流,并在接收到请求之后,使用Jibx对其进行解析。 但是实际上,有更好的方法可以使用MessageBodyReader和MessageBodyWriter API来实现相同目的。 这是可以实现的方式:

  1. 为使用Jibx的XML定义新的提供程序
  2. 向Jersey ResourceConfig注册
@Provider
public class JibxXmlProvider implements MessageBodyReader<Object>, MessageBodyWriter<Object>  {public boolean isReadable(Class<?> type, Type genericType,Annotation[] annotations, MediaType mediaType) {     if(!MediaType.APPLICATION_XML_TYPE.equals(mediaType)){return false;}try {BindingDirectory.getFactory( type );} catch (JiBXException e) {return false;}return true;}public boolean isWriteable(Class<?> type, Type genericType,Annotation[] annotations, MediaType mediaType ) {      if(!MediaType.APPLICATION_XML_TYPE.equals(mediaType)){return false;}try {BindingDirectory.getFactory( type );} catch (JiBXException e) {return false;}return true;}public Object readFrom(Class<Object> type, Type genericType,Annotation[] annotations, MediaType mediaType,MultivaluedMap<String, String> httpHeaders, InputStream entityStream)throws IOException, WebApplicationException {try {IBindingFactory factory = BindingDirectory.getFactory( type );IUnmarshallingContext context = factory.createUnmarshallingContext();return context.unmarshalDocument( entityStream, null );        } catch (Exception e) {e.printStackTrace();}return null;}public void writeTo(Object obj, Class<?> type, Type genericType,Annotation[] annotations, MediaType mediaType,MultivaluedMap<String, Object> headers, OutputStream outputStream)throws IOException, WebApplicationException {try {IBindingFactory factory = BindingDirectory.getFactory( type );IMarshallingContext context = factory.createMarshallingContext();context.marshalDocument( obj, "UTF-8", null, outputStream );}catch ( Exception e ) {e.printStackTrace();}              }public long getSize(Object obj, Class<?> type, Type genericType,Annotation[] annotations, MediaType mediaType ) {return -1;}}

定义了此类后,请按照以下步骤在Jersey上注册:

public class JerseyResourceInitializer extends ResourceConfig {public JerseyResourceInitializer() {packages(true, "com.adaequare.processing.service");// This line registers JibxXmlProvider as a new provider.register(JibxXmlProvider.class, MessageBodyReader.class, MessageBodyWriter.class);}}

完成此配置后,每当有新请求出现时,就会调用JibxXmlProvider的isReadable方法。 如果计算结果为true,则调用readFrom进行对象转换。

希望这可以帮助!

翻译自: https://www.javacodegeeks.com/2014/04/jibx-jersey2-integration.html

jibx

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

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

相关文章

PCM复用设备的安装和使用注意事项

PCM设备在通信系统中的是一种很常用的设备&#xff0c;但是不少用户在购买了PCM设备后&#xff0c;都不懂怎么去安装使用PCM复用设备。下面&#xff0c;飞畅科技的小编来为大家详细介绍下PCM复用设备的安装和使用注意事项&#xff0c;一起来看看吧&#xff01; PCM复用设备的安…

PCM复用设备功能介绍

PCM设备功能主要分为四大部分&#xff1a;接入与复用、时隙交叉、2M线路保护、接口测试功能。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备的功能&#xff0c;一起来看看吧&#xff01; PCM复用功能&#xff1a; 用户业务接入与复用是PCM设备最基本的功能&#xff…

对象和索引流

我本来要写一篇关于如何将流与每个元素的索引混合的文章&#xff0c;但是Baeldung上的人们已经很好地涵盖了这个主题 &#xff01; 鉴于我是他们编辑团队的一员&#xff0c;我为他们/我们感到自豪。 有趣的是&#xff0c;特别是Streams中的Java函数式编程如何使我们脱离了一些…

PCM复用设备主要传输什么业务?

PCM即脉冲编码调制&#xff0c;在通信系统中完成将语音信号数字化功能。PCM的实现主要包括三个步骤完成&#xff1a;抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。 1、 抽样&#xff1a;所谓抽样&#xff0c;就是对模拟信号进行周期性扫描&…

Pcm设备2M通道,E1的基础知识介绍

Pcm设备2M通道在业内常简述为E1&#xff0c;E1这个词在通信行业起着非常重要的作用&#xff0c;相信刚接触这个词的人必定会感到陌生。接下来就由飞畅科技的小编来为您详细的介绍一下E1的基础知识。 一、E1概述 E1是ITU-T制定并由欧洲邮政与电信协会&#xff08;CEPT&#xff…

数据结构栈的知识_数据知识栈

数据结构栈的知识并发不适合胆小者 我们都知道并发编程很难正确实现。 这就是为什么在执行线程任务之后要进行大量的设计和代码审查会议。 您永远不会将并发问题分配给经验不足的开发人员。 仔细分析问题空间&#xff0c;提出设计&#xff0c;并记录和审查解决方案。 这就是通…

PCM设备E1保护切换功能介绍

脉冲编码调制&#xff08;PulseCodeModulation&#xff09;&#xff0c;简称PCM。是对连续变化的模拟信号进行抽样、量化和编码产生的数字信号。PCM的优点就是音质好&#xff0c;缺点就是体积大。PCM可以提供用户从2M到155M速率的数字数据专线业务&#xff0c;也可以提供话音、…

在Eclipse中使用Java 12

1.安装JDK 12 链接&#xff1a; https &#xff1a; //www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 2.安装Eclipse 4.11 链接&#xff1a; https &#xff1a; //download.eclipse.org/eclipse/downloads/drops4/R-4.11-201903070500 …

PCM设备的作用,为什么要选用PCM设备?

PCM设备在通信系统中是利用E1&#xff08;2M&#xff09;线路进行传输多种业务数据的基群设备。但是不少用户在开始使用之前&#xff0c;并不能确定PCM能否满足他的需求&#xff0c;也不清楚有PCM这样的一个名词。接下来飞畅科技的小编来为大家介绍下PCM设备的作用&#xff0c;…

RS485光纤中继器有哪些优缺点?

信号在传输过程中会不断衰减&#xff0c;为了不让信号衰减对通信产生影响&#xff0c;产生了中继器。仅做放大信号用&#xff0c;把信号传导偏远的地方。 中继器又被称为转换器或放大器&#xff0c;执行物理层协议&#xff0c;负责第一层&#xff08;物理层&#xff09;的数据中…

intellij注释模板_IntelliJ中的实时模板

intellij注释模板如上所述这里 &#xff0c;的IntelliJ的现场模板可以让你轻松地插入预定义的代码片段到你的源代码。 我在下面发布了一些我最常用的模板&#xff0c;链接到我在GitHub上的模板文件的完整列表&#xff08;作为设置新IntelliJ环境时的参考&#xff09;&#xff…

485转换器产品功能特点及技术参数介绍

485转换器主要的作用是将单端的RS-232信号转换为平衡差分的RS-485或RS-422信号。RS-485、RS-422自动识别功能&#xff0c;使用更加简单。接下来就由飞畅科技的小编来为大家详细介绍下485转换器的产品功能特点及技术参数&#xff0c;一起来看看吧&#xff01; 485转换器产品特点…

无浪费编码

本文介绍了如何通过减少软件堆栈中的浪费来高效解决有意义的事件处理问题。 Java通常被视为无法在低内存环境中高效运行的内存猪。 目的是证明许多人认为不可能的事情&#xff0c;有意义的java程序几乎可以在没有内存的情况下运行。 示例流程 在Java的单个线程上&#xff0c;…

485光纤转换器产品分类介绍

485转换器用于点对点、点对多点通讯、工业控制自动化、道路交通控制自动化、智能卡、考勤、门禁、售饭系统、工业集散分布系统、闭路监控、安防系统、POS系统、楼宇自控系统、自助银行系统。接下来就由飞畅科技的小编来为大家详细介绍下485转换器的分类&#xff0c;一起来看看吧…

RS232与串口通信的4个注意事项详解

RS232和串口通信&#xff0c;用于串口设备的数据采集软件&#xff0c;包括仪表、天平、秤或任何RS232仪器。WinWedge直接将数据捕获到Excel、Access或任何Windows应用程序或网页。它甚至可以从COM端口发送命令&#xff0c;因此您可以通过热键&#xff0c;按钮或DDE控制您的设备…

RS485集线器知识详解

集线器的英文名称就是我们通常见到的“HUB”&#xff0c;英文“HUB”是“中心”意思&#xff0c;集线器的主要功能是对接收到的信号进行再生整形放大&#xff0c;以扩大网络的传输距离&#xff0c;同时把所有节点集中在以它为中心的节点上。 集线器工作原理 它工作于OSI参考模…

HttpMate简介

没有人愿意编写不良代码。 没有人会想到“我要创建最纠结和最不可读的代码&#xff0c;并确保它不可扩展且难以修改或浏览”&#xff0c;从而开始了应用程序开发。 首先要有良好的意愿&#xff0c;甚至可能要牢记所有Clean Code和SOLID原则。 但是&#xff0c;折衷方案通常以所…

rs485转rs232串口转换器常见的故障剖析

在实际应用中&#xff0c;rs485串口、rs232串口可能会用于同一个传输线路上&#xff0c;但这两个接口的电气特性不一致&#xff0c;数据不能从这两个串口中相互传输或是rs232串口功能不足需要额外用到rs485串口&#xff0c;这两种情况都可以使用rs485转换器。 rs485转rs232串口…

TDMoverIP是什么?tdmoverip产品特性介绍

tdmoverip伪线路仿真产品&#xff0c;也称为IP电路仿真器或反向网桥。接下来就由飞畅科技的小编来为大家详细讲解下TDMoverIP及其产品特性&#xff0c;一起来看看吧&#xff01; tdmoverip简介 该系列基于TDM over IP技术&#xff0c;实现端到端电路仿真(PWE3)&#xff0c;符合…

java用i/o查看文件_Java文件I / O基础

java用i/o查看文件Java 7引入了java.nio.file包&#xff0c;以提供对文件I / O的全面支持。 除了许多其他功能之外&#xff0c;该软件包还包括Files类&#xff08;如果您已经使用此类&#xff0c;则可以在这里停止阅读&#xff09;。 文件包含许多静态方法&#xff0c;可在处理…