TL; DR
VaadinServlet.getCurrent().getServletContext()
VaadinServlet
はVaadinServlet
クラスはgetServletContext
メソッドを継承します。
VaadinServlet
オブジェクトを取得するには、静的クラスメソッドgetCurrent
を呼び出します。
は、あなたのVaadinアプリ内のどこでもほとんどからは、このような何かを:
は、バックグラウンドスレッドでは動作しません
ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
CAVEAT。起動したスレッドでは、このコマンドはNULL
を返します。
その他の場合(バックグラウンドスレッドが別の方法で開始されたなど)、現在のサーブレットは自動的には定義されません。
@WebListener
(ServletContextListener
)ところで
は、あなたは、このようなグローバルな状態を処理する可能性があるとき、コンテナ内のWebアプリケーションが展開する(起動)。
インターフェイスを実装しているクラスに@WebListener
注釈を付けてVaadinウェブアプリケーションのデプロイメントを行うことができます。そのインターフェイスの両方のメソッドcontextInitialized
とcontextDestroyed
はServletContextEvent
に渡され、ServletContext
オブジェクトにアクセスするには、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();
// …
}
}
このフックはVaadinサーブレット(またはあなたのWebアプリで、他のサーブレット/フィルタ)を実行する前に、あなたのVaadinアプリが初期化されているの一部として呼び出されます。 contextInitialized
メソッドのドキュメントを引用するには:
Webアプリケーションの初期化プロセスが開始されているという通知を受け取ります。 Webアプリケーション内のフィルタまたはサーブレットが初期化される前に、すべてのServletContextListenerにコンテキストの初期化が通知されます。
関連する質問:[私のVaadin Webアプリケーションの起動と停止のフック?](http://stackoverflow.com/q/36588743/642706) –