【问题标题】:How do I tell WebSphere to ignore JAX-RS annotations?如何告诉 WebSphere 忽略 JAX-RS 注释?
【发布时间】:2015-07-09 11:06:36
【问题描述】:

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

更新:尝试了以下方法:

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

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

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

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

【问题讨论】:

    标签: websphere jax-rs war websphere-8


    【解决方案1】:

    在 web.xml 中将 web-app 版本更改为 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">
    

    【讨论】:

      【解决方案2】:

      您需要设置以下 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 提供的引擎。

      【讨论】:

      • >>com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      相关资源
      最近更新 更多