栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

挂钩我的Vaadin Web应用程序的启动和停止?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

挂钩我的Vaadin Web应用程序的启动和停止?

ServletContextListener

Vaadin建立在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;@WebListenerpublic 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." );    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号