Tomcat自动启动后台任务
来源:互联网 发布:将sql表连接起来 编辑:程序博客网 时间:2024/06/12 23:28
2.13 Listener介绍
Listener的作用非常类似于load-on-startup Servlet。用于在Web应用启动时,启动某些后台程序,这些后台程序负责为系统运行提供支持。
Listener与load-on-startup Servlet的区别在于:Listener的启动时机比load-on-startup Servlet早,只是Listener是Servlet 2.3规范之后才出现的。
Listener实际上就是用于取代那些无须响应用户请求的Servlet,所以Listener类中无须提供响应用户请求的方法,Listener的作用是为整个Web应用提供后台服务。
使用Listener只需要两个步骤:
建Listener实现类。
在web.xml文件中配置Listerner。
2.13.1 创建Listener类
创建Listener类必须实现ServletContextListener接口,该接口包含两个方法。
contextInitialized(ServletContextEvent sce):启动Web应用时,系统调用Listener的该方法。
contextDestroyed(ServletContextEvent sce):关闭Web应用时,系统调用Listener的该方法。
下面将创建一个获取数据库连接的Listener,该Listener会在应用启动时获取数据库连接,并将获取到的连接设置成application范围内的属性。下面是该Listener的代码。
程序清单:codes\02\2.13\ listenerTest\WEB-INF\src\lee\GetConnListener.java
public class GetConnListener implements ServletContextListener{//应用启动时,该方法被调用public void contextInitialized(ServletContextEvent sce){try{//取得该应用的ServletContext实例ServletContext application = sce.getServletContext();//从配置参数中获取驱动String driver = application.getInitParameter("driver");//从配置参数中获取数据库urlString url = application.getInitParameter("url");//从配置参数中获取用户名String user = application.getInitParameter("user");//从配置参数中获取密码String pass = application.getInitParameter("pass");//注册驱动Class.forName(driver);//获取数据库连接Connection conn = DriverManager.getConnection(url ,user , pass);//将数据库连接设置成application范围内的属性application.setAttribute("conn" , conn);}catch (Exception ex){System.out.println("Listener中获取数据库连接出现异常"+ ex.getMessage());}}//应用关闭时,该方法被调用public void contextDestroyed(ServletContextEvent sce){//取得该应用的ServletContext实例ServletContext application = sce.getServletContext();Connection conn = (Connection)application.getAttribute("conn");//关闭数据库连接if (conn != null){try{conn.close();}catch (SQLException ex){ex.printStackTrace();}}}}
上面程序中粗体字代码重写了Listener的contextInitialized()、contextDestroyed()方法,这两个方法分别在应用启动、关闭时被调用,这两个方法分别实现获取数据库连接、关闭数据库连接的功能,这些功能都是为整个Web应用提供服务的。
程序中斜体字代码用于获取配置参数,细心的读者可能已经发现Listener获取的是Web应用的配置参数,而不是像Servlet和Filter获取本身的配置参数。这是因为Listener的作用就是为整个应用提供后台服务,所以Listener不能配置自己的配置参数。如果Listener需要参数,总是直接访问Web应用的配置参数。
2.13.2 配置Listener
正如load-on-startup Servlet一样,Listener用于启动Web应用的后台服务程序,但不负责处理及响应用户请求,因此无须配置URL,而且Listener无须配置参数,所以Listener的配置非常简单:只要指定Listener实现类即可。
配置Listener使用listener元素,该元素接受如下子元素:
listener-class:指定Listener实现类。
若将Listener配置在Web容器中(如果Web容器支持Listener),则Listener将随Web应用的启动而启动。
下面是该Listener的配置片段:
<listener>在上面的配置中,既无须配置Listener的名字,也无须配置Listener的URL,只需配置它的实现类即可。容器将自动检测部署在容器中的Listener,并在应用启动时,自动加载所有的Listener。
一旦容器中的GetConnListener正常启动,我们的所有JSP页面都可通过application获取数据库连接,从而可以非常方便地进行数据库访问。
本例中的Listener把一个数据库连接(Connection实例)设置成application属性,这样将导致所有页面都使用相同的Connection实例,这将导致非常差的性能。较为实用的做法是:应用启动时将一个数据源(javax.sql.DataSource实例)设置成application属性,而所有JSP页面都通过DataSource实例来取得数据库连接,再进行数据库访问,这样就会好得多。关于数据库连接池的介绍请参看笔者所著《疯狂Java讲义》的13.8节。
http://book.51cto.com/art/200810/94278.htm
http://book.51cto.com/art/200810/94280.htm
- Tomcat自动启动后台任务
- tomcat后台随机器自动启动
- tomcat服务startup.bat开机自动后台启动
- tomcat后台启动
- Tomcat开机后台启动
- .net后台自动执行任务
- linux 自动启动 tomcat
- tomcat自动启动
- Tomcat开机自动启动
- 设置tomcat自动启动
- 开机自动启动tomcat
- Tomcat开机自动启动
- Tomcat开机自动启动
- tomcat 自动启动
- tomcat开机自动启动
- Tomcat 开机自动启动
- Tomcat开机自动启动
- centos tomcat 自动启动
- F#与数学(II) – 在图形算法中使用矩阵(PartII)
- Eclipse Android LogCat有时候显示不出输出的原因
- 用什么心态对待水平糟糕的程序员[不靠谱的程序员、思路紊乱的程序员
- labeled graph---some basic knowledge
- Maven:完整参考手册--1.2 约定优于配置
- Tomcat自动启动后台任务
- SDIO WiFi模块分析
- 暂未完成的扫雷逻辑
- SqlServer分页
- apache mina 学习(十四)-----与spring整合
- Android 开发之 ---- bootloader (LK)
- Spring--quartz中cronExpression配置说明
- 如何将Object类型转化为int类型
- 根据url下载一张大小为1M左右的图片,然后用个ImageView显示出来。不爆内存的哦!!!