@Override
  public void contextInitialized(ServletContextEvent servletContextEvent) {
    servletContext = servletContextEvent.getServletContext();

    servletContext.setAttribute(SecurePluginContextListener.class.getName(), this);

    super.contextInitialized(servletContextEvent);
  }
  @Override
  protected void fireUndeployEvent() {
    if (_servletContextListeners != null) {
      ServletContextEvent servletContextEvent = new ServletContextEvent(servletContext);

      for (ServletContextListener servletContextListener : _servletContextListeners) {

        try {
          servletContextListener.contextDestroyed(servletContextEvent);
        } catch (Throwable t) {
          String className = ClassUtil.getClassName(servletContextListener.getClass());

          _log.error(
              className
                  + " is unable to process a context "
                  + "destroyed event for "
                  + servletContext.getServletContextName(),
              t);
        }
      }
    }

    super.fireUndeployEvent();
  }