【发布时间】:2013-06-25 09:44:27
【问题描述】:
我正在尝试使用 EclipseLink MOXy 作为部署在 JBoss EAP 6.1.0.Beta1 应用服务器上的 JAX-WS Web 服务的 JAXB 提供程序。现在我已经按照here 的描述实现了javax.xml.ws.Provider,并将jaxb.properties 文件放入包含我的Provider 实现和Web 服务中使用的域类的包中。这是该文件的内容:
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。来自org.eclipse.persistence 的所有必需的 Maven 工件都在 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,我还应该重新实现一些东西吗?
【问题讨论】:
标签: jboss jaxb jax-ws eclipselink moxy