JBoss模块很烂,无法在JBoss 7下使用自定义Resteasy / JAX-RS

由于JBoss EAP 6.1 / AS 7.2.0是模块化的,并且您可以排除Webapp可见的模块,因此您希望可以轻松地忽略内置的JAX-RS实现(Rest Easy 2.3.6)并使用它。自定义的(3.0.6)。 但是,可悲的是,事实并非如此。 您必须遵守官方指南的建议,即在全球范围内升级Rest Easy –前提是服务器上运行的其他Web应用程序均不会因升级而中断。

这应该足以排除内置的Rest Easy,并能够使用webapp中包含的版本:

<!-- jboss-deployment-structure.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure><deployment><exclude-subsystems><subsystem name="resteasy"/></exclude-subsystems></deployment></jboss-deployment-structure>

但是,它远没有奏效。 这几乎可以完成工作(尽管其中的少数排除可能是不必要的):

<!-- jboss-deployment-structure.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure><deployment><exclude-subsystems><subsystem name="resteasy"/></exclude-subsystems><exclusions><module name="org.apache.log4j" /><module name="org.apache.commons.logging"/><module name="org.jboss.as.jaxrs"/><module name="org.jboss.resteasy.resteasy-jaxrs"/><module name="org.jboss.resteasy.resteasy-cdi"/><module name="org.jboss.resteasy.jackson-provider"/><module name="org.jboss.resteasy.resteasy-atom-provider"/><module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/><module name="org.jboss.resteasy.resteasy-jaxb-provider"/><module name="org.jboss.resteasy.resteasy-jettison-provider"/><module name="org.jboss.resteasy.resteasy-jsapi"/><module name="org.jboss.resteasy.resteasy-multipart-provider"/><module name="org.jboss.resteasy.resteasy-yaml-provider"/><module name="org.codehaus.jackson.jackson-core-asl"/><module name="org.codehaus.jackson.jackson-jaxrs"/><module name="org.codehaus.jackson.jackson-mapper-asl"/><module name="org.codehaus.jackson.jackson-xc"/><module name="org.codehaus.jettison"/><module name="javax.ws.rs.api"/></exclusions></deployment></jboss-deployment-structure>

但是,只有近。 问题是排除javax.ws.rs.api无效。 似乎不能排除核心Java EE API。 死路。

顺便说一句,这是我最后与jax-rs相关的依赖项:

// resteasyVersion = '3.0.6.Final'
compile group: 'org.jboss.resteasy', name: 'jaxrs-api', version: resteasyVersion
compile group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: resteasyVersion
compile group: 'org.jboss.resteasy', name: 'resteasy-jackson2-provider', version: resteasyVersion // JSONP
compile group: 'org.jboss.resteasy', name: 'async-http-servlet-3.0', version: resteasyVersion // Required at runtime
compile group: 'org.jboss.resteasy', name: 'resteasy-servlet-initializer', version: resteasyVersion // Required at runtime

失败尝试的大概历史

我不再记得我经历过的所有死胡同,但是这里是我在部署或运行​​时遇到的异常的大致概述。

java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher

–通过将org.jboss.resteasy:async-http-servlet-3.0:3.0.6.Final到依赖项进行org.jboss.resteasy:async-http-servlet-3.0:3.0.6.Final

java.lang.ClassCastException: myapp.rs.RestApplication cannot be cast to javax.servlet.Servlet

–通过将org.jboss.resteasy:resteasy-servlet-initializer:3.0.6.Final到依赖项进行org.jboss.resteasy:resteasy-servlet-initializer:3.0.6.Final

java.lang.NoSuchMethodError: org.jboss.resteasy.spi.ResteasyProviderFactory.<init>(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)V

–通过将更多的RestEasy / Jackson模块添加到排除列表中可能修复

java.lang.NoSuchMethodError: org.jboss.resteasy.specimpl.BuiltResponse.getHeaders()Ljavax/ws/rs/core/MultivaluedMap;

–这是无法解决的最终问题; 问题是, BuiltResponseresteasy-jaxrs从继承javax.ws.rs.core.Response不过的版本从这个类JAXRS-API 3.0.6.Final.jar是有利于忽略Response从JAX-RS 1.1 javax.ws.rs.api模块( /jboss-eap-6.1.0/modules/system/layers/base/javax/ws/rs/api/main/jboss-jaxrs-api_1.1_spec-1.0.1.Final-redhat-2.jar ),它缺少getHeaders方法,并且如上所述,不能将其排除。 (感谢allprog暗示了这一冲突 !)

结论

使用较新的JAX-RS的唯一方法是升级JBoss模块。 如果那会破坏其他Web应用程序,那么您将陷入困境。

经验教训:具有大量现成的,集成良好的功能(?)的应用程序服务器似乎很有吸引力,但是当您遇到冲突的库和类加载问题时,它们的价值就会Swift下降。 从长远来看,从您完全控制的简单事物(例如Jettty)开始,也许是一个更好的解决方案。 同样,在同一台服务器上运行多个Web应用程序在2000年也许很聪明,但如今已不值一提。 我们有足够的磁盘空间和内存,因此库的重用并不重要,并且能够在一处管理所有应用程序的全局设置的能力当然是更好的选择。 微服务FTW!

参考: JBoss模块很烂 ,在The Holy Java博客上,无法从JCG合作伙伴 Jakub Holy的JBoss 7下使用自定义Resteasy / JAX-RS 。

翻译自: https://www.javacodegeeks.com/2014/02/jboss-modules-suck-its-impossible-to-use-custom-resteasyjax-rs-under-jboss-7.html

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

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

相关文章

cad怎么将图层后置_CAD中如何将某1个图层置于其他图层之上.doc

CAD中如何将某1个图层置于其他图层之上《CAD一千零一个技巧》图层管理17种用法 CAD具备强大的图层工具功能&#xff0c;统计一共有17种&#xff0c;这17种应用大大地满足了用户编辑图层的需求&#xff0c;而这17种图层工具的具体应用&#xff0c;你都会吗&#xff1f;?1、图层…

[渝粤教育] 西南科技大学 液压与气压传动 在线考试复习资料(1)

液压与气压传动——在线考试复习资料 一、单选题 1.柱塞泵与其它泵相比( )次 A.工作压力高 B.效率低 C.速度低 D.工作压力低 2.变量泵是( ) A.排量不可变 B.排量可变 C.压力可变 D.转速可变 3.卸荷回路是属于( ) A.压力控制回路 B.方向控制回路 C.加速控制回路 D.减速控制回路…

Eclipse GlassFish 5.1就在这里!

Eclipse GlassFish 5.1的发布是Jakarta EE的重要里程碑&#xff01; 首先&#xff0c;这证实了Oracle提供的GlassFish源代码可以在Eclipse Infrastructure上构建和组装。 第二&#xff0c; 通过通过Java EE 8兼容性测试&#xff0c;它可以验证所贡献的代码是否符合Java EE 8…

[渝粤教育] 西南科技大学 电器设备及维修 在线考试复习资料

电器设备及维修——在线考试复习资料 一、单选题 1.复合同步信号包括行同步信号和( )。 A.场同步信号 B.行消隐信号 C.场消隐信号 D.场均衡信号 2.高频头主要由输入回路,混频器,本振电路和( )组成 A.自动亮度调节电路 B.自动频率调节电路 C.同步检波器 D.高频放大器 3.…

标签蛋白_His标签蛋白镍柱纯化后总有一条杂带怎么办?

小明His标签蛋白镍柱纯化有杂带怎么办啊汇研生物——His标签蛋白纯化填料家簇1.样品本身的的属性&#xff0c;His蛋白容易被体系中的蛋白酶降解时&#xff0c;此时就要在样品中加入蛋白酶抑制剂。避免在纯化过程中His蛋白被降解&#xff0c;呈现出纯化后纯度下降。2.His蛋白和其…

[渝粤教育] 西南科技大学 畜牧概论 在线考试复习资料

畜牧概论——在线考试复习资料 一、单选题 1.色氨酸在动物体内可转变为下列那一种维生素。 A.烟酸 B.叶酸 C.泛酸 D.生物素 2.根据蛋白质中的平均蛋含量可知,1克氮能合成粗蛋白质多少克。 A.5.25 B.6.00 C.6.25 D.6.75 3.赖氨酸与下列那一种氨基酸之间存在颉抗作用。 A.精氨酸…

bootstrap 树形表格渲染慢_bootstrap table轻松实现数据表格

在使用bootstrap table时可能在很多时候回用的表格来显示数据&#xff0c;如果自己写那肯定没问题&#xff0c;但是数据展示出来就麻烦多了&#xff0c;然而bootstrap table 封装了一套完善的数据表格组件&#xff0c;把从后台请求的数据很容易就展示出来了&#xff0c;bootstr…

[渝粤教育] 西南科技大学 管理运筹学与系统分析 在线考试复习资料

管理运筹学与系统分析——在线考试复习资料 一、单选题 1.下列那种方法不适用于网络时间的计算( ) A.修正分配法 B.表格计算法 C.图上计算法 D.矩阵计算法 2.在运输方案中出现退化现象,是指数字格的数目( ) A.等于mn B.大于mn-1 C.小于mn-1 D.等于mn-1 3.一元线性回归模型预测…

[渝粤教育] 西南科技大学 网络程序设计 在线考试复习资料

网络程序设计——在线考试复习资料 一、单选题 1.Sng函数的作用是( )。 A.将字符串转换为日期 B.将字符串转换为长整型 C.将字符串转换为布尔型 D.将数值转换为单精度型 2.数据库常用的函数中,返回最小值的是( )。 A.OUNT B.MIN C.VG D.SUM 3.数据库常用的函数中,计算字段值的…

ssm如何支持热部署_Java 调式、热部署、JVM 背后的支持者 Java Agent

我们平时写 Java Agent 的机会确实不多&#xff0c;也可以说几乎用不着。但其实我们一直在用它&#xff0c;而且接触的机会非常多。下面这些技术都使用了 Java Agent 技术&#xff0c;看一下你就知道为什么了。-各个 Java IDE 的调试功能&#xff0c;例如 eclipse、IntelliJ &a…

war3必须安装的游戏组件_在单独的WAR组件中对SPA资源和API实现进行分区

war3必须安装的游戏组件单页应用程序正Swift吸引人们的注意力&#xff0c;以实现基于Web的丰富&#xff0c;健壮和移动友好的应用程序。 从本质上讲&#xff0c;这需要更改应用程序体系结构&#xff0c;在该体系结构中&#xff0c;整个应用程序用户界面都是使用JavaScript来实现…

[渝粤教育] 西南科技大学 西方经济学 在线考试复习资料

西方经济学——在线考试复习资料 一、单选题 1.市场失灵指的是( ) A.在私人部门和公共部门之间资源配置不均 B.不能产生任何有用成果的市场过程 C.以市场为基础的对稀缺资源的无效率配置 D.收入分配不均 2.通常由总成本曲线的变动而引起的通货膨胀称为( ) A.需求拉动型通货膨胀…

[渝粤教育] 西南科技大学 财务管理与分析 在线考试复习资料(4)

财务管理与分析——在线考试复习资料 一、单选题 1.某投资方案年营业收入240万元,年销售成本170万元,其中折旧70万元,所得税率40%,则该方案年营业现金净流量为( )。 A.70万元 B.112万元 C.140万元 D.84万元 2.如果投资规模不同的两个独立投资项目的评价,应优先选择( )。 A.净现…

避免在Cassandra中使用清单

Apache Cassandra是一种快速且可扩展的数据库&#xff0c;多年来&#xff0c;它变得与传统SQL数据库一样容易使用。 至少在表面上。 您使用类似SQL的查询&#xff0c;但是它们有很多限制&#xff1b; 您有一个模式&#xff0c;但是修改它并不像在SQL数据库中那样灵活&#xff…

matlab 矩阵jocobi迭代_高校MATLAB被禁用,掀起中国本土软件脆弱的冰山一角

近日哈工大、哈工程高校被美国禁止用正版的MATLAB软件&#xff0c;此消息一出可谓使得全体用过MATLAB的工作者为之震撼。因为少了这款软件&#xff0c;无异于缺失了有力的左膀右臂&#xff0c;如何才能游刃有余地遨游在科研和工作领域呢&#xff1f;然而对于外行人却不知道这款…

[渝粤教育] 西南科技大学 高级英语(2) 在线考试复习资料

高级英语&#xff08;2&#xff09;——在线考试复习资料 一、单选题 1. The speaker went on and on, she had to ________ herself to stay awake. A. punch B. pink C. pinch D. pin 2. The two daughters’ sweet words _______ King Lear into believing that they reall…

【渝粤教育】电大中专学前儿童发展心理学作业 题库

1学前儿童心理学是()的分支。 A发展心理学 B儿童发展心理学 C儿童教育心理学 D儿童心理学 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2提出儿童的心理最初只是一块白板的是()。 A卢梭 B洛克 C福禄贝尔 D维果斯基 错误 正确答案&#xff1a;左边查询 学生答案&a…

controll层跳转页面_java web开发中的各种层

java后端开发前&#xff0c;还是应该将各种层划分好&#xff0c;知道各自的作用&#xff0c;今天做一下总结。Dao层、Entity层、Service层、Controller层、view层1、Dao层(持久层、数据访问层)功能&#xff1a;只负责与数据库的数据进行交互&#xff0c;dao层是在Mybatis框架下…

【渝粤教育】电大中专审计原理与实务_1作业 题库

1.下列关于国家审计的表述&#xff0c;正确的是() A.是对综合经济管理部门和专业监督部门的监督工作实施再监督 B.审计主体是中央审计机关&#xff0c;不包括地方审计机关 C.只对财政预算执行的情况和决算进行审计 D.审计机关做出的审计决定&#xff0c;被审计单位和有关人员可…

【渝粤教育】电大中专幼儿园课程论 (1)作业 题库

作业视频教务托管&#xff0c;壹叁路路贰陆陆壹〇肆〇 显性课程是 ( )的课程 A.指定的 B.随机的 C.无计划的 D.有计划的 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.幼儿园课程最核心的要素是( ) A.教育方法 B.教育理念 C.教学原则 D.课程内容 错误 正确…