Servlets 如何从Vaadin 7应用程序中访问“ServletContext”?

Servlets 如何从Vaadin 7应用程序中访问“ServletContext”?,servlets,vaadin,vaadin7,Servlets,Vaadin,Vaadin7,如何从我的Vaadin 7应用程序中访问电流 我想使用ServletContext对象的、、和方法来管理我的Vaadin应用程序的一些全局状态 此外,如果使用这些方法不适合Vaadin应用程序,请解释。tl;博士 对于Vaadin 7和8以及(版本10+): VaadinServlet 该类继承了一个方法 要获取VaadinServlet对象,请调用静态类方法 在您的Vaadin应用程序中的大多数地方,执行以下操作: ServletContext servletContext = VaadinS

如何从我的Vaadin 7应用程序中访问电流

我想使用
ServletContext
对象的、、和方法来管理我的Vaadin应用程序的一些全局状态

此外,如果使用这些方法不适合Vaadin应用程序,请解释。

tl;博士 对于Vaadin 7和8以及(版本10+):

VaadinServlet
该类继承了一个方法

要获取
VaadinServlet
对象,请调用静态类方法

在您的Vaadin应用程序中的大多数地方,执行以下操作:

ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
警告
在后台线程中不起作用。在您启动的线程中,此命令返回
NULL
。如文件所述:

在其他情况下(例如,从以其他方式启动的后台线程),不会自动定义当前servlet

@WebListener
ServletContextListener
) 顺便说一下,当web应用在容器中部署(启动)时,您可能希望处理这种全局状态

您可以通过实现该接口的类上的注释连接到Vaadin web应用程序的部署中。该接口的两个方法和都传递了一个,您可以通过调用从中访问对象

在执行vaadinservlet(或web应用程序中的任何其他servlet/过滤器)之前,此钩子作为正在初始化的Vaadin应用程序的一部分被调用。要在
contextInitialized
方法中引用文档:

接收web应用程序初始化进程正在启动的通知。 在初始化web应用程序中的任何筛选器或servlet之前,将通知所有ServletContextListeners上下文初始化


相关问题:瓦丁流的等效问题(版本10及更高版本):
ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
@WebListener ( "Context listener for doing something or other." )
public class MyContextListener implements ServletContextListener
{

    // Vaadin app deploying/launching.
    @Override
    public void contextInitialized ( ServletContextEvent contextEvent )
    {
        ServletContext context = contextEvent.getServletContext();
        context.setAttribute( … ) ;
        // …
    }

    // Vaadin app un-deploying/shutting down.
    @Override
    public void contextDestroyed ( ServletContextEvent contextEvent )
    {
        ServletContext context = contextEvent.getServletContext();
        // …
    }

}