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

如何在Payara 5中使用Jackson 2?兼容JAX-RS且无需修改注解

刚好我之前从Payara 4迁移到Payara 5时也遇到了同样的需求——不想改动现有JAX-RS注解,只想替换掉默认的Yasson,继续用Jackson处理JSON序列化/反序列化。给你几个经过验证的可行方案:

方案1:全局域级配置(影响所有部署的应用)

如果希望整个Payara 5域都默认使用Jackson作为JAX-RS JSON提供器,可以修改域配置文件:

  • 找到Payara安装目录下的glassfish/domains/[你的域名]/config/domain.xml
  • 在<jvm-options>节点中添加以下参数:
    -Dfish.payara.jaxrs.json.provider=jackson
    
  • 重启Payara服务器后,这个配置会自动禁用Yasson的JAX-RS绑定,转而使用Jackson。

方案2:项目级配置(仅针对当前应用)

如果只想让单个应用切换到Jackson,不需要修改服务器全局配置,可以在项目的部署描述文件中添加上下文参数:

  • 若使用web.xml,添加:
    <context-param>
        <param-name>fish.payara.jaxrs.json.provider</param-name>
        <param-value>jackson</param-value>
    </context-param>
    
  • 若使用Payara专属的glassfish-web.xml,同样添加上述参数即可。
    这样部署应用后,该应用会自动使用Jackson,其他应用不受影响。

方案3:通过JAX-RS Application类手动注册

如果你的项目有自定义的JAX-RS Application子类,也可以通过代码方式显式注册Jackson提供器,同时隐式排除Yasson:

  1. 确保项目中引入了Jackson的JAX-RS依赖(如果Payara未自带,需手动添加):
    <!-- Maven依赖示例 -->
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.15.2</version> <!-- 选择与Payara兼容的版本 -->
        <scope>provided</scope> <!-- 若Payara已包含该依赖则使用provided -->
    </dependency>
    
  2. 在自定义Application类中注册Jackson提供器:
    import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
    import javax.ws.rs.core.Application;
    import java.util.HashSet;
    import java.util.Set;
    
    public class MyJaxRsApplication extends Application {
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<>();
            // 注册Jackson的JSON提供器
            classes.add(JacksonJsonProvider.class);
            // 添加你的其他JAX-RS资源类
            classes.add(MyResource.class);
            return classes;
        }
    }
    

这种方式灵活性最高,适合需要对JAX-RS组件做精确控制的场景。

补充说明

  • 关于Jackson版本:建议选择与Payara 5内置版本兼容的Jackson版本,避免依赖冲突。Payara 5通常内置了Jackson 2.x系列的稳定版本,使用provided scope可以避免重复打包。
  • 若遇到Yasson仍被加载的情况,可以检查是否有其他第三方库依赖了Yasson,或者在domain.xml中额外添加-Dorg.glassfish.jersey.jsonp.disable=true参数强制禁用JSON-P相关的默认提供器。

内容的提问来源于stack exchange,提问作者Whyvra FVR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:01:10