2017-07-03 2 views
1

habe ich zwei Maven JAXB Projects.JAXB Fehler: hat mehr als ein Mapping. Aufgrund zweier Objekt Factories mit der gleichen Bean

A: Haupt Maven JAXB Stubs XSD-Projekt enthält dieses BASKET.xsd

B: Maven JAXB Stubs Benutzer Projekt, das BASKET.xsd in ihre eigenen Objekte wickeln will.

Dies führt zu zwei Objekte Fabriken (verschiedene Pakete), die beide erklären die folgenden ...

@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); 
} 

Diese Generation wird über dieses Plugin getan ... org.jvnet.jaxb2.maven2 maven- jaxb2-Plugin 0.13.2

Auf Antrag beginne ich CXF-RT-Frotnend-JaxRS erhalten 3.1.11 mir ein Fehler geben ...

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) 

Das war kein Fehler, den ich bis ich von CXF 2.7.7 bis 3.1.11

Kennt jemand ein Upgrade bekam, wenn es einen Weg gibt Maven-jaxb2-Plugin nicht erzeugen die Methode createBasket zu erhalten (..) auf der UserService ObjectFactory ??

Oder um CXF die beiden Methoden, die identisch sind, auf den beiden ObjectFactoty-Klassen zu akzeptieren?

+0

haben Sie überprüft diese https://stackoverflow.com/questions/10795793/i-cant-understand-why-this-jaxb-illegalannotationexception-is-thrown – prasad

+0

Ja, ich Ich habe das gelesen. –

Antwort

0

Meine soloution war

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

zu

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

zum Beispiel zu ändern in meiner Anwendung-config.xml

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