项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法
上一篇文章刚说项目部署到tomcat的ROOT中,今天就发现一个问题。通过eclipse启动tomcat时候,WebApplicationContext 初始化两次;
现象:
通过eclipse控制台看到日志中WebApplicationContext 初始化两次,从而导致一个端口一直被占用;(怎么修改都是占用)
第一次初始化:
九月 27, 2016 11:43:20 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
第一使用端口
2016-09-27 23:43:27 SocketIO server started at port: 8081
第二次初始化
九月 27, 2016 11:43:37 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
第二次使用端口:
2016-09-27 23:43:45 SocketIO server start failed at port: 8081!
failed 。。。。。刚开始以为其他程序占用了8081端口,使劲修改端口都不行。才注意到启动了两次;
产生的原因及后果:
两次发布的原因是,tomcat 会发布一次 /xxx ,然后再发布一次 / ,所以就有了两次发布,两次 WebApplicationContext 的初始化。
导致问题:
问题一
第二次初始化时,会导致 数据库的连接数,增加 初始化 的数量,比如数据库连接的初始化数目为:
initialPoolSize=20
那么 第二次初始化 WebApplicationContext 会导致 数据库的连接数 增加 20 个,第一次初始化 WebApplicationContext 的数据库连接不会释放!
问题二
导致端口占用。
问题三
会导致 定时器 任务 会多次触发.
….
解决方法:
可以在 tomcat 前端 加个 nginx, 让 nginx 指向 tomcat,这样就不用修改项目的 context root目录到 / 了;
可以直接在发布项目时,打个包,然后解压到 tomcat 的 ROOT目录下,这样也 不需要修改 项目的 context root
目录到 / 了;如果觉得 打包,然后解压到 tomcat的 root 目录还是麻烦,那么可以将项目的名称 改成 ROOT,然后将 项目的 context root 改成 /,可以直接发布到了 tomcat 的ROOT目录下;不需要打包,然后解压了;
不要把Deploy path设置成webapps就可以了,也就是不让tomcat去加载webapps那一次
第4中方法在开发时,应该是很好用的。
项目部署到tomcat Root中后导致 WebApplicationContext 初始化两次的解决方法的更多相关文章
- spring项目的 context root 修改之后,导致 WebApplicationContext 初始化两次的解决方法
修改了 spring web 项目的 context root 为 / 之后,在启动项目时,会导致 WebApplicationContext 初始化两次,下面是其初始化日志: 第一次初始化: 四月 ...
- 将spring boot项目部署到tomcat容器中
一. 我这里用的环境 tomcat: tomcat 8 jdk: jdk 7 spring boot 版本: 1.5 二. 将创建好的spring boot项目做如下修改 2.1. 修改打包形式 在p ...
- CentOS6.10部署的Tomcat8.5启动后,浏览器访问不到的解决方法
解决过程如下: 一.关闭 selinux 和 iptables 防火墙 二.查看 tomcat 是否在运行 ps aux |grep tomcat 三.查看端口情况 lsof -i:8080 查看后都 ...
- 把spring-boot项目部署到tomcat容器中
http://blog.csdn.net/javahighness/article/details/52515226
- libc.so.6被删后导致系统无法使用的原因及解决方法
记一次升级glibc库发生的错误 今天给glibc库升级,发生了一件让我吓出一声汗的事情,我把动态库中的libc.so.6给删了,瞬间所有的非系统命令都无法使用,使用就报错 当时就吓尿了,生产环境被我 ...
- libc.so.6修改链接指向后导致系统无法使用的原因及解决方法
https://www.cnblogs.com/weijing24/p/5890031.html http://man.linuxde.net/ldconfig
- eclipse中maven项目部署到tomcat
其实maven项目部署到tomcat的方式很多,我从一开始的打war包到tomcat/webapps目录,到使用tomcat-maven插件,到直接使用servers部署,一路来走过很多弯路. 下面就 ...
- eclipse中maven项目部署到tomcat [转]
其实maven项目部署到tomcat的方式很多,我从一开始的打war包到tomcat/webapps目录,到使用tomcat-maven插件,到直接使用servers部署,一路来走过很多弯路. 下面就 ...
- 2016.6.21 将Eclipse中项目部署到tomcat下
新建的web项目,各种都配置好,选择run on server之后,发现运行失败,并不能访问需要的网址.而脱离eclipse,将生成的war文件直接放到tomcat的webapp下时,可以正常访问.所 ...
随机推荐
- 安卓版App开发心得
从2016年4月到6月主要做的工作是网站的开发,而6月到现在2016年8月初,主要做的工作是Android和IOS两种App的开发,又以Android为主. 将这段时间的Android开发心得记录如下 ...
- Oracle数据访问组件ODAC的安装方法
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序.我们可以编程调用这些组件来实现在没有安装Oracle数据库 ...
- Azure Management API 之 利用 Windows Azure Management Libraries 来控制Azure platform
在此之前,我曾经发过一篇文章讲叙了如何利用Azure power shell team 提供的class library. 而就在这篇文章发布之后不久,我又发现微软发布了一个preview 版本的Wi ...
- UI图标资源搜索
下面这些网站可以搜索图标资源,方面界面制作: 分享下http://www.tutorialcadet.com/20-user-interface-icon-sets-for-developers/下面 ...
- MySQL使用规范
一. 表设计类 强制类规范 1. 创建表的存储引擎必须是InnoDB. 2. 每个表必须显式的指定一个主键. 3. 不允许使用联合主键. 4. 不允许使用外键. 5. 不允许存在和主键重复的索引 ...
- MHA故障切换和在线手工切换原理
一.故障切换的过程 当master_manager监控到主库mysqld服务停止后,首先对主库进行SSH登录检查(save_binary_logs -command=test),然后对mysqld服务 ...
- js手风琴
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Javascript > Eclipse > Code completion (Content Assist)
分享一下,整体理清的思路,关于Eclipse中代码的 自动完成,可配置自定义Library文件地址 其实这个思路的通用的,不管任何Eclipse支持的编辑语言,都可以适用.下面已Javascript来 ...
- python 中的decorator
python 中decorator的作用就是一个包装的作用,所谓包装指在执行真正的函数之前或者之后,我们可以有一些额外的发挥余地. decorator形式如下 def dec(arg1): print ...
- jstl-vaStatus 属性count与index
一个老生常谈的话题,今天有了新得: <% List list= new ArrayList(); list.add("饼干"); list.add("牛奶" ...