org.apache.axis2.dataretrieval.DataRetrievalException:无法从文件加载META-INF / ServiceData.xml

时间:2014-06-16 10:25:11

标签: web-services exception axis2 meta-inf

我遇到与laalto - Axis2 error while running web service相同的问题。

当我调用webservice时会发生以下异常,尽管该服务似乎运行正常:

06-16@11:46:05 DEBUG DataRetrievalUtil - File does not exist in the Service Repository! File=META-INF/ServiceData.xml [http-bio-8080-exec-9]
    06-16@11:46:05 DEBUG AxisDataLocatorImpl - Check loading failure for file, META-INF/ServiceData.xml.Message = Failed to load from file, META-INF/ServiceData.xml [http-bio-8080-exec-9]
    06-16@11:46:05 DEBUG AxisDataLocatorImpl - Check loading failure for file, META-INF/ServiceData.xml [http-bio-8080-exec-9]
    org.apache.axis2.dataretrieval.DataRetrievalException: Failed to load from file, META-INF/ServiceData.xml
            at org.apache.axis2.dataretrieval.DataRetrievalUtil.buildOM(DataRetrievalUtil.java:64)
            at org.apache.axis2.dataretrieval.AxisDataLocatorImpl.loadServiceData(AxisDataLocatorImpl.java:104)
            at org.apache.axis2.description.AxisService.getDefaultDataLocator(AxisService.java:2949)
            at org.apache.axis2.description.AxisService.getDataLocator(AxisService.java:2933)
            at org.apache.axis2.description.AxisService.getData(AxisService.java:2850)
            at org.apache.axis2.description.AxisService.getWSDL(AxisService.java:1545)
            at org.apache.axis2.description.AxisService.printWSDL(AxisService.java:1355)
            at org.apache.axis2.transport.http.ListingAgent.processListService(ListingAgent.java:198)
            at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:258)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
            at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
            at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
            at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
            at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:744)
    Caused by: javax.xml.stream.XMLStreamException: File does not exist in the Service Repository! File=META-INF/ServiceData.xml
            at org.apache.axis2.dataretrieval.DataRetrievalUtil.getInputStream(DataRetrievalUtil.java:103)
            at org.apache.axis2.dataretrieval.DataRetrievalUtil.buildOM(DataRetrievalUtil.java:60)
            ... 26 more

我的网络服务项目大约两年了,其结构从未改变过。结构是:

Webservices.war|-----axis2-web
               |-----META-INF|
                             |------MANIFEST.MF
               |-----WEB-INF |
                             |------web.xml
                             |------sources.....

从来没有一个名为" ServiceData.xml"。

的文件

我将Tomcat 7.0_39与Axis2 1.5.6一起使用。 Web服务组件是使用Java 1.7.0_21实现的。

以前是否可能出现此错误但尚未记录? -I使用上次部署更改了Web服务的日志记录行为。

我找到了一些提示来重命名" services.xml"到" ServiceData.xml",但这真的是一个合适的解决方案吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

此解决方案对我有用:

由于文件夹

中有services.xml,因此异常似乎没有任何影响
webapps/WebServices/WEB-INF/services/WebService/META-INF

因此可以忽略此异常。然而,异常总是表示错误,因此应该解决。

我找到了一个解决方案,但这并不令人满意,但可以防止发生异常:

复制上面文件夹中的 services.xml ,并将其重命名为 ServiceData.xml 。永远不会发生异常!简单地放置一个名为 ServiceData.xml 的空文件不起作用! ServiceData.xml 必须包含与文件 services.xml 相同的信息!

遗憾的是,这是一个实用的,但不是一个好的解决方案,因为它不会解决这个例外的原因,而是影响。

如果有更好的解决方案,请在此做出贡献!