将我们的应用程序之战从Glassfish3转移到Payara Micro的部署之后,JAX-RS序列化(jersey + jackson)不再起作用了。
感谢Adam,我们解决了序列化纯集合的问题,我们现在在返回POJO时遇到类似的错误:
@GET
@Produces("application/json")
public BirdyTO findAllDaBirdy() {
return getBirdy();
}
其中BirdyTO是一个包含其他POJOS和/或POJOS集合的POJO。
那个给我们错误:
MessageBodyWriter not found for media type=application/json;charset=utf-8, type=class org.example.BirdyTO, genericType=class org.example.BirdyTO.
奇怪的是,同一个应用程序中的类似接口工作正常。
有什么想法吗?
答案 0 :(得分:0)
在Java EE中,POJO到JSON的映射没有标准化。 Glassfih 4 / Payara默认使用MOXy将POJO映射到JSON,它使用JAXB进行映射。参见[Reza Rahman的这篇文章](https://blogs.oracle.com/theaquarium/entry/moxy_is_the_new_default)。 Moxy可能无法映射BirdyTO。
如果你想使用杰克逊,你必须:
jersey.config.server.disableMoxyJson
属性设置为true
)com.fasterxml.jackson.jaxrs
)如何在此答案中执行此操作:Customizing JSON marhsalling with GlassFish v4