web.xml中webAppRootKey

web.xml中webAppRootKey

1、 web.xml配置

param>
    <param-name>webAppRootKeyparam-name>
    <param-value>webapp.rootparam-value>
param>

“webapp.root”这个字符串可以随便写任何字符串。如果不配置默认值是”webapp.root”。

可以用System.getProperty(“webapp.root”)来动态获项目的运行路径。
一般返回结果例如:/usr/local/tomcat6/webapps/项目名

2、解决以下报错
部署在同一容器中的Web项目,要配置不同的,不能重复,否则报类似下面的错误:

Web app root system property already set to different value: 'webapp.root' = [/home/user/tomcat/webapps/project1/] instead of [/home/user/tomcat/webapps/project2/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 

意思是“webapp.root”这个key已经指向了项目1,不可以再指向项目2.

3、加载方式
Spring通过org.springframework.web.util.WebAppRootListener 这个监听器来运行时的项目路径
但是如果在web.xml中已经配置了 org.springframework.web.util.Log4jConfigListener这个监听器
不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能
一般配置类型下面的例子:
Xml代码 收藏代码

  
<context-param>  
    <param-name>log4jConfigLocationparam-name>  
    <param-value>WEB-INF/conf/log4j.propertiesparam-value>  
context-param>     

<context-param>  
    <param-name>log4jRefreshIntervalparam-name>  
      <param-value>3000param-value>  
 context-param>  

<listener>  
    <listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>  
 listener> 

4、在运行时动态的找出项目的路径
在log4j.properties配置文件,就可以按下面的方式使用${webapp.root}:

 log4j.appender.file.File=${webapp.root}/WEB-INF/logs/sample.log 

就可以在运行时动态的找出项目的路径

参考博客:http://elf8848.iteye.com/blog/2008595#comments

你可能感兴趣的:(web基础)