Bas*_*que 2 java servlets servletcontextlistener vaadin7
我怎么知道我的Vaadin 7 Web应用程序何时首次启动/启动,以便我可以进行一些初始设置?
同样,我如何知道我的Web应用程序何时结束,关闭/退出?
ServletContextListenerVaadin建立在Java Servlet技术之上。“上下文”是Servlet术语中Web应用程序的技术术语。因此,这里的答案不是特定于Vaadin的,它适用于任何Servlet-归根结底,Vaadin只是一个大型Servlet。
从Servlet规范2.3版开始,Servlet容器(例如Tomcat,Jetty等)必须保证可以监视您定义为实现ServletContextListener接口的任何Java类。该接口有两种简单的方法:
contextInitialized)contextDestroyed)。结束可能是由于Servlet容器(例如:Tomcat)正在关闭,因此所有Web应用程序(“上下文”)都将结束,或者是因为仅Vaadin应用程序的上下文正在结束(如果Servlet容器支持按上下文关闭) 。
每个Servlet容器必须履行的约定是,在执行任何Servlet或过滤器之前,必须contextInitialized调用每个ServletContextListener类(可以有多个)。因此,这是进行初始化工作的最佳时机,它可能比单个Servlet请求-响应周期受益更多。如果您需要启动[H2 Database)之类的数据库,这是个好时机。如果您将某些数据作为高速缓存加载到内存中以供Servlet重复使用,那么这是个好时机。例如,在确定记录工作或特定预期文件的位置,这也是测试应用程序资源的好时机。
同样,每个兼容的Servlet容器contextDestroyed仅在 Servlet和过滤器完成上一次调用后才调用。因此,这是关闭数据库,进行备份或执行适合于Web应用程序的其他清理工作的好地方。
我们正在讨论您的Web应用“上下文”的生命周期。该上下文可能涉及一个或多个servlet。上下文的生命周期超出了参与该上下文的任何servlet的生命周期。上下文有点像女王蜂,她在一个新的蜂巢中生出了所有的无人机,在那里她生活在它们之前,当它们在尽职尽责的情况下死去时,她将使它们全部活下去(如果这就是蜂巢的样子)作品?)。
ServletContextListener制作一个ServletContextListener非常容易:使用一对方法和一个注释来制作一个类。
在您的Vaadin应用程序中添加一个新的Java类。您可以根据需要为课程命名。
我将上下文侦听器添加到与我的主要Vaadin应用程序UI类相同的包中(MyUI.java可能是由您的Vaadin插件或Maven原型生成的)。上下文侦听器似乎是很自然的地方,是我的Vaadin应用程序启动之前开始处理任何用户之前的开始,而指定的UI类将成为我的Vaadin应用程序为每个用户运行的第一部分。
将您的课程声明为实现ServleContextListener。添加上面讨论的两种必需方法;您的IDE可能会帮助您完成这项工作。
还有一个技巧:必须将此上下文侦听器告知Servlet容器。有多种方法可以做到这一点,但是我@WebListener在类上使用了最简单的注释。
这是整个示例类。
package com.example.amazingapp;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
*
* @author Basil Bourque
*/
@WebListener
public class WebAppListener implements ServletContextListener {
@Override
public void contextInitialized ( ServletContextEvent sce ) {
System.out.println ( "My Vaadin web app is starting. " );
}
@Override
public void contextDestroyed ( ServletContextEvent sce ) {
System.out.println ( "My Vaadin web app is shutting down." );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |