MOXy NoMessageBodyWriterFoundFailure

时间:2012-12-22 14:28:03

标签: exception jaxb eclipselink resteasy moxy

我正在尝试使用EclipseLink MOXy作为我的JAXB提供程序,但我仍然遇到一些问题。

我已经将jaxb.properties文件放在与Error类相同的包中。尽管如此,在调用我的webservice时仍然会出现以下错误:

错误500 org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:找不到类型的响应对象的MessageBodyWriter:媒体类型的br.services.model.Error错误:application / xml; charset =“UTF-8”

如果我在Error

中运行以下代码
public static void main(String[] args) throws JAXBException
{
    System.out.println(JAXBContext.newInstance(Error.class).getClass());
}

我会得到这个: class org.eclipse.persistence.jaxb.JAXBContext

所以有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。

eclipselink.jar的位置

您需要确保在以下位置拥有eclipselink.jar(请参阅:http://wiki.eclipse.org/EclipseLink/Examples/JPA/JBoss_Web_Tutorial#Specific_Server

$JBOSS_HOME/server/default/lib

jaxb.properties

你是对的,jaxb.properties文件需要与域模型(Error类)在同一个包中。您需要确保它具有以下条目(请参阅:http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html):

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

EclipseLink版本

RESTEasy有可能依赖于某些专有的JAXB参考实现扩展。我们已经为MOXy添加了对所有知道的支持,因此您需要确保使用最新版本的EclipseLink。我建议使用EclipseLink 2.4.1,可以从以下链接获得:

<强>化MessageBodyReader / MessageBodyWriter

有可能没有编写RESTEasy(足够好)来支持可插拔的JAXB实现。在这种情况下,您可以创建MessageBodyReader / MessageBodyWriter来利用MOXy。下面是我使用MOXy作为JSON绑定提供程序创建的示例,您可以将其用作模型。

正如MOXy附带预先构建的MessageBodyReader / MessageBodyWriter以启用JSON绑定(请参阅:MOXy as Your JAX-RS JSON Provider - MOXyJsonProvider)。当我从假期回来时,我将添加一个预构建的MessageBodyReader / MessageBodyWriter`,以便更容易启用MOXy作为RESTEasy环境的XML提供程序。