Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)
最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了。
问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行加载(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)。我个人首先想到的是在tomcat中加监听,tomcat启动时先加载监听中的方法、方法中的加载顺序也就是按照我拟定的顺序进行。
然后我查了一些资料,发现了两种解决方案:
1、通过tomcat的类加载起解决;
分析:感觉没有方法2方便切不容易处理,需要改大量代码,所以只是了解了下,没有细看,可以了解博客:http://www.cnblogs.com/xing901022/p/4574961.html
2、通过监听去处理(和我想的方向是一致的,但细看了一些资料后发现了一些通用问题):
Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口,并且在此自定义监听器中需要用到Spring的依赖注入功能.在web.xml文件中监听器配置如下:
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <listener>
- <listener-class>
- com.liulei.test.listener.CacheListener
- </listener-class>
- </listener>
上面的配置细细大意为,先配置spring监听器,启动spring,再配置一个缓存监听器,我希望他们是顺序执行的,因为在缓存监听器中需要 spring注入其他对象的实例,我期望在服务器加载缓存监听器前加载Spring的监听器,将其优先实例化。但是实际运行发现他们并不是按照配置的顺序加载的。
对于此问题的解决方案我的个人观点就是重写一下spring的ContextLoaderListener ,在配置文件中只加在这一个监听类就可以,在重写的方法中加入自己的(2、初始化线程池,3、加载业务代码)业务代码,然后查了一下资料也有类似的处理方案来落实了我的想法是正确的。
举一个重写ContextLoaderListener 的例子:
- public class ContextLoaderListenerOverWrite extends ContextLoaderListener {
- private StartServer startServer;
- @Override
- /**
- * @description 重写ContextLoaderListener的contextInitialized方法
- */
- public void contextInitialized(ServletContextEvent event) {
- super.contextInitialized(event);
- startServer = StartServer.getInstances();
- startServer.start();
- /*
- 如果您的系统还需要其他业务代码可以卸载此处
- */
- }
- }
- 这样我的问题就得到了解决,再次记录一下自己解决的思路和流程~
Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)的更多相关文章
- Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(优先初始化Spring IOC容器)
JavaWebSpringTomcatCache 最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口,并且 ...
- eclipse部署maven web项目到tomcat服务器时,没有将lib、web.xml复制过去的解决办法
我这几天在写项目的时候发现自己以前的项目能够访问,隔一段时间写的这个项目却不能够访问,没有发现代码的逻辑错,但是就是访问不了jsp页面,项目一发布就是出现404错误,后来发现原来是发布到tomcat上 ...
- ideal的maven工程启动时老是报错,提示web.xml里面的监听器找不到,但是实际又是存在的
-X clean compile package -Dmaven.repo.local=D:\repository-pss -Dmaven.test.skip=true maven仓库地址
- Tomcat启动时自动加载一个类
有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...
- 如何在tomcat启动时自动加载一个类
有时候在开发web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...
- Tomcat启动时自动加载Servlet
1.想做一个服务启动时自动启动一不停止的获取订阅功能 2.之前是做一个Jsp页面请求servlet来触发方法 3.现在实现Tomcat启动时自动加载Servlet 1.Tomcat中启动Servlet ...
- tomcat启动时自动加载一个类 MyServletContextListener
目的: 我们知道在tomcat启动后,需要页面请求进行驱动来执行操作接而响应.我们希望在tomcat启动的时候能够自动运行一个后台线程,以处理我们需要的一些操作.因此需要tomcat启动时就自动加载一 ...
- docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议 根本原因是 SecureRandom 这个 jre 的工具类的问题.那为什么 ...
- tomcat启动时自动运行代码
原文链接:http://jingpin.jikexueyuan.com/article/49660.html 作者: 一直向北 发布时间:2015-07-13 11:12:13 方法1:tomcat ...
随机推荐
- 如果谷歌浏览器突然打不开网页,而且显示:"网页可能暂时无法连接,或者它已永久性地移动到了新网址,返回ERR_TUNNEL_CONNECTION_FAILED",怎么办?用这个方法,亲试有效!!!
打开cmd: 依次输入: ipconfig /flushdnsnbtstat –rnetsh int ip resetnetsh winsock reset 效果图 然后我的浏览器就能正常使用了,很有 ...
- 的aspnet_client文件夹
在早期,有一些asp.net组件是默认要调用(从客户端调用)服务器根(域名)下这个子目录里边的文件的. 不过如果你使用高版本的asp.net,那么全都从你的网站里调用了,因为asp.net有了更好地直 ...
- 高级T-SQL进阶系列 (一)【中篇】:使用 CROSS JOIN 介绍高级T-SQL
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文连接:传送门. 当一个CROSS JOIN 表现得如同一个INNER JOIN 在上一章节我提到当你使用一个CROSS JOIN ...
- Ubantu 固定IP
ubantu固定IP设置 1.以root身份登录 2. vi /etc/network/interfaces 参照截图修改,保存退出 3.刷新接口,重启服务 /etc/init.d/networkin ...
- day1-4js算术运算符及类型转化
一,JS的运行环境 在html中使用JS,浏览器去解析 NodeJS环境内封装了JS的解析器 二,JavaScript的特点 1.客户端执行 2.执行顺序自上而下 3.弱类型(数据类型)语言 var ...
- List转为字符串
2019-12-12 20:34:16 方法1: 转换后的格式为:"('111','112','1113')" List list = new ArrayList<>( ...
- win10程序无法正常启动0xc0000142
office用的好好的,今天一早打开电脑,突然就打不开了.显示如图: 我个人猜测可能还是昨天更新其他软件的时候导致的,有个软件更新后,让我重启,当时因为忙,就没有重启.今天一开机,就发现office用 ...
- spring boot 中容器 Jetty、Tomcat、Undertow
spring boot 中依赖tomcat <dependency> <groupId>org.springframework.boot</groupId> < ...
- 找出crontab表达式内符合的下一次出发时间点(经典!!!)
参考: https://blog.csdn.net/crazycoder2010/article/details/7905848
- mybaits requestMap与requestType,以及对应的注解
有的时候不喜欢用xml配置文件,但是xml配置文件的开发使用简单,自己经常要用到: 因为代码维护的缘故,有的时候看别人的代码,可能存在大量的mappper文件,也不是你想用注解就用注解的: 下面我还是 ...