修改了 spring web 项目的 context root 为 / 之后,在启动项目时,会导致 WebApplicationContext  初始化两次,下面是其初始化日志:

第一次初始化:

四月 22, 2016 4:30:33 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext

第二次初始化:

四月 22, 2016 4:30:39 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext

可以看到两次初始化之间仅仅相隔了 6 秒钟。两次发布的原因是,tomcat 会发布一次 /xxx ,然后在发布一次 / ,所以就有了两次发布,两次 WebApplicationContext  的初始化

两次初始化 WebApplicationContext   会导致很多问题:

1. 问题一

第二次初始化时,会导致 数据库的连接数,增加 初始化 的数量,比如数据库连接的初始化数目为:

initialPoolSize=20

那么 第二次初始化 WebApplicationContext  会导致 数据库的连接数 增加 20 个,第一次初始化 WebApplicationContext  的数据库连接不会释放

使用 select host, count(host) from information_schema.processlist; 可以查看 连接数;

也可以使用 status 名录,直接查看连接数:

mysql> select host, count(host) from information_schema.processlist;
+------+-------------+
| host | count(host) |
+------+-------------+
| | 46 |
+------+-------------+
1 row in set (0.01 sec) mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.27, for Win32 (x86) Connection id: 34
Current database:
Current user: ODBC@
SSL: Not in use
Using delimiter: ;
Server version: 5.6.27-log MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Uptime: 8 hours 12 min 16 sec Threads: 46 Questions: 20950 Slow queries: 0 Opens: 131 Flush tab
--------------
Threads: 46 表示有46个连接。

2. 问题二

会 导致dubbo消费者注册了两次。

3. 问题三

会导致 定时器 任务 会多次触发.

....

4. 解决方法:

1)可以在 tomcat 前端 加个 nginx, 让 nginx 指向 tomcat,这样就不用修改 项目的 context root 目录到 / 了;

2)可以直接在发布项目时,打个包,然后解压到 tomcat 的 ROOT目录下,这样也 不需要修改 项目的 context root 目录到 / 了;

3)如果觉得 打包,然后解压到 tomcat的 root 目录还是麻烦,那么可以将项目的名称 改成 ROOT,然后将 项目的 context root 改成 /,可以直接发布到了 tomcat 的ROOT目录下;

不需要打包,然后解压了;

4)不要把Deploy path设置成webapps就可以了,也就是不让tomcat去加载webapps那一次

第4中方法在开发时,应该是很好用的。

spring项目的 context root 修改之后,导致 WebApplicationContext 初始化两次的解决方法的更多相关文章

  1. 项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法

    上一篇文章刚说项目部署到tomcat的ROOT中,今天就发现一个问题.通过eclipse启动tomcat时候,WebApplicationContext 初始化两次: 现象:   通过eclipse控 ...

  2. 因修改/etc/ssh权限导致的ssh不能连接异常解决方法

    因修改/etc/ssh权限导致的ssh不能连接异常解决方法 现象: $ssh XXX@192.168.5.21 出现以下问题 Read from socket failed: Connection r ...

  3. [转]权限问题导致Nginx 403 Forbidden错误的解决方法

    权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...

  4. Tomcat启动时项目反复载入,导致资源初始化两次的问题

    近期在项目开发測试的时候,发现Tomcat启动时项目反复载入,导致资源初始化两次的问题  导致该问题的解决办法: 例如以下图:在Eclipse中将Server Locations设置为"Us ...

  5. eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法

    关于 eclipse启动卡死的问题(eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法),自己常用的解决方法: 方案一(推荐使用,如果没有这个文件,就使用方案二): 到<works ...

  6. 【spring cloud】spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法

    spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法 在spring boot1.x下,使用注解@EnableFeignClients,jar包 ...

  7. BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法

    最近一直在做互金平台,做到后台提交表单的时候出现验证提交数据一直没有提交的问题.于是百度了一下.果然是版本问题造成的.幸好找到了问题所在.我一直仿照的是东钿原微信平台的做法,但是使用byond的后台框 ...

  8. CSS设置浮动导致背景颜色设置无效的解决方法

    float浮动会使父元素高度塌陷,父级元素不能被撑开,所以导致背景颜色不能被撑开 解决方法: 对父元素设置高度 对父元素设置 overflow:hidden清除浮动 把父元素也设置为float浮动 结 ...

  9. Eclipse中spring项目的XML文件的问题

    XML文件提示Start state definition is missing. Add a 'start-state' element 原因:Eclipse 认为 XML 是“Spring Web ...

随机推荐

  1. pymssql examples

    http://pymssql.org/en/latest/pymssql_examples.html Example scripts using pymssql module. Basic featu ...

  2. Get a List of Keys From a Dictionary in Both Python 2 and Python 3

    http://askubuntu.com/questions/656610/trying-to-install-mysql-connector-for-python-3?rq=1 trying to ...

  3. Spring常用注解汇总

    本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...

  4. 你知道什么是Grunt么?

    一句话,Grunt是前端的Maven.它是JavaScript世界的构建工具. 1. 首先安装node.js,由于Grunt需要依赖于node.js的npm来管理和安装.最终检测安装node.js成功 ...

  5. append,appendTo和prepend #1daae2

    1.append(content)                                                                                   ...

  6. js快速排序方法

    function quickSort(arr){ if(arr.length<=1){ return arr; } var arrIndex=Math.floor(arr.length/2); ...

  7. 提升手持设备点击速度之touch事件带来的坑!

    前言 上周六,我将我们项目的click换成了tap事件,于是此事如梦魇一般折磨了我一星期!!! 经过我前仆后继的努力,不计代价的牺牲,不断的埋坑填坑,再埋坑的动作,最后悲伤的发现touch事件确实是个 ...

  8. 【移动适配】移动Web怎么做屏幕适配(三)

    复杂纷扰的世界背后,总会有万变不离其宗的简单规则 啃先生 Mar.8th.2016 壹 | Fisrt 前面写了两篇移动适配相关的文章: <移动Web怎么做屏幕适配(一)>重点介绍了怎样利 ...

  9. SAP/SD - 做SD你要知道的透明表

    一.客户主数据基本数据放在KNA1里:公司代码放在KNB1里:销售视图放在KNVV里:合作伙伴放在KNVP里:二.信用主数据KNKK里有信贷限额.应收总额.特别往来:S066里是未清订单值:S067里 ...

  10. SharePoint Online 创建门户网站系列之首页布局

    前 言 SharePoint Online中创建首页布局,一般都是首先将美工提供的效果图,切图成为Html + Css + Script的形式,然后,将所有资源文件传到SharePoint Onlin ...