为了账号安全,请及时绑定邮箱和手机立即绑定

Websphere 8中的JAX-RS Jersey 2.10支持

/ 猿问

Websphere 8中的JAX-RS Jersey 2.10支持

aluckdog 2019-09-02 20:35:15

我试图在Websphere 8中使用Jersey 2.10但是它试图引用应用程序,这是JAX-RS 1.1的实现(默认Wink)我得到以下错误,即使我通过设置IBM属性禁用了JAX-RS默认值。


引起:java.lang.NoSuchMethodError:javax / ws / rs / core / Application.getProperties()Ljava / util / Map; 在Org.glassfish.jersey.server.ApplicationHandler。(ApplicationHandler.java:287)org.glassfish.jersey.servlet.WebComponent。(WebComponent.java:311)


我读了一篇帖子,说要为PARENT_LAST制作课程加载政策。在WAS控制台上禁用了更改该选项,因此我尝试使用(WAS的发布设置 - 使用服务器上的资源运行服务器)并且我的服务器崩溃了。


请指教。谢谢。


查看完整描述

3 回答

?
qq_笑_17

您需要执行以下步骤:


通过JVM属性禁用内置的JAX-RS,com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true请参阅此处的说明。

您可以通过Web管理控制台设置此属性Servers > WebSphere Application Servers > yourServerName。然后在Server Infrastructure部分Java and Process Management >  Process definition > Java Virtual Machine > Custom properties。


在控制台中通过所有JAX-RS 2.10库创建隔离的共享库Environment > Shared Libraries。


Use an isolated class loader for this shared library在创建库时,通过检查“ 类加载”选项来创建隔离的共享库。


将此共享库映射到您的应用程序,无论是在安装期间还是稍后,通过Applications > appName > Shared library references。


重启应用服务器。在SystemOut.log中,您应该看到初始化JAX-RS类的消息:


[7/12/14 16:10:36:470 CEST] 0000004a JerseyServlet I   Registering the Jersey servlet application, named javax.ws.rs.core.Application, with the following root resource and provider classes: [class jax.Hello, class org.glassfish.jersey.server.wadl.internal.WadlResource]

[7/12/14 16:10:36:688 CEST] 0000004a ApplicationHa I   Initiating Jersey application, version Jersey: 2.10.1 2014-06-30 13:53:32...

UPDATE


似乎也可以从WAR中加载JAX-RS罐子。您必须设置此DisableIBMJAXRSEngine属性,并且需要更改模块(不在EAR级别)类加载器中的类加载选项Classes loaded with local class loader first (parent last)


在管理控制台中:


应用程序> WebSphere企业应用程序> {your.application}>管理模块> {your.module}


将类加载器顺序下拉列表更改为:Classes loaded with local class loader first (parent last)。


感谢dooffas检查它,请参阅没有隔离共享库的JAX-RS 2.0 WebSphere 8.5


查看完整回答
反对 回复 2019-09-02
?
回首忆惘然

您需要将共享库放在运行应用程序的服务器的所有节点上的相同位置。替代方案 - 你可以考虑,你是否真的需要2.x JAX-RS :)。Java EE 6需要1.1,WAS完全支持它。如果您使用第三方实现并发现其中的任何错误,那么IBM将不会支持它。另一种方法是,尝试使用8.5.5中的轻量级WebSphere Liberty概要文件,默认情况下没有JAX-RS库,因此您可以在应用程序中提供它们。我知道这不是你指望的。

查看完整回答
反对 回复 2019-09-02
?
慕哥6287543

建议的设置有效,Jersey 2.5启动并运行。它如何在网络部署中发挥作用?这些共享库是否位于部署应用程序之外的物理位置?如果是这样,那将很困难。请告知是否有其他选择。

查看完整回答
反对 回复 2019-09-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信