从Payara 5(5.52.0)迁移至Payara 6(6.2024.4)时的运行时异常求助
解决Payara 6升级后的CDI部署异常及注解处理警告
问题重现
将基于Payara Micro的Java应用从Payara 5 (5.52.0)升级到Payara 6 (6.2024.4)后,构建正常但运行时出现以下异常:
警告信息
[WARNING] [Annotation-Framework] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1715772499197] [levelValue: 900] Failed to handle annotation [ @jakarta.resource.spi.ConfigProperty(ignore=false, description={}, type=java.lang.String.class, defaultValue=“”, supportsDynamicUpdates=false, confidential=false) ] on class [ com.sun.gjc.spi.ManagedConnectionFactoryImpl ], reason : not a rar bundle context
严重异常
[SEVERE] [NCLS-CORE-00026] [javax.enterprise.system.core] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1715786136811] [levelValue: 1000] [[ Exception during lifecycle processing org.glassfish.deployment.common.DeploymentException: CDI deployment failure:WELD-001301: Annotation QualifierInstance {annotationClass=interface org.glassfish.api.admin.RestEndpoints, values=value=[Lorg.glassfish.api.admin.RestEndpoint;@e283976}} is not a qualifier – WELD-001301: Annotation QualifierInstance {annotationClass=interface org.glassfish.api.admin.RestEndpoints, values=value=[Lorg.glassfish.api.admin.RestEndpoint;@e283976}} is not a qualifier
解决方案
- 统一Jakarta EE依赖版本:Payara 6基于Jakarta EE 10,确保项目所有依赖都使用
jakarta.*包规范,排查是否残留javax.*包的依赖,避免跨版本包冲突。 - 清理旧Payara依赖:检查
pom.xml中是否引入了Payara 5相关依赖(如旧版本的glassfish-api、payara-micro),替换为Payara 6对应版本,保证所有容器相关依赖版本一致。 - 修复
RestEndpoints注解问题:- 若项目自定义了
RestEndpoints注解,确保其被正确标记为@Qualifier,符合Jakarta CDI规范; - 若该注解来自Payara内部,执行
mvn clean install -U清理Maven本地缓存,重新拉取Payara 6依赖包,避免缓存的旧版本文件干扰。
- 若项目自定义了
- 处理资源适配器警告:
- 检查项目中数据源或资源适配器的配置,替换旧的
com.sun.gjc.spi相关类为Payara 6兼容的SPI实现; - 若使用自定义RAR包,确保其适配Jakarta EE 10规范,重新打包后再部署。
- 检查项目中数据源或资源适配器的配置,替换旧的
内容的提问来源于stack exchange,提问作者Adrian Kreator
相关产品推荐
相关产品推荐

