XMLStreamReaderException bei Aufruf des WebService über wsdl-Link

Hallo,

ich habe mittels JAX-WS einen WebService und einen aufrufenden Client. Der Aufruf funktioniert über http bzw. https bisher reibungslos.

Service service = Service.create(
            new URL( url + "?wsdl" ),
            new QName( namespace, serviceName ) );

Nun hat ein neuer Kunde als Server den „nginx“, welcher die Aufrufe an den Tomcat weiterleitet. Leider kommt es bei diesem Kunden zu folgender Fehlermeldung:

ERROR : connectService : com.sun.xml.internal.ws.streaming.XMLStreamReaderException: Fehler bei XML-Reader: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[6,3]
Message: Elementtyp „hr“ muss mit dem entsprechenden Endtag „“ beendet werden.
at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.wrapException(Unknown Source)
at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.skipTags(Unknown Source)
at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.skipElement(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.WSDLParserExtensionFacade.definitionsElements(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseImport(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseImport(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.(Unknown Source)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
at javax.xml.ws.Service.(Unknown Source)
at javax.xml.ws.Service.create(Unknown Source)

Mittels normalen „get“, lässt sich die wsdl-Datei sowohl über http als auch https abrufen, sodass sich solche ein „hr“-Tag dort nicht zu finden ist.

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");

Gibt es eine Möglichkeit, dass der beim Aufruf mittels Service.create() abgerufene Code ausgegeben werden kann? Oder wüsste vllt jemand eine Lösung für das vorliegende Problem?

Vielen Dank im Voraus.

Das liegt wohl daran, dass der nginx Server eine html Datei ausgibt. Und keine Soap Antwort.

Näher Analysieren könnte man mit einem Werkzeug wie soapui.

Gruß
Martin

Die Frage ist halt, warum die richtige wsdl über ein normales „GET“ zurückliefert wird

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestMethod(„GET“);

und nicht innerhalb des

Service.create().

Gruß Marcel

Nach genaueren hinsehen, ist nun aufgefallen, dass zwar die wsdl abgerufen werden konnte, aber die URL für den WebService innerhalb der wsdl für den Clienten nicht erreichbar ist. Folglich muss der nginx noch dies bezüglich administiert werden.

Unter dem Link „https://forum.nginx.org/read.php?11,271185,271188“ führten die Links


http://webapp.org.ua/sysadmin/setting-up-nginx-ssl-reverse-proxy-for-tomcat/

zur Lösung.

Der Connector musste um die Attribute

proxyPort=„443“
scheme=„https“

erweitert werden.