eclipse - 如何修复 "Trying to write END_DOCUMENT when document has no root"错误?

标签 eclipse web-services tomcat wsdl jax-ws

我将继续 =)) 使用 Eclipse 在 Tomcat 7 上创建 jax-ws soap Web 服务(取得了不同程度的成功)。

我的 Eclipse“mavened”webapp 项目中有接口(interface):

@WebService(targetNamespace = "http://new.webservice.namespace", name = "MayaServiceInterface")
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface MayaServiceInterface {


    @WebResult(name = "getPersonResponse", targetNamespace = "http://new.webservice.namespace", partName = "parameter")
    public getPersonResponse getCustomer(
        @WebParam(partName = "parameter", name = "getPersonRequest", targetNamespace = "http://new.webservice.namespace")
        getPersonRequest parameter

    );

}

和实现接口(interface)的类:

@javax.jws.WebService
     (
                      serviceName = "ABCWsService",
                      portName = "ABCWsPort",
                      targetNamespace = "http://new.webservice.namespace",
                      endpointInterface = "com.mayacomp.ws.MayaServiceInterface")


public class MayaServiceEndPoindImpl implements MayaServiceInterface {

    @Override
    public getPersonResponse getCustomer(getPersonRequest parameter) {
        // TODO Auto-generated method stub
        return null;
    }


} // end of class

当我尝试“在服务器上运行”网络服务时,我收到一个包含下一个信息的页面:

Web Services Endpoint Information Service Name: {http://new.webservice.namespace}ABCWsService Port Name: {http://new.webservice.namespace}ABCWsPort Address: http://localhost:8080/maya-web-service/ABCWs WSDL: http://localhost:8080/maya-web-service/ABCWs?wsdl Implementation class: com.mayacomp.ws.MayaServiceEndPoindImpl

当我点击 http://localhost:8080/maya-web-service/ABCWs?wsdl 时我在 Eclipse 控制台中收到 HTTP 500 错误和下一个信息:

may 05, 2015 7:08:16 PM com.sun.xml.ws.transport.http.servlet.WSServletDelegate doGet SEVERE: caught throwable java.io.IOException: Trying to write END_DOCUMENT when document has no root (ie. trying to output empty document). at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:299) at com.sun.xml.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:931) at com.sun.xml.ws.transport.http.HttpAdapter.handleGet(HttpAdapter.java:440) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:193) at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:161) at com.sun.xml.ws.transport.http.servlet.WSServlet.doGet(WSServlet.java:89) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: javax.xml.stream.XMLStreamException: Trying to write END_DOCUMENT when document has no root (ie. trying to output empty document). at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1518) at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1547) at com.ctc.wstx.sw.BaseStreamWriter._finishDocument(BaseStreamWriter.java:1373) at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:243) at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.close(XMLStreamWriterFilter.java:67) at com.sun.xml.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:297) ... 27 more

但我正在等待接收 wsdl(如果这听起来不奇怪的话)。请帮助我修复此错误并查看我的 wsdl。

最佳答案

问题是关于 stax-ex jar。

  • 您可以将 stax-ex-1.7.7.jar 放到您的库位置
  • 你可以添加 org.jvnet.staxex 网站 斯塔克斯 1.7.7

到你的 pom.xml

关于eclipse - 如何修复 "Trying to write END_DOCUMENT when document has no root"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058588/

相关文章:

tomcat - 在 Tomcat 上使用带有 Weld CDI 的 Jersey 部署应用程序时出错

java - Tomcat - 不使用 Apache HTTPD 的嵌套 webapp 路径

java - 达到 hibernate.c3p0.timeout 后数据库连接会发生什么?

java - org.apache.tomcat.util.bcel.classfile.ClassFormatException : Invalid byte tag in constant pool: 15

java - 何时使用网络服务

java - 具有可靠消息传递的 Apache CXF3.0.4 Soap Web 服务抛出异常

web-services - 如何在 Drupal 模块的最简单测试中指定 Web 服务 URL?

java - eclipse 是否使用 Java Instrumentation API 进行热代码替换

java - 在新的 Android 应用程序中使用大型引用项目

eclipse - EGit 推送操作给出错误 : "Error occurred during unpacking the remote end"