WebService:与Spring整合需要注意的问题
2015-12-15 08:08
627 查看
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");
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");
相关文章推荐
- 从头认识java-13.8 类型擦除的问题与解决
- Java 对象在内存中的存储
- [Java基础]----遍历Map集合,并获取map集合中的所有值得方法
- java synchronized详解
- 基于注解的Spring AOP的配置和使用
- jdk7 HashSet和HashMap源码分析
- Java并发编程学习笔记(二)——对象的共享
- 关于myeclipse项目图标警告消除的几个解决方法
- java switch语句探索
- spring-session源码解读-4
- Struts2的action之间的交互
- java 路径的困扰
- 分布式搜索elasticsearch java API 之(五)------搜索
- 读懂Java中的Socket编程
- struts2.x HelloWorld项目
- java springMVC 开发微信公众号
- 可视化日历(java)代码
- JAVA基本类型取值范围
- 关于Java编码的一些不错的文章
- spring加载properties属性文件到内存