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

jibx_Jibx Jersey2集成相关推荐

  1. Jibx Jersey2集成

    Jersey2为Jackson和JAXB提供内置支持. 但是默认情况下不支持Jibx. 要将Jibx与Jersey2结合使用,我们将XML输入作为流,并在接收到请求之后,使用Jibx对其进行解析. 但 ...

  2. Resteasy集成Spring

    很简单,都用最新的版本就可以了.之前在网上找的教程都是用resteasy2.x和spring3集成,但是resteasy2.x和spring4是不行的,弄了很久.最后换成最新的resteasy3.x好 ...

  3. jersey spring_实施Jersey 2 Spring集成

    jersey spring Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API ...

  4. 实施Jersey 2 Spring集成

    Jersey是Oracle提供的出色的Java JAX-RS规范参考实现. 去年,当我们开始为大容量网站构建RESTful后端Web服务时,我们选择使用JAX-RS API作为我们的REST框架和Sp ...

  5. Java Jersey2使用总结

    原文  http://blog.segmentfault.com/lenbo_ma/1190000000495321 主题 Java 前言 在短信平台一期工作中,为便于移动平台的开发,使用了Java ...

  6. Springboot集成Jersey

    Springboot集成Jersey ​ Springboot支持Jersey1.x和Jersey2.x,我们这里只介绍Springboot对Jersey2.x的支持.springboot对jerse ...

  7. Nignx集成fastDFS后访问Nginx一直在加载中解决

    问题描述: Nginx集成fastDFS后,访问Nginx一直在加载中,得不到页面.查看Nginx的错误日志: 可以看到是fastdfs.conf的配置错误,tracker的ip没有修改: fastd ...

  8. Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...

  9. 将TVM集成到PyTorch

    将TVM集成到PyTorch 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.PyTo ...

最新文章

  1. 利用Kafka和Cassandra构建实时异常检测实验
  2. R语言进行缺失值填充(Filling in missing values):使用R原生方法、data.table、dplyr等方案
  3. C语言经典例83-求0—7所能组成的奇数个数
  4. 公布获奖名单推文文案_国学养正·趣味竞答获奖名单公布啦
  5. java svn安装地址_SVN的安装和配置
  6. python框架Flask学习笔记之get和post请求
  7. Android studio3.0开启抓包功能打包会使apk体积增大好几倍
  8. c#进阶(4)—— Redis 用于消息队列的存储
  9. tomcat端口修改后在Eclipse中启动无效问题解决
  10. VScode使用Git拉取代码到本地提示“在签出前,请清理存储工作树”
  11. TextView实现歌词同步《IT蓝豹》
  12. 搜索整理MyEclipse 快捷键
  13. K60学习笔记(二)——FTM多功能定时器模块
  14. MATLAB函数拟合使用
  15. Resource Hacker-资源替换工具
  16. echarts散列图示例
  17. 企业级网络架构—云平台高可用网络的修炼之道
  18. data_2 测试工作日志
  19. 第四十五讲:神州防火墙P2P流量控制配置
  20. wbe自动化测试----xpath定位与CSS定位

热门文章

  1. 【并查集】【图论】旅行(ssl 1312)
  2. Sentinel(五)之流量控制
  3. 两张趣图助你理解 HTTP 状态码
  4. Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
  5. Java程序员最常犯的 10 个错误
  6. Office基础和计算机操作基础的知识点(一)
  7. jquery动画与事件案例
  8. 多功能语音播放器上线啦~
  9. 当当网新用户注册界面——CSS代码
  10. Spring XML中如何使用 符号,比如数据库MySQL连接