tomcat部署方式引发定时任务被同时执行了多次

同学们是不是遇到过,一个定时任务程序,比如定时发送信息,同一个人收到了多条信息。感觉就像是并发一样,然后把相关配置都检查了一遍都没发现问题。

问题在哪里?首先先确认你的应用程序是不是对请求上下文(即contentpath)有特殊要求,比如项目工程名为website,但是需要以http://127.0.0.1/app/website访问,因此在tomcat的server.xml做了如下配置


		
	  

然后将website.war放在webapps下面,启动tomcat后,就会出现website和app#website两个文件夹。然后你会发现在浏览器中可以通过http://127.0.0.1/app/website和http://127.0.0.1/website都能访问,到这里你发现问题了吗?既然都能访问,说明存在两个web程序,即使你把app#website删掉,/app/website一样也能访问。如果你把website删掉,很不幸app#website启动失败。

为什么会这样呢?这就得从tomcat部署方式说起,这里我们简单描述一下



	
	

根据上述描述,启动tomcat后,由于website放在webapps下,所以会有一个/website的web程序,然后Context又配置了一个/app/website的web程序。这样就是两个web程序,所以定时任务同时执行了。

如何解决?





现在试一试,只有http://127.0.0.1/app/website可以访问了,http://127.0.0.1/website出现404,问题解决。

你可能感兴趣的:(java基础,解决问题,tomcat)