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

spring定时任务执行两次 项目重复初始化 项目启动两次的更多相关文章

  1. 解决spring定时任务执行2次和tomcat部署缓慢的问题

    spring定时任务执行2次 问题重现和解析 最近使用quartz定时任务框架,结果发现开发环境执行无任何问题,部署到服务器上后,发现同一时间任务执行了多次.经过搜索发现是服务器上tomcat的配置文 ...

  2. spring定时任务执行两次的原因与解决方法

    spring定时任务,本地执行一次,放到服务器上后,每次执行时会执行两次,原因及解决办法. http://blog.csdn.net/yaobengen/article/details/7031266 ...

  3. Spring整合Quartz定时任务执行2次,Spring定时任务执行2次

    Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...

  4. spring 定时任务执行2次

    eclipse 上定时任务执行没有问题,生产环境可以看到定时任务同时执行了2次,排除代码原因,网上找了些资料,最后发现是tomcat的原因, Host 节点中有一个appBase 属性指向了webap ...

  5. 急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

    在Golang Web编程的世界里,君不言高性能则已,言高性能必称Iris.彩虹女神的名号响彻寰宇.名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Ir ...

  6. SpringBoot图片上传(三)——调用文件上传项目的方法(同时启动两个项目)

    简单说明:图片上传有一个专门的工程A,提供了图片的上传和下载预览,工程B涉及到图片上传以及回显,都是调用的工程A的方法,言外之意就是要同时启动两个项目. 代码: //工程B的html代码 <di ...

  7. vue3.0+vite+ts项目搭建--初始化项目(一)

    vite 初始化项目 使用npm npm init vite@latest 使用yarn yarn create vite 使用pnpm pnpx create-vite 根据提示输入项目名称,选择v ...

  8. spring定时任务执行两次

    最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...

  9. spring 定时任务执行两次解决办法

    在web.xml中同时配置了ContextLoaderListener和DispatcherServlet?假如真是这样的话,需要删掉一个配置,因为你相当于配置了两个spring容器,两个容器分别都执 ...

随机推荐

  1. Chrome headless 模式

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...

  2. Java ArrayIndexOutOfBoundsException: Exception Hierarchy

  3. shader 2 : use shaderToy in unity

    shadertoy 原型,https://www.shadertoy.com/view/XslGRr 先说几个概念 Shader language目前有3种主流语言:基于OpenGL的GLSL(Ope ...

  4. Linux 使用 cp 命令强制覆盖功能

    Q:我们平常在Linux中使用 cp 命令时,会发现将一个目录中文件复制到另一个目录具有相同文件名称时, 即使添加了 -rf 参数强制覆盖复制时,系统仍然会提示让你一个个的手工输入 y 确认复制,令人 ...

  5. 小谈SQL表的连接

    简述SQL连接 SQL连接呢,主要分为以下几种内连接,左连接,右连接,全连接(当然还有很多官方的说法,这里就讲讲最常用的). 既然都叫连接了,那至少要有两个对象,也就是说,至少要有两个表,要怎么样的表 ...

  6. QtCreator 断点不起作用

    使用QtCreator 调试程序时一直无法进入断点,断点根本不起作用. 解决方法: 打开.pro文件 将图中的release改为debug,再次调试运行就可以进入断点了.

  7. hbase (local mode) remote access

    如果初学hbase,没必要弄一个集群,hbase的local mode够用了. 这里写一个简单的教程.适用于初学hbase,想要用代码访问hbase的童鞋们. 目录: 0. 准备 1).  开发环境 ...

  8. 2017 年的 人生 hard 模式终于结束了,2018年回归初心(二)

    今天周末, 深圳的天气简直好的不像话.好了,我们继续之前的话题往下聊. >>>猎头 : 关于猎头这个行业,以笔者的感觉来说 一般你工作年限未超过三年的话,你是很难遇到猎头来推送你的简 ...

  9. Spring框架入门之开发环境搭建(MyEclipse2017平台)

    基于MyEclipse2017平台搭建Spring开发环境,这里MyEclipse已将Spring集成好了,我们只需要做一简单配置即可 一.环境配置 OS:Windows7 64位 IDE工具:MyE ...

  10. 【转载】linux挂载mount参数优化

    一. 1) 蓝色:表示经过优化的xfs mount时的参数defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8, ...