写了一个servletcontext的监听器,监听他启动时候的我发现了servletcontext里面写的线程被启动了两次,再三检查了代码之后发现线程并没有在其他地方被启动,所以就开始怀疑项目是不是被servletcontext的监听器是否是执行两次,因为监听器是随着项目被加载被而开始监听,所以我在想是否是同一个项目被加载了两次。在
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.print("不好,我被监听到了");
}
这里我们在servletcontext初始化的加入一段代码,然后启动tomcat。通过catalina.out日志不难发现
这里可以看到确实,servletcontext被初始化了两次,所以可以断定项目被启动了两次,然后我们在看servlet.xml里面的配置
这里可以看到项目加载的基础目录是webapps,同时下面还有两个context,把重复的context去掉,就可以解决掉项目被启动两次的问题。ps(在监听器重不要写过于复杂的代码,因为一个项目要等servletcontext监听器里的代码加载完成之后才能加载完,要不项目会启动过慢,甚至项目加载失败)