spring项目的 context root 修改之后,导致 WebApplicationContext 初始化两次的解决方法
修改了 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 初始化两次的解决方法的更多相关文章
- 项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法
上一篇文章刚说项目部署到tomcat的ROOT中,今天就发现一个问题.通过eclipse启动tomcat时候,WebApplicationContext 初始化两次: 现象: 通过eclipse控 ...
- 因修改/etc/ssh权限导致的ssh不能连接异常解决方法
因修改/etc/ssh权限导致的ssh不能连接异常解决方法 现象: $ssh XXX@192.168.5.21 出现以下问题 Read from socket failed: Connection r ...
- [转]权限问题导致Nginx 403 Forbidden错误的解决方法
权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...
- Tomcat启动时项目反复载入,导致资源初始化两次的问题
近期在项目开发測试的时候,发现Tomcat启动时项目反复载入,导致资源初始化两次的问题 导致该问题的解决办法: 例如以下图:在Eclipse中将Server Locations设置为"Us ...
- eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法
关于 eclipse启动卡死的问题(eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法),自己常用的解决方法: 方案一(推荐使用,如果没有这个文件,就使用方案二): 到<works ...
- 【spring cloud】spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法
spring boot2.x下 使用feign,注解@EnableFeignClients 找不到的解决方法 在spring boot1.x下,使用注解@EnableFeignClients,jar包 ...
- BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
最近一直在做互金平台,做到后台提交表单的时候出现验证提交数据一直没有提交的问题.于是百度了一下.果然是版本问题造成的.幸好找到了问题所在.我一直仿照的是东钿原微信平台的做法,但是使用byond的后台框 ...
- CSS设置浮动导致背景颜色设置无效的解决方法
float浮动会使父元素高度塌陷,父级元素不能被撑开,所以导致背景颜色不能被撑开 解决方法: 对父元素设置高度 对父元素设置 overflow:hidden清除浮动 把父元素也设置为float浮动 结 ...
- Eclipse中spring项目的XML文件的问题
XML文件提示Start state definition is missing. Add a 'start-state' element 原因:Eclipse 认为 XML 是“Spring Web ...
随机推荐
- 记一次ckeditor上传图片到服务器问题
package com.util;import java.io.IOException; import java.io.PrintWriter; import java.util.List;impor ...
- 在Hyper-V上安装配置Windows负载均衡NLB
搭建过程 Hyper-V 是自Windows Server2008 以来提供的虚拟机管理软件,它操作简便,功能也不错,可以方便的在它里面安装各种操作系统,如图所示: 现在,想利用这几台虚拟服务器搭建一 ...
- Ubuntu 12.10 配置MyEclipes 10.7环境(加破解)
下周要在Ubuntu中调试程序,所以今天抽空先配置好Myeclipse环境. 准备: JDK 下载地址: http://www.oracle.com/technetwork/java/javase/ ...
- 【探讨】javascript事件机制底层实现原理
前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...
- win7系统下,vs2010一调式,vs就关闭要重启
进入我的文档 %appdata%\Microsoft\VisualStudio, 将 10.0 重命名.网上找的方法有些问题,可能找这路径很难找到啊. 于是自己 找了找 一般都在当前用户文件夹下 Ap ...
- ionic + cordova 使用 cordova-plugin-crosswalk-webview 中的一些个坑
1) 在使用Web Audio API 时,无法使用 AudioContext.decodeAudioData() 对MP3文件进行解码 2)使用Cordova-plugin-weibosdk 插件时 ...
- Android悬浮窗实现 使用WindowManager
Android悬浮窗实现 使用WindowManager WindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 ...
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- 配置redis外网可访问,并只允许指定的ip可访问redis
开启redis 允许外网IP 访问 在 Linux 中安装了redis 服务,当在客户端通过远程连接的方式连接时,报could not connect错误. 错误的原因很简单,就是没有连接上redis ...
- iOS 开发之路(使用WKWebView加载Html5) 四
基于Swift 3 . Xcode 8 . iOS 10 下的WKWebView的使用. 首先是WKWebView的基本用法: var wk:WKWebView! var progBar:UIProg ...