Apache TomEE Webprofile 8-无法将JSon Rest Provider从Johnzon更改为Ja



我在Apache TomEE web概要文件8.0.12上部署了一个web应用程序。该应用程序公开了一个返回json的rest服务。TomEE中使用的默认库是Johnzon。我正在尝试用Jackson json提供程序更改默认的Johnzonjson提供器。

为了测试提供者的开关,我开发了一个rest服务,它返回一个带有两个字符串的类,并且使用Jackson@JsonIgnore注释忽略其中一个字符串。

public class PropContainer {

@JsonIgnore
private String prop1;

private String prop2;
...

以及返回PropContainer类的rest服务

@Path("config")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Stateless
public class PreferencesService {

@Path("get")
@GET
@JacksonFeatures(serializationEnable =  { SerializationFeature.INDENT_OUTPUT })
public PropContainer get(){

...

调用服务后,json没有格式化(@JacksonFeatures被忽略(,prop1属性在响应中(Jackson@JsonIgnore注释被忽略(。我认为TomEE仍在使用Johnzon库。

阅读TomEE文档,更改json rest提供程序的步骤如下:

  1. 在src\main\webapp\WEB-INF下创建文件openejb-jar.xml\
  2. 在openejb-jar.xml文件中指定Jackson提供程序
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openejb.org/openejb-jar/1.1">
<pojo-deployment class-name="jaxrs-application">
<properties>
cxf.jaxrs.providers = com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider
</properties>
</pojo-deployment>
</openejb-jar>

有什么建议吗?

感谢您的支持。

我想我已经找到了一个使用Provider注释创建类的解决方案。

opnejb-jar.xml不是必需的。

import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
@Provider
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MyDefaultJsonRestProvider extends JacksonJsonProvider {

}

相关内容

最新更新