Es konnte kein JAXBContext erstellt werden, der meine WSDL erstellt
Ich versuche die Erstellung meiner WSDL für die webservices aber ich bekomme diese Fehlermeldung:
Hinweis: die ap-Runde: 2 Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create JAXBContext bei com.Sonne.xml.intern.ws.Modell.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:153) bei com.Sonne.xml.intern.ws.Modell.AbstractSEIModelImpl.nachbearbeiten(AbstractSEIModelImpl.java:83) bei com.Sonne.xml.intern.ws.Modell.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:244) bei com.Sonne.tools.intern.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:229) bei com.Sonne.tools.intern.ws.wscompile.WsgenTool.run(WsgenTool.java:112) bei der sun.reflektieren.NativeMethodAccessorImpl.invoke0(Native-Methode) bei der sun.reflektieren.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) bei der sun.reflektieren.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) bei java.lang.reflektieren.Methode.invoke(Method.java:597) bei com.Sonne.tools.intern.ws.Invoker.invoke(Invoker.java:105) bei com.Sonne.tools.intern.ws.WsGen.main(WsGen.java:41) Verursacht durch: java.Sicherheit.PrivilegedActionException: com.Sonne.xml.intern.binden.v2.- Laufzeit.IllegalAnnotationsException: 1 Grafen von IllegalAnnotationExceptions java.lang.StackTraceElement nicht über eine no-arg default-Konstruktor. dieses problem bezieht sich auf folgenden Standort: bei java.lang.StackTraceElement bei public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace() bei java.lang.Throwable bei java.lang.Ausnahme bei java.sql.SQLException an private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException bei der wsdb.jaxws.SQLExceptionBean bei java.Sicherheit.AccessController.doPrivileged(Native Method) bei com.Sonne.xml.intern.ws.Modell.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:140) ... 10 mehr Verursacht durch: com.Sonne.xml.intern.binden.v2.- Laufzeit.IllegalAnnotationsException: 1 Grafen von IllegalAnnotationExceptions java.lang.StackTraceElement nicht über eine no-arg default-Konstruktor. dieses problem bezieht sich auf folgenden Standort: bei java.lang.StackTraceElement bei public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace() bei java.lang.Throwable bei java.lang.Ausnahme bei java.sql.SQLException an private java.sql.SQLException wsdb.jaxws.SQLExceptionBean.nextException bei der wsdb.jaxws.SQLExceptionBean bei com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91) bei com.Sonne.xml.intern.binden.v2.- Laufzeit.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:436) bei com.Sonne.xml.intern.binden.v2.- Laufzeit.JAXBContextImpl.(JAXBContextImpl.java:277) bei com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100) bei com.Sonne.xml.intern.binden.v2.ContextFactory.createContext(ContextFactory.java:143) bei com.Sonne.xml.intern.binden.api.JAXBRIContext.newInstance(JAXBRIContext.java:95) bei com.Sonne.xml.intern.ws.Entwickler.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:97) bei com.Sonne.xml.intern.ws.Modell.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:148) bei com.Sonne.xml.intern.ws.Modell.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:140) ... 12 mehr
Sah ich ein paar Diskussionen im internet über dieses beginnen Sie mit dem erstellen Sie einen Konstruktor für alle Klassen bis erstellen Sie eine weitere xml-Spezifikation. Die Wahrheit ist, es gibt keine eine richtige Antwort für diese oder die Lösungen, die ich zum testen nicht funktioniert.
Las ich eine Diskussion hier über dieses problem, aber es war offen und ich weiß nicht, wie zu lösen sind. Wenn jemand einen cluee darum habe ich so geschätzt zu Anschrift mich in die richtige Richtung, dies zu vermeiden.
Ich bin mit Debian Squezze, Java 1.6_20, JAX-WS JAX-WS RI 2.1.6 in JDK 6 und wsgen generieren, die der wsdl. Der erste Schritt, es Tat richtig ist, generieren Sie die jaxws-Verzeichnis mit bean-Klassen.
InformationsquelleAutor der Frage Edwin Jaws | 2011-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Throwable
Objekte (das bedeutet, dass Ausnahmen und Fehler) können nicht direkt übernommen werden, weil Sie nicht in XML serialisiert (dieStackTraceElement
nicht über eine no-arg-Konstruktor, der erforderlich ist, durch JAXB).Verwenden Sie die SOAP-Fehler. Sehen diese Frage. Es Punkte, die Sie, um die
@WebFault
annotation, die Sie sollten, setzen Sie auf Ihre Ausnahme-Klasse. (Wahrscheinlich auch zu prüfen diese und diese)InformationsquelleAutor der Antwort Bozho
Dominic D. hatte die richtige Antwort, die für mich gearbeitet (ich bin zu neu, zu Stimmen, es scheint dumm, dass ich haben, um einen anderen post anstatt nur eine vorhandene Antwort funktioniert...)
Mein Maven Projekt erstellt, einfach schön mit JDK 6, aber wenn ich wechselte zu werden mit dem JDK 1.7 als meinen Standard, der build brach. Durch das hinzufügen einer expliziten jaxb-impl-Abhängigkeit w/- version, es funktionierte, wie:
Bezüglich der version. Dieser Fehler aufgeführt ist https://java.net/jira/browse/JAXB-814. Es ist fest für die Versionen ab 2.2.4u2', 2.2.5, 2.3
InformationsquelleAutor der Antwort Jeff Vincent
Ich haben beschlossen, dieses Problem durch die Festsetzung der jaxb-impl-version von 2.1.9, 2.2.6
und es funktioniert jetzt
InformationsquelleAutor der Antwort abhijeet mane
Es sieht aus wie ein Teil von Ihr deklarierten API enthält eine Art, erstreckt sich ein Typ mit einem internen Feld vom Typ StackTraceElement[ ].
Weil StackTraceElement hat keine null-argument-Konstruktor, JAXB nicht de-serialisiert Instanzen dieser Klasse .
Versuchen, das entfernen des nextException Feld aus SQLExceptionBean, oder das entfernen der Parameter vom Typ SQLExceptionBean von Ihrem service-APIs.
InformationsquelleAutor der Antwort Adrian
Es ist bekannt, dass-ohne Ausnahme - /Throwable-Klasse kann nicht gemarshallt werden von JAXB aufgrund der Tatsache, dass der StackTrace nicht über eine default-Konstruktor. Was Sie tun können, ist, erstellen Sie Ihre eigenen Exception-Klasse, die sich aus sagen, in deinem Beispiel, WebServiceException. In Ihrer Klasse, überschreiben Sie die Methoden, die verwenden würde StackTrace und fügen Sie den
@XmlTransient
Anmerkung zu Ihnen. Solange Sie mit JAXB 2.2.4u2 ' + die Marshaller halten die@XmlTrasient
Anmerkung in Ihre benutzerdefinierte Klasse.Weitere Details gibt es bei http://java.net/jira/browse/JAXB-814beschreibt den Mangel, wo
@XmlTransient
hat nicht funktioniert gut auf Unterklassen.Unten ist ein Beispiel der Klasse, der marshall richtig:
Wenn Sie Maven, müssen Sie diese Abhängigkeit:
InformationsquelleAutor der Antwort Domenic D.
Beachten Sie, dass Sie nicht haben, erstellen Sie eine benutzerdefinierte Ausnahme. Sie einfach ned verwenden Sie die richtige version von JAXB, wenn Sie die Erstellung Ihrer Klassen. Zum Beispiel:
InformationsquelleAutor der Antwort Domenic D.
Ich hatte dieses problem auch!
GENAU das gleiche!
DIESE FEHLERMELDUNG SEHEN,
Ging ich durch meinen code und überprüft, der Grund ist
Einen web-Methode sollten Sie nicht throw eine Ausnahme,entfernen, um das problem zu lösen simplely,wenn u darauf bestehen, das zu tun,Folgen Sie der ersten Antwort von @Bozho .
InformationsquelleAutor der Antwort user2710368
Löste ich dieses Problem durch hinzufügen einer SOAPBinding auf meinen Schnittstelle:
InformationsquelleAutor der Antwort Nerea Uriarte