配置问题:无法从URL位置导入bean定义

时间:2014-12-08 10:47:25

标签: spring web-services cxf

我正在尝试使用apache cxf在我的Spring项目中生成webservice。一切顺利,因为我可以看到生成的wsdl文件和其他文件,但我得到org.springframework.beans.factory.parsing.BeanDefinitionParsingException。我没有在任何地方使用spring。所以我认为生成的wsdl是不正确的。

以下是几个日志:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:META-INF/cxf/cxf-extension-soap.xml]
Offending resource: ServletContext resource [/WEB-INF/cxf-beans.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/cxf/cxf-extension-soap.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/cxf/cxf-extension-soap.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:256)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:207)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:192)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)

2 个答案:

答案 0 :(得分:1)

cxf-beans.xml是弹簧配置元数据,它创建bean,管理生命周期和依赖项。因为在你的web.xml中你已经添加了上下文加载器,其上下文参数给出了cxf-bean.xml的位置,所以你已经打开了运行cxf的spring容器。

回到你的问题,似乎你没有为你的cxf肥皂服务拥有所有的家属(罐子)。因为从cxf版本2.3 cxf.xml内部解析了所有必需的cxf-extension - *。xml,并且由于你使用的是soap,我相信它会搜索cxf-extension-soap.xml,它是cxf-rt-bindings-soap.jar的一部分。确保所有依赖于cxf的jar都已加载

答案 1 :(得分:0)

我使用cxf 3.0解决了上述问题并删除了cxf-extesions的导入 - * .xml