【发布时间】:2022-09-27 18:11:47
【问题描述】:
我在 Apache TomEE Web 配置文件 8.0.12 上部署了一个 Web 应用程序。 该应用程序公开了一个返回 json 的 rest 服务。 TomEE 使用的默认库是 Johnzon。 我正在尝试使用 Jackson json 提供程序更改默认的 Johnzon json 提供程序。
为了测试提供者的开关,我开发了一个休息服务,它返回一个带有两个字符串的类,并且使用 Jackson @JsonIgnore 注释忽略两个字符串之一。
public class PropContainer {
@JsonIgnore
private String prop1;
private String prop2;
...
还有一个返回 PropContainer 类的休息服务
@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 提供程序的步骤是:
- 在src\\main\\webapp\\WEB-INF\\下创建文件openejb-jar.xml
- 在 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>有什么建议么?
谢谢你的支持。
标签: java json jackson apache-tomee tomee-8