我正在尝试使用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
所以有人可以帮助我吗?
答案 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提供程序。