spring定时任务执行两次 项目重复初始化 项目启动两次

 

tomcat/config/server.xml中Host标签Context节点的问题

项目里quartz定时器总是被执行2次,通过打印发现原来项目被加载了两次,所以项目下的Listener被重复加载了

server.xml是这样的

appBase是指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于的相对目录.如果没有此项,默认为/webapps。 

appBase的两个作用:

1. 这个目录下面的子目录将自动被部署为应用。
2. 这个目录下面的.war文件将被自动解压缩并部署为应用

docBase是指定Web应用的文件路径.可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径. 如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径。

path是访问docBase所在项目的访问路径,如果path为“”值,则浏览器地址栏输入tomcat所在的IP:端口,就可访问到docBase所在的项目。

 docBase是你文件夹的名字(也就是项目名),path是你的访问路径,appBase+path拼接来访问

出现上述问题的原因是tomcat加载完appBase=”webapps”之后又去加载docBase(不清楚先加载哪个),因此造成加载两次项目的问题。

解决方法一:将Host下的Context注释掉。推荐这种方法

  

  网上的说法如下:

               

 

缺点是,IP端口后面需要加上项目名,才可以访问到项目

解决方法二:appBase为空或者为随意设置的一个空文件夹(可能需要新建该文件夹)

缺点是,如果部署的是war包,war包将不会被自动解压。

解决方法三:appBase为空

 

缺点是,如果部署的是war包,war包将不会被自动解压。

解决方法四:Context中的path不为空也不为“/”,path的值为“/”+项目名(不知道为什么这样不会重复加载)

缺点和方法一一样。

 

会出现重复加载的情况:

第一种:appBase=“webapps”,path=“”

第二种:appBase="webapps",path="/"

 

 

 综上,推荐方法一,将Context部分注释掉。

 

 参考文献:

http://blog.csdn.net/tuntun1120/article/details/64126278

http://blog.csdn.net/u012554102/article/details/50409452

http://www.iteye.com/problems/94122

http://nkliuliu.iteye.com/blog/816335

转载于:https://www.cnblogs.com/Syney/p/7678714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值