org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' is defined

使用 cxf 3.1.6 和 Spring 4.0.3整合出现以下异常信息:

 root cause

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' is defined
    org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:641)
    org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1159)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:282)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
    org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:979)
    org.apache.cxf.transport.servlet.CXFServlet.loadBus(CXFServlet.java:80)
    org.apache.cxf.transport.servlet.CXFNonSpringServlet.init(CXFNonSpringServlet.java:77)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:745)

原因:没有加载 META-INF/cxf/cxf.xml 这个文件
解决办法:

 
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:spring-mvc.xmlparam-value>
    context-param>

在 web.xml 文件中找到这段代码,然后将

<import resource="classpath*:META-INF/cxf/cxf.xml" />

这句添加到 配置的 .xml文件中或者这个文件中 import 的其它 .xml 文件中

我自己的加载顺序是:
web.xml中加载 :spring-mvc.xml
spring-mvc.xml:中导入了 service.xml
service.xml:中导入了cxf.xml

注意版本号,cxf3 之前的需要加载三个文件:

<import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

你可能感兴趣的:(异常)