tomcat的几个常见问题

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

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

<Host name="member.xxx.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="member" reloadable="true"></Context>
</Host>

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

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

<Host name="member.xxx.com" appBase="webapps" deployIgnore="member" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="member" reloadable="true"></Context>
</Host>

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

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

 

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

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

<Host name="xxx.com" appBase="webapps" ...>
。。。。。。

<Alias">www.xxx.com</Alias>

</Host>

 

3、监听spring实例化结束

可以用事件ApplicationListener

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值