如何配置Apache TomEE 8用Jackson替代Johnzon作为JAX-RS JSON提供者
如何在TomEE 8.x中强制JEE应用使用Jackson替代默认Johnzon作为JAX-RS JSON提供者
我有一个测试用的简单JEE应用,需要强制其使用Jackson而非默认的Johnzon作为JAX-RS JSON提供者。当前项目包含以下代码:
项目代码
Application类
@ApplicationPath("/api") public class HelloApplication extends Application { }
JAX-RS资源类
@Path("/hello-world") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class HelloResource { @GET @Produces("text/plain") @JacksonFeatures(serializationEnable = { SerializationFeature.INDENT_OUTPUT }) public String hello() { return "Hello, World!"; } }
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <name>test</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>11</maven.compiler.source> <junit.version>5.7.1</junit.version> </properties> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-providers</artifactId> <version>2.14.0</version> <type>pom</type> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.14.2</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.12</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> </plugin> </plugins> </build> </project>
已尝试的无效配置
1. system.properties配置
openejb.jaxrs.jsonProviders=com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
2. openejb-jar.xml配置
<?xml version="1.0" encoding="UTF-8"?> <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1"> <pojo-deployment class-name="jaxrs-application"> <properties> cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider </properties> </pojo-deployment> </openejb-jar>
我已经尝试了Stack Overflow上针对旧版本的所有解决方案,但均无效。当前测试环境为TomEE 8.0.13和8.0.14版本,结果一致,希望能得到解决方法。
内容的提问来源于stack exchange,提问作者M-Soley
相关产品推荐
相关产品推荐

