我正在尝试使用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());
}我会得到这个: org.eclipse.persistence.jaxb.JAXBContext类
有人能帮帮我吗?
发布于 2012-12-23 13:15:40
备注:,我是EclipseLink JAXB (MOXy)的负责人,也是JAXB (JSR-222)专家组的成员。
定位eclipselink.jar
您需要确保eclipselink.jar位于以下位置(参见:服务器)
$JBOSS_HOME/server/default/libjaxb.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.JAXBContextFactoryEclipseLink版本
RESTEasy有可能依赖于一些专有的JAXB参考实现扩展。我们增加了对我们所知道的所有MOXy版本的支持,因此您需要确保您使用的是最新版本的EclipseLink。我建议使用EclipseLink 2.4.1,可以从下面的链接获得:
MessageBodyReader/MessageBodyWriter
有可能RESTEasy没有编写(足够好)来支持可插拔的JAXB实现。在这种情况下,您可以创建一个MessageBodyReader/MessageBodyWriter来利用MOXy。下面是我为使用MOXy作为JSON绑定提供程序而创建的一个示例,您可以使用它作为模型。
正如MOXy附带了一个预构建的MessageBodyReader/MessageBodyWriter来启用JSON绑定一样(参见:MOXy作为您的JAX-RS JSON提供者- MOXyJsonProvider)。度假回来后,我将添加一个预构建的MessageBodyReader/MessageBodyWriter`,以使MOXy更容易成为RESTEasy环境的XML。
https://stackoverflow.com/questions/14003640
复制相似问题