Resteasy 在 wildfly 14 (Java 11) 上以文本格式导出日期,而不是在 wildfly 9 (Java 8) 上以数字格式导出日期

Resteasy exports dates in textual format on wildfly 14 (Java 11) as opposed to numeric format in wildfly 9 (Java 8)

我有一个项目在 Java 8 运行 和 Wildfly 9 上运行良好。

我使用一些 REST 端点将一些 Java 对象序列化为 JSON。这是用 Resteasy 和 @Produces(MediaType.APPLICATION_JSON).

配置的

我现在正在尝试将项目转换为在 wildfly 14 和 Java 11 上工作。

由于某些原因,在以前的版本中,Date对象被导出为数值。在新环境中,日期以文本格式导出(例如 2018-12-03T10:05:33.39Z[UTC])。

奇怪的是,一些对象的一些数据属性仍然以数字格式导出,而另一些则以文本格式导出。

我已经尝试启用 WRITE_DATES_AS_TIMESTAMPS 功能,但这并没有改变结果。

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig  implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper;
    public JacksonConfig()
    {
        objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    }

    @Override
    public ObjectMapper getContext(Class<?> objectType)
    {
        return objectMapper;
    }
}

问题与从 jackson 到 jsonb 的切换有关。

在此thread中进一步解释。