日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JBoss模块很烂,无法在JBoss 7下使用自定义Resteasy / JAX-RS 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于JBoss EAP 6.1 / AS 7.2.0是模塊化的,并且您可以排除Webapp可見的模塊,因此您希望可以輕松地忽略內(nèi)置的JAX-RS實現(xiàn)(Rest Easy 2.3.6)并使用它。自定義的(3.0.6)。 但是,可悲的是,事實并非如此。 您必須遵守官方指南的建議,即在全球范圍內(nèi)升級Rest Easy –前提是服務器上運行的其他Web應用程序均不會因升級而中斷。

這應該足以排除內(nèi)置的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>

但是,它遠沒有奏效。 這幾乎可以完成工作(盡管其中的少數(shù)排除可能是不必要的):

<!--?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

失敗嘗試的大概歷史

我不再記得我經(jīng)歷過的所有死胡同,但是這里是我在部署或運行??時遇到的異常的大致概述。

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;

–這是無法解決的最終問題; 問題是, BuiltResponse從resteasy-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應用程序,那么您將陷入困境。

經(jīng)驗教訓:具有大量現(xiàn)成的,集成良好的功能(?)的應用程序服務器似乎很有吸引力,但是當您遇到?jīng)_突的庫和類加載問題時,它們的價值就會Swift下降。 從長遠來看,從您完全控制的簡單事物(例如Jettty)開始,也許是一個更好的解決方案。 同樣,在同一臺服務器上運行多個Web應用程序在2000年也許很聰明,但如今已不值一提。 我們有足夠的磁盤空間和內(nèi)存,因此庫的重用并不重要,并且能夠在一處管理所有應用程序的全局設置的能力當然是更好的選擇。 微服務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

總結

以上是生活随笔為你收集整理的JBoss模块很烂,无法在JBoss 7下使用自定义Resteasy / JAX-RS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。