Il n'y a pas ObjectFactory avec un @XmlElementDecl
À déployer dans GlassFish Server Open Source Edition 3.1.1 (version 12):
Causés par: java.de sécurité.PrivilegedActionException:
com.soleil.xml.bind.v2.moment de l'exécution.IllegalAnnotationsException: 1 comtes de
IllegalAnnotationExceptions Il n'y a pas ObjectFactory avec un
@XmlElementDecl pour l'élément
{http://www.w3.org/2004/08/xop/include}Inclure.
ce problème est lié à l'emplacement suivant:
à la protection de java.util.Liste ru.gosuslugi.smev.rev120315.ReferenceType.contenu
au ru.gosuslugi.smev.rev120315.ReferenceType
au public javax.xml.bind.JAXBElement ru.gosuslugi.smev.rev120315.ObjectFactory.createReference(ru.gosuslugi.smev.rev120315.ReferenceType)
au ru.gosuslugi.smev.rev120315.ObjectFactory
à la protection de java.util.Liste ru.gosuslugi.smev.rev120315.AppDataType.tout
au ru.gosuslugi.smev.rev120315.AppDataType
à la protection des ru.gosuslugi.smev.rev120315.AppDataType ru.gosuslugi.smev.rev120315.MessageDataType.appData
au ru.gosuslugi.smev.rev120315.MessageDataType
à la protection des ru.gosuslugi.smev.rev120315.MessageDataType
ru.gosuslugi.smev.rev120315.BaseMessageType.messageData
au ru.gosuslugi.smev.rev120315.BaseMessageType
Sources:
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);
}
}
- Comment êtes-vous créer votre
JAXBContext
?
Vous devez vous connecter pour publier un commentaire.
Lorsqu'un JAXB modèle est généré à partir d'un schéma XML, je recommande toujours de la création de la
JAXBContext
à l'aide du package nom du modèle généré.Vous ne spécifiez pas ce type d'application que vous déployez pour GlassFish, mais si c'est un JAX-RS/Maillot application je recommande l'utilisation d'un
ContextResolver
. C'est un mécanisme qui vous donne plus de contrôle sur la façon dont votreJAXBContext
est créé. Ci-dessous est un exemple.Je me suis confronté exactement au même problème il y a 6 mois et honnêtement je ne me souviens pas comment il a été résolu (nous n'avons probablement pas besoin de certaines fonctionnalités nous avons donc mis de côté). Mais aujourd'hui, une fois de plus notre belle stacktrace maudit avec le message (littéralement comme la vôtre)
Mais cette fois, j'ai été en mesure de traiter avec elle.
Il n'y a rien de mal avec classe. Mais de toute façon, et c'est mon avis, il n'est pas chargé correctement pour jaxb, ou pas au moment où on en a besoin, ou ... peu importe.
Ce que j'ai tenté de faire dans mon code pour valider une charge utile du message soap.
M'épargner pour les valeurs codées en dur, c'est juste pour le débogage. Néanmoins, la première ligne est l'endroit où l'exception est levée, car Jaxb en quelque sorte ne sait rien à propos de les Inclure ou utilise la mauvaise classe. Pour corriger l'on a besoin de charger plusieurs classes en même appel.
Donc, l'ultime correctif pour moi a été
Espère que ça aide, et peut-être qu'un jour je vais développer plus sur la cause réelle du problème.
Vous pouvez essayer de mettre @XmlRoolElement annotation sur générer de classe.
@XmlRootElement