Es gibt keine ObjectFactory mit einem @XmlElementDecl
Zur Implementierung in GlassFish Server Open Source Edition 3.1.1 (build 12):
Verursacht durch: java.Sicherheit.PrivilegedActionException:
com.Sonne.xml.binden.v2.- Laufzeit.IllegalAnnotationsException: 1 Grafen von
IllegalAnnotationExceptions Es gibt keine ObjectFactory mit einem
@XmlElementDecl für das element
{http://www.w3.org/2004/08/xop/include}Enthalten.
dieses problem bezieht sich auf folgenden Standort:
bei protected java.util.Liste EVU.gosuslugi.smev.rev120315.ReferenceType.Inhalt
am ru.gosuslugi.smev.rev120315.ReferenceType
bei public javax.xml.binden.JAXBElement ru.gosuslugi.smev.rev120315.ObjectFactory.createReference(ru.gosuslugi.smev.rev120315.ReferenceType)
am ru.gosuslugi.smev.rev120315.ObjectFactory
bei protected java.util.Liste EVU.gosuslugi.smev.rev120315.AppDataType.jeder
am ru.gosuslugi.smev.rev120315.AppDataType
an geschützten ru.gosuslugi.smev.rev120315.AppDataType ru.gosuslugi.smev.rev120315.MessageDataType.appData
am ru.gosuslugi.smev.rev120315.MessageDataType
an geschützten ru.gosuslugi.smev.rev120315.MessageDataType
ru.gosuslugi.smev.rev120315.BaseMessageType.messageData
am ru.gosuslugi.smev.rev120315.BaseMessageType
Quellen:
src/org/w3/_2004/_08/xop/include/Include.java
//
//This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2
//See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
//Any modifications to this file will be lost upon recompilation of the source schema.
//Generated on: 2012.08.22 at 04:13:30 PM MSK
//
package org.w3._2004._08.xop.include;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
/**
* <p>Java class for Include complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="Include">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <any namespace='##other' maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* <attribute name="href" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
* <anyAttribute namespace='##other'/>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Include", propOrder = {
"any"
})
public class Include {
@XmlAnyElement(lax = true)
protected List<Object> any;
@XmlAttribute(name = "href", required = true)
@XmlSchemaType(name = "anyURI")
protected String href;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
/**
* Gets the value of the any property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the any property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getAny().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Object }
*
*
*/
public List<Object> getAny() {
if (any == null) {
any = new ArrayList<Object>();
}
return this.any;
}
/**
* Gets the value of the href property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getHref() {
return href;
}
/**
* Sets the value of the href property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setHref(String value) {
this.href = value;
}
/**
* Gets a map that contains attributes that aren't bound to any typed property on this class.
*
* <p>
* the map is keyed by the name of the attribute and
* the value is the string value of the attribute.
*
* the map returned by this method is live, and you can add new attribute
* by updating the map directly. Because of this design, there's no setter.
*
*
* @return
* always non-null
*/
public Map<QName, String> getOtherAttributes() {
return otherAttributes;
}
}
org/w3/_2004/_08/xop/include/ObjectFactory.java
//
//This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2
//See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
//Any modifications to this file will be lost upon recompilation of the source schema.
//Generated on: 2012.08.22 at 04:13:30 PM MSK
//
package org.w3._2004._08.xop.include;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
import javax.xml.namespace.QName;
/**
* This object contains factory methods for each
* Java content interface and Java element interface
* generated in the org.w3._2004._08.xop.include package.
* <p>An ObjectFactory allows you to programatically
* construct new instances of the Java representation
* for XML content. The Java representation of XML
* content can consist of schema derived interfaces
* and classes representing the binding of schema
* type definitions, element declarations and model
* groups. Factory methods for each of these are
* provided in this class.
*
*/
@XmlRegistry
public class ObjectFactory {
private final static QName _Include_QNAME = new QName("http://www.w3.org/2004/08/xop/include", "Include");
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.w3._2004._08.xop.include
*
*/
public ObjectFactory() {
}
/**
* Create an instance of {@link Include }
*
*/
public Include createInclude() {
return new Include();
}
/**
* Create an instance of {@link JAXBElement }{@code <}{@link Include }{@code >}}
*
*/
@XmlElementDecl(namespace = "http://www.w3.org/2004/08/xop/include", name = "Include")
public JAXBElement<Include> createInclude(Include value) {
return new JAXBElement<Include>(_Include_QNAME, Include.class, null, value);
}
}
- Wie sind Sie mit der Erstellung Ihrer
JAXBContext
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein JAXB-Modell generiert aus einem XML-schema, empfehle ich immer die Erstellung der
JAXBContext
mithilfe der Paket-name des generierten Modells.Du nicht angeben, welche Art von Anwendung, die Sie bereitstellen, GlassFish, aber wenn es ein JAX-RS/Jersey-Anwendung würde ich empfehlen die Verwendung eines
ContextResolver
. Dies ist ein standard-Mechanismus, der gibt Ihnen mehr Kontrolle über wie Sie IhreJAXBContext
erstellt. Unten ist ein Beispiel.Stand ich vor genau dem gleichen Problem vor 6 Monaten und ehrlich gesagt, ich weiß nicht, wie es gelöst wurde (wahrscheinlich wir nicht brauchen, einige Funktionen so legen wir es beiseite). Aber heute mal wieder unsere schöne stacktrace verflucht mit der Meldung (wörtlich wie deine)
Aber dieses mal war ich in der Lage, damit umzugehen.
Es ist nichts falsch mit Gehören der Klasse. Aber irgendwie, und das ist meine Vermutung, es wird nicht richtig geladen für jaxb, oder nicht an der Zeit, die wir brauchen, oder ... was auch immer.
Was ich versuche zu tun, in meinen code zu validieren, die eine Nutzlast der soap-Nachricht.
Spare mich für die einprogrammierte Werte, es ist nur für die Fehlersuche. Dennoch ist die erste Zeile, wo die exception geworfen wird, da Jaxb irgendwie weiß nichts über Include oder verwendet die falsche Klasse. Um es zu beheben muss man laden mehrere Klassen zur gleichen Anruf.
So ist das Letzte Update war für mich
Hoffe, das hilft und vielleicht werde ich eines Tages mehr zu erweitern auf die wirkliche Ursache des Problems.
Können Sie versuchen, indem @XmlRoolElement annotation erzeugen, Gehören der Klasse.
@XmlRootElement