通过初始化参数来制定配置文件的位置

来源:互联网 发布:windows phone 10 编辑:程序博客网 时间:2024/06/05 10:15

在上一篇文章《

基于web的cxf的第一种发布方式——简单发布

》中,我们并没有制定cxf-servlet.xml的位置

可是为什么就能读到cxf-servlet.xml呢?这时因为系统会默认的到web-inf目录下去找一个名为cxf-servlet.xml的文件,当我们移动cxf-servlet.xml

早其他位置时,它会报以下错误

[java] view plaincopyprint?
  1. 警告: Can't find the the request for http://localhost:8080/CXF_3/cxf/hello's Observer  
警告: Can't find the the request for http://localhost:8080/CXF_3/cxf/hello's Observer 

解决办法如下:

1、web.xml中

   在web.xml中加上以下代码:

 

[html] view plaincopyprint?
  1. <init-param> 
  2.             <param-name>config-location</param-name> 
  3.             <param-value>classpath:cxf-servlet.xml</param-value>//这时就回到classpath下去找名为cxf-servlet.xml文件 
  4.         </init-param> 
<init-param><param-name>config-location</param-name><param-value>classpath:cxf-servlet.xml</param-value>//这时就回到classpath下去找名为cxf-servlet.xml文件</init-param>

以下附上CXF核心servlet(CXFServlet)的主要代码(以下代码可以通过将cxf的狠心jar包拖进反编译工具中获得)

[java] view plaincopyprint?
  1. package org.apache.cxf.transport.servlet; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.InputStream; 
  5. import java.net.URL; 
  6. import javax.servlet.ServletConfig; 
  7. import javax.servlet.ServletContext; 
  8. import org.apache.cxf.Bus; 
  9. import org.apache.cxf.BusFactory; 
  10. import org.springframework.context.ApplicationContext; 
  11. import org.springframework.core.io.Resource; 
  12. import org.springframework.web.context.support.WebApplicationContextUtils; 
  13. import org.springframework.web.context.support.XmlWebApplicationContext; 
  14.  
  15. public class CXFServletextends CXFNonSpringServlet 
  16.   protected void loadBus(ServletConfig sc) 
  17.   { 
  18.     ApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(sc.getServletContext()); 
  19.  
  20.     String configLocation = sc.getInitParameter("config-location"); 
  21.     if (configLocation == null
  22.       try
  23.         InputStream is = sc.getServletContext().getResourceAsStream("/WEB-INF/cxf-servlet.xml"); 
  24.         if ((is != null) && (is.available() > 0)) { 
  25.           is.close(); 
  26.           configLocation = "/WEB-INF/cxf-servlet.xml"
  27.         } 
  28.       } 
  29.       catch (Exception ex) 
  30.       { 
  31.       } 
  32.     if (configLocation !=null) { 
  33.       wac = createSpringContext(wac, sc, configLocation); 
  34.     } 
  35.     if (wac != null
  36.       setBus((Bus)wac.getBean("cxf", Bus.class)); 
  37.     else 
  38.       setBus(BusFactory.newInstance().createBus()); 
  39.   }

原创粉丝点击