services jax from example ejemplo consume con java web-services wsdl jax-ws wsimport

jax - Error de Java Web Service: com.ctc.wstx.exc.WstxEOFException: EOF inesperado en prolog



wsimport https (7)

Tengo un problema al crear y conectar un cliente Java a un servicio web en ejecución.

Yo uso el siguiente código:

Service myService = null; URL wsdlLocation = new URL("http://myservice?wsdl"); QName serviceName = new QName(wsdlLocation, "MyService"); Service myService = new Service(wsdlLocation, serviceName);

donde se creó la clase de servicio con el siguiente comando:

wsimport -d gen -keep http://myservice?wsdl

También probé con un cliente generado por wsdl2java de Apache cxf 2.4, pero obtuve el mismo resultado.

(Cambié la ubicación de WSDL y el nombre de la clase de servicio solo para esta publicación, en el código uso los originales).

Pero recibo una excepción cuando llamo al servicio web implementado en el servidor de aplicaciones, cuando creo el servicio con el nuevo comando de servicio (). Pero: he probado la ubicación wsdl con SOAP UI y funciona perfectamente. Además, he creado un servicio simulado que usa la interfaz de usuario de Soap y mi cliente de Java podría conectarse a él, llamarlo y recuperar los resultados. El problema aparece cuando quiero ''llamar al servicio web que se ejecuta en el servidor de aplicaciones.

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

¿Alguien podría ayudarme por favor?


Una de las importaciones falta. Por favor, compruebe las rutas a su xsd.


Recuerdo haber leído que podría estar relacionado con el punto final esperando un ''/'' posterior. No estoy seguro si esto es válido, pero por favor pruébalo y publícalo aquí si funciona.


Tuve un error similar y cuando revisé los registros del servidor: estaba relacionado con el servidor http que se encontró con un método HTTP no compatible en la solicitud devuelve una respuesta HTTP que el cliente SOAP no puede manejar ... verifique los registros de su servidor web


Tuve un error similar y cuando revisé los registros del servidor, estaba relacionado con el servidor http que había encontrado un método http no compatible en la solicitud. Debido a esto, el servidor devuelve una respuesta HTTP que el cliente SOAP no puede manejar ... por lo tanto EOF inesperado en prolog A continuación se muestra un fragmento del registro de mi servidor web para tomcat "localhost.XXXX.log"

org.apache.tomcat.util.descriptor.web.SecurityConstraint.findUncoveredHttpMethods For security constraints with URL pattern [/services/*] only the HTTP methods [POST GET] are covered. All other methods are uncovered.

Esto dio el siguiente error en el lado del cliente

com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog

En mi caso, desde que estaba degradando un servicio protegido a no seguro y mi web.xml tenía una entrada perdida que estaba restringiendo GET y publicación con una restricción de seguridad y no estaba enviando los parámetros de seguridad necesarios en la solicitud.

<security-constraint> <web-resource-collection> <web-resource-name>restricted web services</web-resource-name> <url-pattern>/services/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection>

Eliminé esta restricción para deshacerme de este error :-)

En su caso, puede no estar relacionado con la restricción de seguridad, pero está relacionado con el servidor que envía la respuesta HTTP sin procesar. Compruebe la configuración de su servidor / cliente y asegúrese de que envíe la solicitud HTTP adecuada que le gusta al servidor http.


Encontré este error y descubrí que parecía deberse a utilizar una URL que devolvía un redireccionamiento HTTP 302 en lugar del WSDL directamente.

La URL que estaba usando estaba en el formato /Service?wsdl , que se redirigió a una URL en el formato /Service/wsdl/Service.wsdl . Una vez que utilicé la URL de destino de redireccionamiento directamente, todo funcionó.


Seguramente esto no se debe a un problema de carácter o formato. Es posible que el servidor no haya devuelto ningún dato, del cual Woodstox (wstx) intentaba analizar en XML y falló, lo que dio como resultado este error.


Yo tuve el mismo problema. Tuve que usar la ruta completa al archivo WSDL para que funcione.