如何告诉 WebSphere 忽略 JAX-RS 注释?

How do I tell WebSphere to ignore JAX-RS annotations?

我正在尝试将我的 WAR 文件部署到 WebSphere 8.5.5。它在 Tomcat、WebLogic、Jetty、JBoss 中工作,但在 WebSphere 中失败。 堆栈跟踪从 com.ibm.ws.webcontainer.webapp.WebAppImpl.scanForHandlesTypesClasses() 方法开始,该方法尝试创建 org.apache.cxf.jaxrs.provider.AtomPojoProvider class 的实例。其他应用程序服务器不会在启动时创建 AtomPojoProvider 实例。 AtomPojoProvider 有注释 javax.ws.rs.ext.Provider。我如何告诉 WebSphere 忽略此 JAX-RS 注释?

更新:尝试了以下内容:

- com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=真;

- web.xml 中的 metadata-complete=true;

- 在管理控制台中检查元数据是否完整。

看起来 WebSphere 8.5.5 忽略了这些设置。

您需要设置以下JVM属性:

com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true

但是在禁用 JAX-RS 运行时环境后,JAX-RS 功能不可用,包括基本 JAX-RS 运行时功能、Enterprise JavaBeans (EJB) 运行时集成、Java 上下文和依赖注入 (JCDI) 运行时集成,以及 Servlet 3.0 Web 容器集成。

有关详细信息,请查看 Disabling the JAX-RS runtime environment

因此您也可以考虑从应用程序中删除第三方引擎并尝试使用 WebSphere 提供的引擎。

在 web.xml 中将网络应用程序版本更改为 2.4:

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">