Bezogen auf JAXB: So implementieren Sie eine JAXB-kompatible Varianten-Wrapper-Klasse? Feld.[code]import static java.lang.System.*; import java.io.*; import java.util.*;
@XmlRootElement @XmlType @XmlAccessorType(XmlAccessType.NONE) static class MyObject {
public static final QName VARIANT_NAME = new QName("QQQ");
@XmlAnyElement(lax = true) private JAXBElement single = null; @XmlElementWrapper(name = "elements") @XmlAnyElement(lax = true) final List elements = new LinkedList();
@Test public void test1() throws Exception { MyObject root = new MyObject(Integer.valueOf(12345)); testMarshalUnmarshal(root); }
@Test public void test2() throws Exception { MyObject sub = new MyObject(Integer.valueOf(12345)); MyObject root = new MyObject(sub); testMarshalUnmarshal(root); }
@Test public void test3() throws Exception { MyObject oSub = new MyObject(Integer.valueOf(12345)); List oSubs = Arrays.asList(new MyObject("sub-1"), new MyObject("sub-2"), new MyObject("sub-3"));
MyObject root = new MyObject(oSub); for (MyObject o : oSubs) { root.elements.add(new JAXBElement(MyObject.VARIANT_NAME, Object.class, o)); }
testMarshalUnmarshal(root); } } < /code>
Testausgabe < /h2>
(Wie Sie sehen können, findet nicht statt) < /strong> < /p>
java.lang.IllegalArgumentException: Can not set javax.xml.bind.JAXBElement field my._JaxbElementProblem$MyObject.single to com.sun.org.apache.xerces.internal.dom.ElementNSImpl at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflect.Field.set(Field.java:657) at com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:234) at com.sun.xml.internal.bind.v2.runtime.reflect.Accessor.receive(Accessor.java:160) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(UnmarshallingContext.java:507) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:145) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:194) at my._JaxbElementProblem.testMarshalUnmarshal(_JaxbElementProblem.java:84) at my._JaxbElementProblem.test3(_JaxbElementProblem.java:119) [/code]
Ich muss eine davon erstellen, da die Schnittstelle dies erfordert. Kann mir bitte jemand wissen lassen, wie man einen erstellt, da es keinen definierten Konstruktor gibt?
Wenn ich eine bestimmte RESTful -Service -Methode aufrufe, die mit cxf erstellt wird, erhalte ich den folgenden Fehler, jemand weiß, warum und wie man sie auflöst? Dieser
Kontext ...