tomcat的几个常见问题

1、spring被实例化多次,或spring被加载多次,或spring的@Schedule同时执行了多次

其实问题都是spring被tomcat实例化了多次,原因是tomcat的Host下添加了Context节点,如:


   

有appBase="webapps",tomcat就会扫描该目录下的所有目录,如果是个工程就会被加载,此时member已经被加载。而Context下又有docBase="member",member又会被加载一次。此时member应用就被加载了两次,此时member.xxx.com和member.xxx.com/member都可以访问证明。

明白了问题现在就来解决,Host有一个deployIgnore属性可以告诉tomcat忽略某些路径,正好适合解决我们这个问题。


   

如果有多个Host那么deployIgnore就需要写多个应用目录,而deployIgnore支持正则表达式,deployIgnore="member|sso"即可。

但是member.xxx.com/member就不能访问了,此时需要确保所有的链接都不出现member.xxx.com/member部分,否则界面显示可能会不正确

 

2、为了同时支持www.xxx.com和xxx.com,是否需要写多个节点?

不需要,Host下可以有节点,如


。。。。。。

www.xxx.com

 

3、监听spring实例化结束

可以用事件ApplicationListener

本文内容到此结束,更多内容可关注公众号

你可能感兴趣的:(tomcat)