Java Web Service error: com.ctc.wstx.exc.WstxEOFException: Unerwartetes EOF im prolog
Ich habe ein problem, das erstellen und verbinden von einem Java-client zu einem Web-Service.
Ich verwende den folgenden code:
Service myService = null;
URL wsdlLocation = new URL("http://myservice?wsdl");
QName serviceName = new QName(wsdlLocation, "MyService");
Service myService = new Service(wsdlLocation, serviceName);
denen der Service-Klasse erstellt wurde, mit dem folgenden Befehl:
wsimport -d gen -keep http://myservice?wsdl
Ich habe auch versucht mit einem client generiert Apache cxf 2.4 s wsdl2java, bekam aber das gleiche Ergebnis.
(Ich habe mich verändert die WSDL-location-und Service-Klasse name nur für diesen post, in dem code, den ich verwenden wie die Originale.)
Aber ich bekomme eine exception wenn ich den Webdienst aufzurufen, der Bereitstellung auf dem Anwendungsserver, der beim erstellen der service mit dem neuen Service () - Befehl.
Aber: ich habe getestet die wsdl location mit SOAP-UI und es funktioniert perfekt.
Außerdem habe ich einen Mock-Service mittels Soap-UI, und mein Java-client eine Verbindung zu ihm herstellen konnte, nennen Sie es und Holen Sie sich die Ergebnisse wieder.
Das problem erscheint, wenn ich will' zum Aufruf der web service läuft auf dem Anwendungsserver.
Stacktrace:
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
at javax.xml.ws.Service.<init>(Service.java:76)
at MyService.<init>(MyService.java:42)
at mypackage.createService(AClass.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
... 12 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col,system-id]: [1,0,"http://myservice?wsdl"]
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:256)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
... 14 more
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col,system-id]: [1,0,"http://myservice?wsdl"]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:677)
at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2139)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2045)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1248)
at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1142)
at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1069)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:247)
... 16 more
Könnte mir bitte jemand helfen?
- Können Sie teilen Sie Ihre WSDL? Sind Sie mithilfe von rpc-Bindung?
- hast du dieses problem lösen? Ich bin immer der gleiche Fehler...
- Hast du dieses problem lösen? Ich bin immer der gleiche Fehler...
- Leider erinnere ich mich nicht, noch Zugriff auf den code. Ich bin so Leid es mir tut, nicht in die post-follow-up..., Aber ich zu 50% sicher, dass das problem war mit der ?wsdl-Teil fehlt der url (oder vielleicht war es .wsdl, statt ?wsdl). Wieder, sorry für das posting der Lösung...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass ich auf diese Fehler und festgestellt, dass, schien es zu sein, durch die Verwendung einer URL, die zurückgegeben werden eine HTTP 302-Umleitung statt der WSDL-Datei direkt.
Die URL war ich mit war in das format
/Service?wsdl
, die Weiterleitung auf eine URL im format/Service/wsdl/Service.wsdl
. Einmal benutzte ich die Umleitung-Ziel-URL direkt, funktioniert alles.Ich erinnere mich gelesen zu haben, dass es damit zusammenhängen könnte, um den Endpunkt zu erwarten, ein trailing '/'. Ich bin mir nicht sicher, ob diese gültig ist, aber bitte versuchen und hier posten wenn es funktioniert.
Ich hatte eine ähnliche Fehlermeldung, und wenn ich überprüft die server-logs - es wurde im Zusammenhang mit http-server mit: eine nicht unterstützte http-Methode in der Anfrage. Aufgrund dieser teh-server gibt eine HTTP-Antwort, dass der SOAP-client nicht in den Griff ... also Unerwartetes EOF in prolog
Unten ist ein Ausschnitt meiner web-server-Protokoll für tomcat "localhost".XXXX.log"
Diese gab folgenden Fehler auf client-Seite
In meinem Fall, da war ich Herabstufung eines gesicherten service ungesichert, und meine web.xml hatte folgenden streunenden Eintrag, war die Beschränkung von GET-und post mit einem security-constraint, und ich war nicht das senden benötigte Sicherheit Parameter in der Anfrage..
Ich entfernt diese Einschränkung, um loszuwerden, diese Fehler 🙂
In Ihrem Fall kann es nicht mit Sicherheit-Einschränkung - aber für sicher, dass seine im Zusammenhang mit server-senden von raw-http-Antwort - Bitte überprüfen Sie Ihre server - /client-Konfiguration und sicherzustellen, dass es sendet entsprechende http-Anforderung, die gern von http-server
Ich hatte eine ähnliche Fehlermeldung, und wenn ich überprüft die server-logs - es wurde im Zusammenhang mit http-server mit: eine nicht unterstützte http-Methode in Anforderung gibt eine HTTP-Antwort, dass der SOAP-client nicht in den Griff ... überprüfen Sie Ihre web-server-logs
Ich hatte ähnliches Problem und ich habe beschlossen mit dem Debuggen.
Wenn ich versuche zu downloaden WSDL-Datei in runtime fand ich, dass ich nicht kommen konnte WSDL, weil der proxy.
Bitte überprüfen Sie, dass der Zugriff auf die WSDL-Datei in runtime, wie dieser code:
Einer der Importe fehlen. Bitte überprüfen Sie die Routen, um Ihre xsd-ist.
Sicherlich ist dies nicht durch Zeichen oder format Problem.
Es ist möglich, dass der server nicht wieder alle Daten, von denen der Woodstox (wstx) wurde versucht, die Parsen in XML und scheiterte, führte zu diesem Fehler.
at [row,col,system-id]: [1,0
Ich hatte das gleiche problem. Ich hatte den vollen Pfad zur WSDL-Datei, damit es funktioniert.
Mein Beitrag zu diesem Fehler ist dieser:
Ich nicht bekomme diese Fehlermeldung, wenn ich im debugging-Modus.
Scheint es, dass, wenn der Vollstrecker das Java-Programm, das Abfragen der WSDL-Service (Java in meinem Fall) ist die Zeit, um viele Anfragen, wie im debugging-Modus, weil der manchmal, wenn die Programme beendet, da ich einige Haltepunkte, in diesem Fall habe ich nicht diesen Fehler bekommen.
Wenn ich das Programm in der Produktion-Modus, ja.
Aber die Anforderungen sind die gleichen, die WSDL nicht ändern, sowie die Anzeige der Endpunkte.
Es ist wie eine Beschränkung des web-Servers, denke ich.