您的位置:首页 > 其它

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

2013-10-10 09:41 465 查看
在上一篇文章《


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

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

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

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

[java]
view plaincopyprint?

警告: 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?

<init-param> 

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

            <param-value>classpath:cxf-servlet.xml</param-value>//这时就回到classpath下去找名为cxf-servlet.xml文件 

        </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?

package org.apache.cxf.transport.servlet; 

 
import java.io.IOException; 

import java.io.InputStream; 

import java.net.URL; 

import javax.servlet.ServletConfig; 

import javax.servlet.ServletContext; 

import org.apache.cxf.Bus; 
import org.apache.cxf.BusFactory; 

import org.springframework.context.ApplicationContext; 

import org.springframework.core.io.Resource; 

import org.springframework.web.context.support.WebApplicationContextUtils; 

import org.springframework.web.context.support.XmlWebApplicationContext; 

 
public class CXFServlet
extends CXFNonSpringServlet 

  protected void loadBus(ServletConfig sc) 

  { 
    ApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(sc.getServletContext()); 

 
    String configLocation = sc.getInitParameter("config-location"); 

    if (configLocation == null) 

      try { 
        InputStream is = sc.getServletContext().getResourceAsStream("/WEB-INF/cxf-servlet.xml"); 

        if ((is !=
null) && (is.available() > 0)) { 

          is.close(); 
          configLocation = "/WEB-INF/cxf-servlet.xml"; 

        } 
      } 
      catch (Exception ex) 
      { 
      } 
    if (configLocation !=
null) { 
      wac = createSpringContext(wac, sc, configLocation); 
    } 
    if (wac != null) 

      setBus((Bus)wac.getBean("cxf", Bus.class)); 

    else 
      setBus(BusFactory.newInstance().createBus()); 

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: