WebSphere8中的JAX-RSJersey 2.10支持

WebSphere8中的JAX-RSJersey 2.10支持,jersey,websphere,jax-rs,Jersey,Websphere,Jax Rs,我试图在WebSphere8中使用Jersey 2.10,但它试图引用作为JAX-RS1.1(默认Wink)实现的应用程序 尽管我通过设置IBM属性禁用了JAX-RS默认值,但我还是得到了下面的错误 原因:java.lang.NoSuchMethodError:javax/ws/rs/core/Application.getProperties()Ljava/util/Map; 位于org.glassfish.jersey.server.ApplicationHandler.(Applicati

我试图在WebSphere8中使用Jersey 2.10,但它试图引用作为JAX-RS1.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)

我读过一篇帖子,上面说要把类加载策略放在最后。更改该选项在was控制台上被禁用,所以我尝试使用(was运行服务器的发布设置,服务器上有资源),我的服务器崩溃

请告知。
谢谢

您需要执行以下步骤:

通过JVM属性禁用内置JAX-RS
com.ibm.websphere.jaxrs.server.disableibmjaxrengine=true
请参见说明。
您可以通过
Servers>websphereapplicationservers>yourServerName
中的web管理控制台设置此属性。然后在
服务器基础架构
部分
Java和流程管理>流程定义>Java虚拟机>自定义属性

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

创建库时,通过选中
为此共享库使用隔离类加载程序
类加载选项来创建隔离共享库

在安装期间或以后,通过
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...
更新

似乎还可以从WAR中加载JAX-RS JAR。您必须设置此
disableIBMJAXRengine
属性,并且需要将模块中的类加载选项(不在EAR级别)类加载程序更改为
首先使用本地类加载程序加载的类(最后一个父类)

在管理控制台中:

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

将类加载器顺序下拉列表更改为:
首先使用本地类加载器加载的类(最后一个父类)


感谢dooffas的检查,请参见

建议的设置已生效,Jersey 2.5已启动并运行。它如何在网络部署上工作?这些共享库是否位于已部署应用程序之外的物理位置?如果是这样,那就很难了。请告知是否有其他选择。是的,您需要将共享库放置在运行应用程序的服务器的所有节点上的同一位置。另一种选择——你可以考虑,你是否真的需要2。XJAX-RS:)。JavaEE6需要1.1,这在WAS中是完全支持的。如果您使用第三方实现并在其中发现任何错误,IBM将不支持它。另一种选择是,尝试使用8.5.5中的轻量级WebSphereLiberty概要文件,默认情况下,它没有JAX-RSlibs,因此您可以在应用程序中提供它们。我知道这不是您所期望的。是否可以通过MANIFEST.MF文件关闭JAX-RS引擎?是否可以关闭JAX-WS引擎。我想使用随应用程序提供的JAX-RS,而不修改应用程序服务器。谢谢!是否可以设置参数并避免创建共享库,而是将JAX-RS 2.0 JAR打包到my application war中?已设法更改参数,重新启动WebSphere,并尝试从我的应用程序加载JAX-RS,但失败了,问题是出现了异常。@谢谢您的澄清!我想那时我必须探索共享库的方法。我们将容器无关软件分发给客户,这些客户随后必须在自己的环境中部署。共享库不是我们以前必须做的事情,对于我们的websphere客户来说,每增加一个配置/部署步骤都意味着对我们来说又一个潜在的支持难题——另一方面,支持jaxrs 1.1需要重新思考。