我实现了一个listener,此listener在tomcat启动的时候读取项目的配置文件,配置文件是xml。但是读取解析的功能是在另一个工具类实现的。
这个普通的工具类B,如何获取到当前web的跟路径呢?
首先我这个listener实现了 javax.servlet.ServletContextListener这个类
重写了方法 public void contextInitialized(ServletContextEvent arg0)
在这个方法内调用工具内B实现配置文件的解析,
在调用B的方法时候把ServletContextEvent arg0的arg0传递过去
然后通过arg0.getRealPath("/")就得到了当前web环境的跟路径了。
//File:SysInitListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/*
* other
*/
public class SysInitListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent arg0) {
final Logger logger = Logger.getLogger(SysInitListener.class);
logger.info("\n\n---开始初始化系统。");
ConfigLoader.loadInterfaceItemConfig(arg0.getServletContext());
logger.info("---结束初始化系统。\n\n");
}
/*
* other
*/
}
package com.xxxxx.tool;
import java.io.File;
import java.util.*;
import javax.servlet.ServletContext;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.hntl.model.Interface;
import com.hntl.s.storage.*;
public class ConfigLoader {
private final static Logger logger = Logger.getLogger(ConfigLoader.class);
public static void loadInterfaceItemConfig(ServletContext s){
String rootpath=s.getRealPath("/");
String path =rootpath+"/config/wsInterfaceList.xml";
//先读取待管理的备用接口配置文件
logger.info("--开始读取备用接口配置文件:"+path);
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File(path));
} catch (Exception e) {
e.printStackTrace();
}
//other
}
}