JAXB versucht abstrakte Klasse zu erzeugen

minos5000

Aktives Mitglied
Hi,

ich habe eine Menge von Schemas in denen u.A. folgende Typen definiert sind.

[XML]
<xsd:complexType name="CT_Objekt" abstract="true">
<xsd:sequence>
<xsd:element name="Erweiterung" type="CT_Erweiterung" minOccurs="0" maxOccurs="1" nillable="true"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="CT_Erweiterung" abstract="true">
<xsd:sequence/>
</xsd:complexType>

<xsd:complexType name="CT_Filter" abstract="true">
<xsd:complexContent>
<xsd:extension base="allgemein:CT_Objekt">
<xsd:sequence/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="CT_Suche">
<xsd:complexContent>
<xsd:extension base="kontext:CT_Filter">
<xsd:sequence>
<xsd:element name="Nummer" type="daten:ST_Text030" minOccurs="0" maxOccurs="1" nillable="true">
</xsd:element>
....
....
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>[/XML]

Ich habe mit xjc die entsprechenden Java-Klassen generiert und stehe jetzt vor dem Problem, dass beim Instanziieren eines CT_Suche-Objektes immer auch versucht wird, eine Instanz von CT_Erweiterung zu erzeugen, was natürlich fehlschlägt, da dieser Typ abstrakt ist.

Die Frage die ich mir stelle ist, wo liegt hier der Fehler. Hätte der Schreiber der Schemas CT_Erweiterung nicht abstrakt definieren dürfen oder sollte JAXB so schlau sein zu merken, dass ein Objekt des Typs nicht erzeugt werden darf?

Gruß
minos
 

musiKk

Top Contributor
Das sollte nicht so sein. Wie sieht denn der generierte Code aus? Ich habe Dein Snippet mal genommen und xjc (version 2.2.4-2) gegeben. In CTSuche wird nicht versucht, CTFilter zu instanziieren. Ich kann auch erfolgreich (un)marshallen.
 

minos5000

Aktives Mitglied
Hmm, eigenartig. Der generierte Code sieht bei mir so aus

Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CT_Partnersuche", propOrder = {...})
public class CTPartnersuche
    extends CTFilter
{ }

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CT_Filter")
@XmlSeeAlso({
    CTPartnersuche.class
})
public abstract class CTFilter
    extends CTObjekt
{ }

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CT_Objekt", propOrder = { "erweiterung" })
@XmlSeeAlso({
...
    CTFilter.class,
...
})
public abstract class CTObjekt {

    @XmlElementRef(name = "Erweiterung", namespace = "http://www.bipro.net/namespace/allgemein", type = JAXBElement.class)
    protected JAXBElement<CTErweiterung> erweiterung;
...
}

Ich habe die WSDL die die Schemas referenziert in SoapUI importiert, eine Anfrage mit CTPartnersuche losgeschickt und dann scheppert es wegen besagtem "abstract".
 

musiKk

Top Contributor
Ok, so ähnlich sieht der Code bei mir auch aus. Wie gesagt, ich konnte erfolgreich (un)marshallen. Kann es sich um einen SoapUI-Bug handeln?
 

musiKk

Top Contributor
Ok, ich habe bei der Suche nach etwas anderem zufällig wahrscheinlich die Lösung für Dein Problem gefunden: Release Notes

JAXB-890 passt genau auf Deine Beschreibung. Ein Update auf 2.2.6 sollte also helfen.
 

Dan88

Neues Mitglied
Guten Tag,
Obwohl ich die neueste JDK-Version benutze (1.7.0_11) und JAXB Version 2.2.6 in Maven referenziere, habe ich auch Probleme beim Unmarshalling:
Java:
18.01.2013 15:50:56 WARN  o.a.cxf.phase.PhaseInterceptorChain - Interceptor for {http://www.bipro.net/namespace}KrankenService_2.1.0.1.0#{http://www.bipro.net/namespace}getOffer has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unerwartetes Element (URI:"", lokal:"value"). Erwartete Elemente sind (none) 
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:808) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:629) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:157) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:102) ~[cxf-api-2.7.1.jar:2.7.1]
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) ~[cxf-api-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:238) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:218) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:163) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:163) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) [servlet-api.jar:na]
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) [cxf-rt-transports-http-2.7.1.jar:2.7.1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.29]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) [catalina.jar:7.0.29]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [catalina.jar:7.0.29]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [catalina.jar:7.0.29]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) [catalina.jar:7.0.29]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) [catalina.jar:7.0.29]
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) [catalina.jar:7.0.29]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.29]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [catalina.jar:7.0.29]
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) [tomcat-coyote.jar:7.0.29]
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) [tomcat-coyote.jar:7.0.29]
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) [tomcat-coyote.jar:7.0.29]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_11]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_11]
	at java.lang.Thread.run(Thread.java:722) [na:1.7.0_11]
Caused by: javax.xml.bind.UnmarshalException: null
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:435) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:372) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:349) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:769) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:94) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at org.apache.cxf.jaxb.JAXBEncoderDecoder$1.run(JAXBEncoderDecoder.java:797) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_11]
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:795) ~[cxf-rt-databinding-jaxb-2.7.1.jar:2.7.1]
	... 30 common frames omitted
Caused by: com.sun.istack.SAXParseException2: unerwartetes Element (URI:"", lokal:"value"). Erwartete Elemente sind (none)
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:662) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:258) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:253) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:120) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(Loader.java:105) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:498) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:480) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:246) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:180) ~[jaxb-impl-2.2.6.jar:2.2.6]
	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:370) ~[jaxb-impl-2.2.6.jar:2.2.6]
	... 36 common frames omitted
Caused by: javax.xml.bind.UnmarshalException: unerwartetes Element (URI:"", lokal:"value"). Erwartete Elemente sind (none)
	... 46 common frames omitted

Hat jemand eine Idee woran das liegen kann?
Zur Generierung der Klassen und Bereitstellung des WebServices benutze ich Apache CXF (Version 2.7.1).
 
N

nillehammer

Gast
Hallo Dan88,

wenn Du ein neues Problem hast, mache bitte lieber einen neuen Thread auf, anstatt irgend einen mehr oder weniger passenden zu kapern. Das erhöht die Chancen auf Antwort, hält Ordnung und erleichtert eine eventuelle Suche nach bestimmten Problemen im Forum.

Dein Problem sieht nicht so aus, als würde da versucht, eine abstrakte Klasse zu instanziieren. So weit scheint er garnicht zu kommen. Das hier:
Code:
Unmarshalling Error: unerwartetes Element (URI:"", lokal:"value"). Erwartete Elemente sind (none)
deutet darauf hin, dass das geparste XML invalide ist. Was genau, kannst im Moment nur Du sagen. Von uns kennt keiner das XML, geschweige denn ein evtl. vorhandenes Schema.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
Rakshan Unmarshalling multiple namespaces with jaxb XML & JSON 0
B JAXB und HTML XML & JSON 1
E JAXB und java.nio.file.Path XML & JSON 4
W jaxb-api XML Feld nicht gesendet setzt das Defaultvalue nicht XML & JSON 3
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
S JAXB mit mehreren zusammenhängenden .xsd-Files XML & JSON 0
N JAXB: Überflüssiges Wrapper-Tag für Map-Einträge XML & JSON 0
D JAXB mit Map und Color XML & JSON 2
K JAXB-XML unvollständig XML & JSON 1
K JAXB Unmarshelling XML & JSON 1
E JAXB und abstrakte Klasse(n) XML & JSON 0
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
B JAXB - Marshal ArrayList XML & JSON 2
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
B JAXB-Fehler bei REST-Api XML & JSON 0
M JAXB HashMap Dynamisches Laden XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
P JAXB-Problem XML & JSON 1
A JAXB: XMLMixed generieren XML & JSON 0
R [JAXB] XmlRootElement und XmlType gemeinsam nutzen XML & JSON 0
I XML to Object - Mapping mit JAXB 1.0 XML & JSON 1
L JAXB - Generischen Wert mit Liste belegen XML & JSON 1
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
K JAXB Annotation @XMLRootElement vererben XML & JSON 0
F JAXB Unmarshal - Kein "default Constructor" XML & JSON 2
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
B JAXB - manuell Klassen aus xsd XML & JSON 3
S Jaxb Unmarshalling Problem XML & JSON 4
S JAXB - Any Elementliste - wie Werte verändern? XML & JSON 4
R JAXB: A cycle is detected in the object graph. This will cause infinitely deep XML XML & JSON 6
M JAXB: automatisches Groß schreiben Property XML & JSON 9
C Projekt - JAXB, EMF oder doch DOM? XML & JSON 4
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
J JAXB: Mehrmals abspeichern XML & JSON 3
D XML Einlesen mit JaxB XML & JSON 4
W JAXB Binding customization XML & JSON 4
L JAXB und Interfaces XML & JSON 4
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
eykarhorn JAXB namespace attribut aus rootelement entfernen XML & JSON 2
nrg JAXB - nor any of its super class is known to this context XML & JSON 3
S aus XML mit JAXB zu Baumstruktur XML & JSON 3
nrg JAXB generell auf XMLs übertragbar XML & JSON 22
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
B PropertyChangeListener generieren mit JAXB (xjc) XML & JSON 3
G JAXB und verschachtelte Elemente? XML & JSON 6
G JAXB XML-Attribute feststellen XML & JSON 4
S JAXB 2 und JSR 303 XML & JSON 11
M [JAXB] @XmlAnyElement namespace XML & JSON 4
R JAXB Unmarshal XML & JSON 2
J JAXB und ArrayList XML & JSON 4
Landei Jpa2 -> jaxb??? XML & JSON 9
M JAXB - HashMap XML & JSON 1
dzim JAXB-Unmarshalling ignoriert/löscht Einträge aus XML - oder lässt sie verschwinden XML & JSON 3
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
ruutaiokwu jaxb eclipse plugin... XML & JSON 3
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
R JAXB ausgewählte Felder XML & JSON 10
TiME-SPLiNTER JAXB: com.sun.xml.bind.v2.ContextFactory XML & JSON 3
V JAXB und leere Listen XML & JSON 2
L compareto(), equals() in JAXB generierten Dateien XML & JSON 3
D jaxb validierung/verification vor marshalling XML & JSON 3
J JAXB mit GregorianCalendar XML & JSON 4
HombreDelMundo JAXB can't handle interfaces XML & JSON 4
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
B JAXB Unmarshalling mehrerer Objekte XML & JSON 2
V JAXB schema 2 java XML & JSON 3
B JPA + JAXB Mapping Problem XML & JSON 2
S Navigieren in unbekannten JAXB-Objecten XML & JSON 2
J JAXB NullPointerException im ContextFinder XML & JSON 6
H JAXB und STAX XML & JSON 2
H JAXB Probleme beim Unmarshalling XML & JSON 3
C Serialisierung mit JAXB XML & JSON 6
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
S JAXB und viele verschachtelte Attribute XML & JSON 1
J JAXB - Map XML & JSON 2
O JAXB generierte Klassen sollen Serializable implementieren XML & JSON 1
aze JaxB: Nullelemente in Array nicht anzeigen XML & JSON 3
turmaline JAXB can't handle interfaces XML & JSON 20
sambalmueslie JAXB - Unmarshall ein XML-Document das aus zwei XSD Definitionen besteht XML & JSON 8
S JAXB und abstrakte Klasse(n) XML & JSON 4
P JAXB: Marshalling XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
M JAXB: Wie folgendes Konstrukt abbilden? XML & JSON 20
A Jaxb und Interfaces XML & JSON 12
B JaxB und XSD :-) XML & JSON 8
G JAXB - Marshaller - kein Rückgabewert XML & JSON 2
N XML will nicht weder JAXB noch XStream XML & JSON 8
F Zugriff auf durch JAXB erzeugte Object-Struktur... XML & JSON 6
C Java-Imports bei Jaxb XML & JSON 8
F Marshaling eines JAXB Objektes worin ein anderes JAXB Objekt eingeschlossen ist XML & JSON 6
K JAXB, Vererbung und Codegeneration XML & JSON 2
M XmlRootElement und JAXB XML & JSON 4
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
G jaxb Vector (oder ähnliches) von Elementen generieren XML & JSON 6
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
J JCheckbox abfragen und serialisieren mit JAXB 2.0 XML & JSON 15
F JAXB erste schritte XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben