本文介绍了JAXB错误:有多个映射。由于两个对象工厂具有相同的Bean的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个Maven JAXB项目。
A:主Maven JAXB存根XSD项目,其中包含BASKET.xsd
B:Maven JAXB存根用户-希望将BASKET.xsd包装在自己的对象中的项目。
这会产生两个对象工厂(不同的包),它们都声明了以下内容…
@XmlElementDecl(namespace = "http://www.bob.org/bob/namespace/", name = "Basket")
public JAXBElement<BasketType> createBasket(BasketType value) {
return new JAXBElement<BasketType>(QNAME, BasketType.class, null, value);
}
此生成是通过此插件完成的。
Org.jvnet.jaxb2.maven2
Maven-jaxb2-plugin
0.13.2
在应用程序启动时,收到CXF-RT-Frotnend-jaxrs3.1.11提示错误…
017-07-03 14:38:54,613845801: WARN : [RMI TCP Connection(3)-127.0.0.1] [] org.apache.cxf.jaxrs.utils.ResourceUtils: No JAXB context can be created
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
The element name {http://www.bob.org/bob/namespace/}Basket has more than one mapping.
this problem is related to the following location:
at public javax.xml.bind.JAXBElement com.bob.bean.ObjectFactory.createBasket(org.bob.BasketType)
at com.bob.bean.ObjectFactory
this problem is related to the following location:
at public javax.xml.bind.JAXBElement org.userservice.bean.ObjectFactory.createBasket(org.bob.BasketType)
在从CXF 2.7.7升级到3.1.11之前,这不是我收到的错误
有人知道有没有办法让maven-jaxb2-plugin不生成方法createBasket(..)在UserService对象工厂??
还是让CXF接受两个ObjectFactoty类上相同的两个方法?
推荐答案
我的解决方案是更改
<property name="singleJaxbContext" value="true"/>
至
<property name="singleJaxbContext" value="false"/>
例如在我的应用程序-config.xml中
<bean id="jaxbextprovider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="singleJaxbContext" value="false"/>
</bean>
这篇关于JAXB错误:有多个映射。由于两个对象工厂具有相同的Bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。