You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebLogic 12.2.1.4启动JAX-RS2.0应用报BEA-2192510警告如何解决

问题根因

BEA-2192510警告触发逻辑为:WebLogic 12.2.1.x内置JAX-RS集成组件会自动扫描类路径下所有继承javax.ws.rs.core.Application的类,尝试自动注册对应Jersey Servlet。扫描过程中误识别Jersey框架自带的基础类org.glassfish.jersey.server.ResourceConfig及其内部类WrappingResourceConfig、RuntimeConfig为用户自定义的JAX-RS应用入口类,而这些框架类本身不会标注@ApplicationPath注解,因此输出警告。
该警告默认不影响业务功能运行,若需彻底消除可按以下方案调整配置。

修复方案

按实际场景选择任意一种方案即可:

  • 方案1:调整类加载优先级,隔离服务器内置Jersey与应用依赖
    现有配置中注释org.glassfish.jersey.*、org.glassfish.hk2.*包的应用优先加载规则是核心诱因,该配置会导致WebLogic优先加载内置的旧版JAX-RS组件,扫描时识别到应用内Jersey 2.22.2自带的基础ResourceConfig类,触发警告。
    操作步骤:

    1. 放开weblogic-application.xml中被注释的两行包过滤配置,补全Jersey 2.x相关包的优先加载规则,最终<prefer-application-packages>配置如下:
    <prefer-application-packages>
        <!-- Jersey 2.x 核心包,强制优先加载应用自带版本 -->
        <package-name>org.glassfish.jersey.*</package-name>
        <package-name>org.glassfish.hk2.*</package-name>
        <package-name>org.jvnet.hk2.*</package-name>
        <package-name>jersey.repackaged.org.objectweb.asm.*</package-name>
        <package-name>com.sun.jersey.*</package-name>
        <package-name>com.sun.research.ws.wadl.*</package-name>
        <package-name>com.sun.ws.rs.ext.*</package-name>
    
        <!-- JSON序列化依赖包 -->
        <package-name>org.codehaus.jackson.*</package-name>
        <package-name>com.fasterxml.jackson.*</package-name>
        <package-name>org.codehaus.jettison.*</package-name>
    
        <!-- JAX-RS 标准API包 -->
        <package-name>javax.ws.rs.*</package-name>
    
        <!-- 字节码处理依赖包 -->
        <package-name>org.objectweb.asm.*</package-name>
    </prefer-application-packages>
    
    1. 删除WEB-INF/weblogic.xml中对WebLogic内置jax-rs 2.0库的引用配置,避免内置库与应用自带Jersey依赖产生类冲突。
  • 方案2:关闭WebLogic内置JAX-RS自动注册逻辑
    若不调整类加载规则,可直接配置WebLogic忽略无@ApplicationPath注解的Application类,不尝试自动注册Servlet,从源头阻断警告触发。
    操作步骤:在WEB-INF/weblogic.xml的<container-descriptor>节点下添加如下配置:

    <wls:container-descriptor>
        <wls:prefer-web-inf-classes>false</wls:prefer-web-inf-classes>
        <!-- 忽略无@ApplicationPath注解的JAX-RS应用类,不自动注册 -->
        <wls:jaxrs-application-with-no-application-path>ignore</wls:jaxrs-application-with-no-application-path>
    </wls:container-descriptor>
    
  • 方案3:显式定义自定义JAX-RS应用入口类
    若当前应用未显式定义继承ResourceConfig的入口类,会导致WebLogic扫描时遍历所有Jersey相关的Application实现类。新增自定义入口类并标注@ApplicationPath注解后,WebLogic会直接识别到合法的应用入口,不再尝试注册框架自带的基础类。
    示例代码:

    import javax.ws.rs.ApplicationPath;
    import org.glassfish.jersey.server.ResourceConfig;
    
    @ApplicationPath("/rest")
    public class AppResourceConfig extends ResourceConfig {
        public AppResourceConfig() {
            // 仅扫描业务代码中REST服务所在的包路径,缩小扫描范围
            packages("com.yourorg.yourapp.rest");
        }
    }
    
验证方式

完成配置调整后清空WebLogic的临时缓存目录(servers/<ServerName>/tmp、servers/<ServerName>/cache),重启服务后查看启动日志,三条BEA-2192510警告会完全消失,REST接口可正常访问。


内容的提问来源于stack exchange,提问作者Satya M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:48:15