WebService:与Spring整合需要注意的问题

79 篇文章 1 订阅
29 篇文章 1 订阅
1.
l
如果在项目中仅发布 webservice , 则可以只配置以下内容。
l
同时默认即是读取 WEB-INF/cxf-servlet.xml 文件,所以是否指定都可以。

<servlet>

<!-- 配置cxf -->

<servlet-name>cxf</servlet-name>

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

<init-param>

<!-- 配置Spring的配置文件 -->

<param-name>config-location</param-name>

<param-value>/WEB-INF/cxf-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>cxf</servlet-name>

<url-pattern>/ws/*</url-pattern>

</servlet-mapping>


2.
l 但一般情况下,一个 web 项目,在使用了 Spring 之后,往往会通过 ApplicationContext 获取一些服务并且为了第一次访问的速度问题,此时则必须注册 Spring 的监听器。即以下代码:

<?xmlversion="1.0" encoding="UTF-8"?>

<web-appversion="2.5"

  xmlns="http://java.sun.com/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <context-param>

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

    <param-value>

    /WEB-INF/cxf-itcast.xml

    </param-value>

  </context-param>

  <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

  <servlet>

    <servlet-name>cxf</servlet-name>

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

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>cxf</servlet-name>

    <url-pattern>/ws/*</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>


3.
l 在上面出现的重复引入问题,可以修改 cxf-servlet.xml 文件。
l 修改后, CXFServlet 类将不能自动加载 cxf-servlet.xml 文件,此时将导致名为 cxf bean 加载不成功。
l 为解决此问题必须在重新命名的配置文件中加入以下代码,以启动 CXF

即:如果你是用contextConfigLocation加载的配置文件,则必须要加入以下代码。



 <!-- 关于cxf配置的注意事项

   如果没有提供给cxf默认的/WEB-INF/cxf-servlet.xml配置文件,则必须要在spring的配置文件

   中配置以下三行配置。否则将不能加载名称为cxfbean.从而启动失败。

   -->

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

<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>

<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>



4.

l 在增加了 Spring 的监听器之后,即可以使用以下代码在 Servlet 中获取 Spring 的配置 :

ApplicationContextctx =

  WebApplicationContextUtils.getWebApplicationContext(getServletContext());

  Object o = ctx.getBean("one");



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值