2

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

我已经将一个jaxb.properties文件放在与 Error 类相同的包中。尽管如此,在调用我的网络服务时,我仍然收到以下错误:

错误 500 org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:找不到 MessageBodyWriter 类型的响应对象:br.services.model.Error of media type: 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

那么有人可以帮助我吗?

4

1 回答 1

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 作为您的 JAX-RS JSON 提供程序 - MOXyJsonProvider)。当我从假期回来时,我将添加一个预先构建的MessageBodyReader/MessageBodyWriter`,以便更轻松地启用 MOXy 作为 RESTEasy 环境的 XML 提供程序。

于 2012-12-23T13:15:40.357 回答