web项目springMVC整合CXF

作者 Tenie
2018-11-29 00:00:00 字数: 1158 阅读: 0 评论: 0

工作项目使用了SpringMVC的RESTful作为webservice的对外接口; 客户需要我们项目提供wsdl形式的webservice;

初始尝试把CXF整合到项目内,  项目启动后, 在浏览器中访问对应路径 报 No services have been found. 

网上看到的原因:文章链接->cxf和spring mvc的集成

Spring MVC是通过DispatcherServlet来加载Spring配置文件的,因此不需要在web.xml中配置ContextLoaderListener。但是CXF却需要通过ContextLoaderListener来加载Spring。 

我的情况: 

1.  只配DispatcherServlet 就报No services have been found. 

2. 只配ContextLoaderListener 就访问不到SpringMVC中的@Controller

3. 根据上面提到的文章, 方案, 进行了配置:

  •  在web.xml 中添加 一个ContextLoaderListener
  • 添加一个cxf.xml 配置文件, 配置与spring的整合信息.

web.xml  添加的配置

<context-param>  

        <param-name>contextConfigLocation</param-name>  

        <param-value>   

           WEB-INF/classes/applicationContext_interface.xml,    <!-- 项目主配置文件;  之后Spring的DispatcherServlet 也使用了这个配置文件-->

            WEB-INF/classes/cxf-server.xml                                      <!-- 项目cxf配置文件; 这个是一个单独的spring 配置文件-->

        </param-value>   

    </context-param>   

    <listener>    

        <listener-class>    

            org.springframework.web.context.ContextLoaderListener    

        </listener-class>    

    </listener>    

<!-- cxf 的servlet -->

<servlet>    

        <servlet-name>CXFServlet</servlet-name>    

        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    

        <load-on-startup>2</load-on-startup>    

    </servlet>    

    <servlet-mapping>    

        <servlet-name>CXFServlet</servlet-name>    

        <url-pattern>/webservice/*</url-pattern>    

    </servlet-mapping>