gpt4 book ai didi

java - JAXB 错误 : has more than one mapping. 由于两个对象工厂具有相同的 Bean

转载 作者:行者123 更新时间:2023-11-30 10:28:04 25 4
gpt4 key购买 nike

我有两个 Maven JAXB 项目。

A:Main Maven JAXB stub XSD 项目,其中包含 BASKET.xsd

B:Maven JAXB stub 想要将 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-插件 0.13.2

在应用程序启动时,我收到 CXF-RT-Frotnend-JaxRS 3.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 不在 UserService ObjectFactory 上生成方法 createBasket(..)?

或者让 CXF 在两个 ObjectFactoty 类上接受两个相同的方法?

最佳答案

我的解决方案是改变

<property name="singleJaxbContext" value="true"/>

<property name="singleJaxbContext" value="false"/>

例如在我的 application-config.xml 中

  <bean id="jaxbextprovider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="singleJaxbContext" value="false"/>
</bean>

关于java - JAXB 错误 : has more than one mapping. 由于两个对象工厂具有相同的 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com