在WebSphere 8.5上运行的RestEasy

问题描述 投票:0回答:1

我是RestFul API的新手,并且遇到了此https://www.journaldev.com/9189/resteasy-tutorial-eclipse-tomcat。该教程在Tomcat上运行正常,但是在WebSphere 8.5上遇到404。启动过程中,我可以在SystemOut.log中看到以下内容。

[[6/9/20 18:15:54:460 SGT] 0000004a ServletWrappe我com.ibm.ws.webcontainer.servlet.ServletWrapper初始化SRVE0242I:[backoffice] [/ secure / backoffice] [ResteasyServlet]:初始化成功。

resteasy websphere-8
1个回答
0
投票

[如果我不得不猜测,问题很可能是WebSphere 8.5附带了JAX-RS 1.1 API,但是您引用的文章使用了JAX-RS 2.0。当前版本的RESTEasy使用JAX-RS 2.1 API。

RESTEasy实现JAX-RS API。这使用户可以对JAX-RS API进行编码,然后在任何兼容的实现上运行,例如CXF,Jersey,RESTEasy等。但是,如果实现与API版本不匹配,则可能会遇到问题。

Tomcat不打包任何JAX-RS API,因此它将使用与应用程序打包在一起的API-应该与RESTEasy期望的相匹配。但是由于WebSphere附带了它自己的API版本(并且它是基于Apache Wink的实现),所以您可能会遇到这些问题。

WebSphere v9.0能够将API版本切换为使用2.0,并且WebSphere Liberty(或Open Liberty)具有完全启用/禁用JAX-RS的不同版本的能力。不幸的是,WebSphere v8.5无法禁用JAX-RS API。

如果您可以升级到v9.0或切换到Liberty,则很可能会解决此问题。如果没有选择升级,则您仍然可以使其在WebSphere v8.5中运行,但这不是一个不错的解决方案:您可以使用父级/后代类加载委托,以便您的应用程序加载RESTEasy和JAX-RS 2应用程序的类加载器之前中的.X API类从WebSphere的类加载器加载JAX-RS 1.1 / Wink类。有关parent-last的更多信息,请点击此处:https://www.ibm.com/support/knowledgecenter/SS7K4U_8.5.5/com.ibm.websphere.zseries.doc/ae/urun_rclassloader_inst.html

或者,您可以将JAX-RS 2.X API JAR和RESTEasy打包在一个隔离的共享库中,然后将该库与应用程序关联。隔离的共享库是最后一父级的,但是将应用程序类装入器放在父首。有关隔离的共享库的更多信息,请参见:https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.iseries.doc/ae/tcws_sharedlib.html

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.