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

TomEE 8更换JAX-RS Provider遇阻:默认Johnzon换Jackson FasterXml失败

TomEE 8 替换默认JAX-RS Provider为Jackson FasterXml的解决方案

TomEE 8中CXF的配置逻辑较TomEE 7有变化,之前的系统属性配置方式会被默认配置覆盖,以下是两种可行的解决方式:

1. 先确保Jackson依赖到位

如果是Maven项目,添加依赖:

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.15.2</version> <!-- 选用最新稳定版本即可 -->
    <scope>compile</scope> <!-- 打包到项目war包中,或设为provided(若TomEE已内置) -->
</dependency>

手动部署的话,把对应jar包放到项目WEB-INF/lib或TomEE的lib目录下。

2. 注册Jackson Provider的有效方式

方式一:通过web.xml配置

在项目WEB-INF/web.xml中指定JAX-RS Servlet并配置Provider:

<servlet>
    <servlet-name>JAX-RS App</servlet-name>
    <servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
    <init-param>
        <param-name>jaxrs.providers</param-name>
        <param-value>com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>JAX-RS App</servlet-name>
    <url-pattern>/api/*</url-pattern> <!-- 匹配你的API路径 -->
</servlet-mapping>

方式二:通过CDI注册Provider

创建一个Producer类,将Jackson Provider作为CDI Bean注入:

import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;

@ApplicationScoped
public class JacksonProviderProducer {

    @Produces
    public JacksonJaxbJsonProvider getJacksonProvider() {
        return new JacksonJaxbJsonProvider();
    }
}

这种方式无需修改web.xml,适合使用CDI的项目。

3. 可选:禁用默认Johnzon Provider

若要彻底排除Johnzon,可在TomEE的conf/system.properties中添加:

openejb.jaxrs.provider.johnzon=false

或者在conf/openejb.xml中配置:

<Container id="jaxrs-container" type="jaxrs">
    <Property name="provider.johnzon">false</Property>
</Container>

内容的提问来源于stack exchange,提问作者a.nayebi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:25:38