我正在尝试使用 EclipseLink MOXy 作为部署在 JBoss EAP 6.1.0.Beta1 应用服务器上的 JAX-WS Web 服务的 JAXB 提供程序。现在我已经按照这里javax.xml.ws.Provider
的描述实现了,并将文件放入包含我的实现和 web 服务中使用的域类的包中。这是该文件的内容:jaxb.properties
Provider
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
当我尝试部署包含该服务的 Web 应用程序时,日志中出现以下错误:
@XmlValue is not allowed on a class that derives another class
在我的例子中,使用 MOXy 作为 JAXB 提供者的主要原因是能够@XmlValue
在子类中使用注释。当我尝试在使用 MOXy 的测试应用程序中使用与 Web 服务相同的类解组时,不会发生此错误。此外,堆栈跟踪中没有来自org.eclipse.persistence
包及其子包的类,只有com.sun.xml.bind.v2
类。显然,在部署 Web 应用程序时不使用 MOXy。所有必需的 Maven 工件org.eclipse.persistence
都在 WAR 文件中:
$ jar tf my-app.war | grep org.eclipse.persistence
WEB-INF/lib/org.eclipse.persistence.antlr-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.asm-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.moxy-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.core-2.5.0.jar
我究竟做错了什么?据我了解,Provider
在调用 web 服务时在运行时调用。但是错误发生在部署时。我应该重新实现一些东西Provider
吗?