在java web项目中实现随项目启动的额外操作
前言
在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等。对于这种要求,目前个人了解到的方式只要有三种。
- 通过新加一个Servlet。然后在web.xml注册该Servlet,通过该servlet的init()来实现处理逻辑。
<servlet><servlet-name>servlet_test</servlet-name><servlet-class>com.guozg.test.service.ServletTest</servlet-class><load-on-startup>5</load-on-startup></servlet><servlet-mapping><servlet-name>servlet_test</servlet-name><url-pattern>/servletTest</url-pattern></servlet-mapping>
class ServletTest extends HttpServlet{@Overridepublic void init() throws ServletException {//do something; } }
2. 添加web服务器的监听ServletContextListener来实现,需要实现
class ServletListenerTest implements ServletContextListener{@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//do something when system start }@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {//do something while the system crash } }
<listener><listener-class>com.guozg.test.service.ServletListenerTest</listener-class> </listener>
3. 通过Spring的监听事件,注册一个Spring初始化容器时的监听,实现ApplicationListener<ContextRefreshedEvent>接口,并实现onApplicationEvent()方法。
/*** @auther guozg*/ @Service public class FolderUpdataLister implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {//do something}
在spring的监听中,如果用到springmvc,由于父子容器的原因,会两次调用初始化容器事件,使用时要注意考虑。但是优点是此时可以使用spring的注入调用其他service。前面两种与web服务器有关的,在实际运用中可能会使用不成功,就是在web.xml中找不到目标类,也即是web.xml的包中没有引入目标类的包。当出现这种情况就可以选用第三种了。还有一种方式是在web服务器中再加一个Filter。好了,目前知道的就是这些,具体使用看情况而定。另外为了不占用web 服务器启动的资源和时间,可以考虑新起线程来做操作。
转载于:https://www.cnblogs.com/guozhigang/p/9855009.html
在java web项目中实现随项目启动的额外操作相关推荐
- java sessionstate_在Java Web开发中自定义Session
Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...
- Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法
本文出处:http://blog.csdn.net/chaijunkun/article/details/7646338,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...
- Java Web 后台中餐饮业报表系统开发实例
本期葡萄城公开课,我们诚邀石家庄品智技术有限公司,高级软件工程师--刘永政先生,为大家在线分享餐饮业报表系统设计模式,以及在 HTML5 报表浏览器.Java 架构中跨平台使用ActiveReport ...
- java web开发中Filter使用Annotation配置 (转载)
为什么80%的码农都做不了架构师?>>> 为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...
- Java Web开发中路径问题小结
Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...
- Java web程序中备份oracle数据库
Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...
- JAVA Web Servlet中的异步处理 (2) -- Servlet3.1中的Non-blocking IO支持
JAVA Web Servlet中的异步处理 (2) – Servlet3.1中的Non-blocking IO支持 在servlet 3.1中,新增了non-blocking IO支持. 在serv ...
- JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持
JAVA Web Servlet中的异步处理 (1) – Servlet3.0中的Async支持 每个请求来到Web容器,Web容器会为其分配一个线程来专门负责该请求,直到完成处理前,该执行线程都不会 ...
- 美国计算机授课型硕士,美国高校一年制硕士项目中,哪些项目最值得推荐?
如果有人说:"我在美国读研",听众的反应大多会是:"真不错".如果有人说:"我在美国读研,一年",听众可能会质疑:"这么水,怕不是 ...
- doc自动生成html,java web应用中自动生成文章html页面的实现.doc
java web应用中自动生成文章html页面的实现 java web应用中自动生成文章html页面的实现 2009-11-09 00:24:15 标签:web开发,页面转换 [推送到技术圈] 版权声 ...
最新文章
- python快速编程入门课后简答题答案-Python编程:从入门到实践(第2版)第1章习题答案...
- HDU-1978 How many ways 动态规划
- Matlab计算速度优化(矩阵,bsxfun,repmat)
- Linux下快速迁移海量文件的操作记录
- JavaScript学习总结(三)——逻辑And运算符详解
- 浪潮服务器u盘安装系统未找到任何驱动器,u盘重装win10时找不到任何驱动器
- Linux下Bash编程之算术运算符详解(三)
- restful架构风格设计准则(五)用户认证和session管理
- arm-none-linux-gnueabi-gcc:未找到命令,arm-none-linux-gnueabi-gcc编译标准库引用
- 打印机连接电脑,USB无法识别,怎么办?
- java日历数据_JAVA 常用数据类型 之日历类
- java判断 港(澳)台大陆身份证校验
- 修改layui绿色为蓝色
- Android 强制设置应用横屏或竖屏
- 找准山西智慧城市建设的着力点
- HBASE学习使用经验
- vmware不支持linux,vmware不支持opengl
- python opencv压缩图片_OpenCV Python 缩放图片
- Open Euler学习
- 一招教你如何搜索国内各大网盘资源
热门文章
- mysql9索引实战_mysql 索引实战 | 学步园
- linux time dev null,/dev/null丟失后
- latex textbf没有用_LaTeX排版软件札记 Win10 LyX+TeXLive
- Ubuntu连接WiFi
- awx文件解析_Android so(ELF)文件解析
- hive链接mysql的shell命令_Hive shell 基本命令
- 你有一笔新订单 语音_上市即成爆款 哪吒V首日订单突破1200辆_搜狐汽车
- 非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc
- dateformat java_java常用API之DateFormat
- e影安全智能浏览器_【启耀玻璃】智能调光玻璃有什么特点? - 调光艺术玻璃|防火防弹玻璃|LOW-E节能玻璃|隔音隔热玻璃|特种安全玻璃|夹层中空玻璃-...