WebService:与Spring整合需要注意的问题
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的配置文件 ?? 中配置以下三行配置。否则将不能加载名称为cxf的bean.从而启动失败。 ?? --> ? <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"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |