Verursacht durch: javax.xml.binden.JAXBException: Klasse, noch einer seiner super-Klasse bekannt ist in diesem Zusammenhang

Habe ich die folgenden automatisch generierten Klassen aus dem xsd.

<xs:element name="Add" type="tns:AddType"/>

<xs:complexType name="AddCatalogDataItem">
    <xs:complexContent>
        <xs:restriction base="tns:AddType">
            <xs:sequence>
                <xs:element ref="tns:Code"/>
                <xs:element ref="tns:Value" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:restriction>
    </xs:complexContent>
</xs:complexType>

<xs:complexType name="LoadDataRequest">
    <xs:complexContent>
        <xs:restriction base="AppDataType">
            <xs:sequence>
                <xs:element ref="tns:Code"/>
                <xs:element ref="tns:RegCode" minOccurs="0"/>
                <xs:element ref="tns:Add" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:restriction>
    </xs:complexContent>
</xs:complexType>

Beim erstellen einer Anfrage beim marshalling der Bühne bin ich immer diese Fehlermeldung:

Verursacht durch: javax.xml.binden.JAXBException: class com.ats.vis.services.Konzentrator.AddCatalogDataItem noch seine super-Klasse bekannt ist zu diesem Kontext.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "LoadDataRequest")
public class LoadDataRequest
    extends AppDataType {}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AddType", propOrder = {
    "any"
})
@XmlSeeAlso({
     AddCatalogDataItem.class,
    AddCatalogDataResult.class
})
public class AddType {}

Hier ist das Stück code der Schöpfung.

LoadDataRequest appdt = new LoadDataRequest();
AddCatalogDataItem add = new AddCatalogDataItem();              
add.getAny().add(new JAXBElement<String>(new QName(NS_CONC, "Code"),String.class, updateOper.code));
аppdt.getAny().add(add);

Und code marshaller.

private SOAPMessage createSOAPRequest(LoadDataRequest request) throws SOAPException, JAXBException {
    SOAPMessage message = MessageFactory.newInstance().createMessage();
    Marshaller marshaller = JAXBContext.newInstance(request.getClass()).createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    JAXBElement<LoadDataRequest> jaxbElement = new JAXBElement<>(new QName(NS_CONC, "LoadDataRequest"), LoadDataRequest.class, request);

    marshaller.marshal(jaxbElement, message.getSOAPBody());

    return message;
}

Ich bin running out of Ideen, was ist falsch an diesem code. Bitte, helfen.

Warum sind Sie mit JAXBElement<LoadDataRequest> ? versuche zu nennen, marshaller mit request Objekt.
Noch kein Glück
Hinzufügen @XmlRootElement auf Ihre Klassen. Sollte funktioniert gut auf diese Weise. Sorry das ich nicht sehen vor.
Ich habe aktualisiert die Beschreibung (xsd-Teil). Immer noch kein Glück. @ XmlRootElement nicht helfen.

InformationsquelleAutor Nem | 2015-11-13

Schreibe einen Kommentar