JAX-RS:在payara micro上序列化POJO失败



将我们的应用程序战争从 Glassfish3 转移到 Payara Micro 部署后,JAX-RS 序列化(jersey + jackson)不再起作用。

感谢 Adam,我们解决了序列化纯集合的问题,我们现在在返回 POJO 时遇到了类似的错误:

@GET
@Produces("application/json")
public BirdyTO findAllDaBirdy() {
    return getBirdy();
}

其中 BirdyTO 是一个 POJO,其中包含其他 POJO 和/或 POJOS 集合。

那个给了我们错误:

MessageBodyWriter not found for media type=application/json;charset=utf-8, type=class org.example.BirdyTO, genericType=class org.example.BirdyTO.

奇怪的是,同一应用程序中的类似接口工作正常。

知道吗?

POJO 到 JSON 的映射在 Java EE 中没有标准化。默认情况下,Glassfih 4/Payara使用MOXy将POJO映射到JSON,后者使用JAXB进行映射。见[礼萨·拉赫曼的这篇文章](https://blogs.oracle.com/theaquarium/entry/moxy_is_the_new_default)。BirdyTO可能无法被Moxy映射。

如果你想使用杰克逊,你必须:

  • 禁用默认 Moxy 功能(通过将jersey.config.server.disableMoxyJson属性设置为 true
  • 将杰克逊库添加到您的应用程序中 ( com.fasterxml.jackson.jaxrs
  • 在 JAX-RS 应用程序中打开杰克逊功能(由杰克逊库提供)

有关如何在此答案中执行此操作的更多信息:使用 GlassFish v4 自定义 JSON 封送

相关内容

  • 没有找到相关文章

最新更新