Java Web服务错误:com.ctc.wstx.exc.wstxeof异常:prolog中出现意外的EOF

Java Web服务错误:com.ctc.wstx.exc.wstxeof异常:prolog中出现意外的EOF,java,web-services,wsdl,jax-ws,wsimport,Java,Web Services,Wsdl,Jax Ws,Wsimport,我在创建Java客户端并将其连接到正在运行的Web服务时遇到问题 我使用以下代码: Service myService = null; URL wsdlLocation = new URL("http://myservice?wsdl"); QName serviceName = new QName(wsdlLocation, "MyService"); Service myService = new Service(wsdlLocation, serviceName); 其中,使用以下命令

我在创建Java客户端并将其连接到正在运行的Web服务时遇到问题

我使用以下代码:

Service myService  = null;
URL wsdlLocation = new URL("http://myservice?wsdl");
QName serviceName = new QName(wsdlLocation, "MyService");
Service myService = new Service(wsdlLocation, serviceName);
其中,使用以下命令创建服务类:

wsimport -d gen -keep http://myservice?wsdl
我也尝试过使用ApacheCXF2.4的wsdl2java生成的客户机,但得到了相同的结果

(我只为这篇文章更改了WSDL位置和服务类名,在代码中我使用了原始名称。)

但是,当我调用部署在appserver上的Web服务时,当使用new Service()命令创建服务时,会出现一个异常。 但是:我已经用soapui测试了wsdl位置,它工作得非常好。 此外,我还使用soapui创建了一个模拟服务,我的Java客户机可以连接到它,调用它并返回结果。 当我想“调用appserver上运行的web服务”时,就会出现问题

堆栈跟踪:

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
javax.xml.ws.WebServiceException:org.apache.cxf.service.factory.ServiceConstructionException:未能创建服务。
位于org.apache.cxf.jaxws.serviceinpl.(serviceinpl.java:149)
位于org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
位于javax.xml.ws.Service(Service.java:76)
在MyService(MyService.java:42)
在mypackage.createService(AClass.java:288)上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
原因:org.apache.cxf.service.factory.ServiceConstructionException:未能创建服务。
位于org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:100)
位于org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
位于org.apache.cxf.jaxws.serviceinpl.(serviceinpl.java:147)
... 还有12个
原因:javax.wsdl.WSDLException:WSDLException:faultCode=PARSER_错误:com.ctc.wstx.exc.WstxEOFException:prolog中意外的EOF
在[行,列,系统id]:[1,0,”http://myservice?wsdl"]
位于org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:256)
位于org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
位于org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:98)
... 14多
原因:com.ctc.wstx.exc.wstxeof异常:prolog中出现意外EOF
在[行,列,系统id]:[1,0,”http://myservice?wsdl"]
位于com.ctc.wstx.sr.StreamScanner.throwunnexpectedeof(StreamScanner.java:677)
位于com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2139)
位于com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2045)
位于com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
位于org.apache.cxf.staxutils.staxutils.readDocElements(staxutils.java:1248)
位于org.apache.cxf.staxutils.staxutils.readDocElements(staxutils.java:1142)
位于org.apache.cxf.staxutils.staxutils.read(staxutils.java:1069)
位于org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:247)
... 还有16个

有人能帮我一下吗?

我记得读到过,它可能与期望尾随“/”的端点有关。我不确定这是否有效,但请尝试一下,如果有效,请在这里发布。

我有一个类似的错误,当我检查服务器日志时,它与http服务器有关,因为在请求中遇到了不受支持的http方法,返回了SOAP客户端无法处理的http响应。。。检查您的web服务器日志

我有一个类似的错误,当我检查服务器日志时,它与http服务器在请求中遇到不受支持的http方法有关。由于此原因,服务器返回SOAP客户端无法处理的HTTP响应。。。因此在prolog中出现了意外的EOF 下面是tomcat“localhost.XXXX.log”的MyWeb服务器日志片段

这在客户端产生了以下错误

 com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
在我的例子中,由于我将一个安全服务降级为非安全服务,并且我的web.xml有以下错误条目,该条目使用安全约束限制GET和post,并且我没有在请求中发送所需的安全参数

<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>

受限web服务
/服务/*
得到
邮递
我删除了此约束以消除此错误:-)


在您的情况下,它可能与安全约束无关,但确实与服务器发送原始http响应有关。请检查您的服务器/客户端配置,并确保它发送http服务器喜欢的适当http请求。我遇到此错误,并发现它似乎是由于使用了返回原始http响应的URL所致HTTP 302直接重定向而不是WSDL


我使用的URL的格式是
/Service?wsdl
,它重定向到了
/Service/wsdl/Service.wsdl
格式的URL。直接使用重定向目标URL后,一切正常。

缺少一个导入。请检查到xsd的路由。

当然这不是由于字符或格式问题。
服务器可能没有返回任何数据,Woodstox(wstx)试图将这些数据解析为XML时失败了,这导致了此错误。

我也遇到了同样的问题。我必须使用WSDL文件的完整路径才能使其正常工作。

我遇到了类似的问题,我已经通过调试解决了。 当我尝试在运行时下载WSDL时,我发现由于代理,我无法获取WSDL。 请检查您是否可以在运行时访问WSDL,如以下代码所示:

  try {
      String wsdl = IOUtils.toString(new URL("http://YOUR_WSDL_URL"));
      System.out.println("WSDL => "+wsdl);
  } catch (IOException e) {
         e.printStackTrace();
  }

我对这个错误的贡献是:

在调试模式下,我没有收到此错误

当查询WSDL服务的Java程序的执行者(在我的
  try {
      String wsdl = IOUtils.toString(new URL("http://YOUR_WSDL_URL"));
      System.out.println("WSDL => "+wsdl);
  } catch (IOException e) {
         e.printStackTrace();
  }