我正在尝试使用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)
答案 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