view software/mpdl-services-new/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/MpiwgMpdlCmsWebServletContextListener.java @ 25:e9fe3186670c default tip

letzter Stand eingecheckt
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 21 May 2013 10:19:32 +0200
parents
children
line wrap: on
line source

package de.mpg.mpiwg.berlin.mpdl.servlets.cms;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import de.mpg.mpiwg.berlin.mpdl.lt.dict.db.LexHandler;
import de.mpg.mpiwg.berlin.mpdl.lt.morph.app.MorphologyCache;
import de.mpg.mpiwg.berlin.mpdl.servlets.cms.MpiwgMpdlCmsWebServletContextListener;
import de.mpg.mpiwg.berlin.mpdl.xml.transform.FragmentTransformer;
import de.mpg.mpiwg.berlin.mpdl.xml.xquery.XQueryEvaluator;
import de.mpg.mpiwg.berlin.mpdl.cms.general.Constants;
import de.mpg.mpiwg.berlin.mpdl.cms.lucene.IndexHandler;
import de.mpg.mpiwg.berlin.mpdl.cms.scheduler.CmsChainScheduler;
import de.mpg.mpiwg.berlin.mpdl.cms.transform.PageTransformer;
import de.mpg.mpiwg.berlin.mpdl.cms.transform.TocTransformer;

public class MpiwgMpdlCmsWebServletContextListener implements ServletContextListener {
  private ServletContext context = null;
  private FragmentTransformer fragmentTransformer = null;
  private PageTransformer pageTransformer = null;
  private TocTransformer tocTransformer = null;
  private XQueryEvaluator xQueryEvaluator = null;  
  public void contextInitialized(ServletContextEvent event) {
    try {
      this.context = event.getServletContext();
      String documentsDirectory = Constants.getInstance().getDocumentsDir();
      String luceneDocumentsDirectory = Constants.getInstance().getLuceneDocumentsDir();
      String luceneNodesDirectory = Constants.getInstance().getLuceneNodesDir();
      context.setAttribute("documentDirectory", documentsDirectory);
      context.setAttribute("luceneDocumentsDirectory", luceneDocumentsDirectory);
      context.setAttribute("luceneNodesDirectory", luceneNodesDirectory);
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (documentsDirectory= \"" + documentsDirectory + "\", set in constants.properties)");
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (luceneDocumentsDirectory= \"" + luceneDocumentsDirectory + "\", set in constants.properties)");
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (luceneNodesDirectory= \"" + luceneNodesDirectory + "\", set in constants.properties)");
      fragmentTransformer = new FragmentTransformer();
      context.setAttribute("fragmentTransformer", fragmentTransformer);
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (fragmentTransformer)");
      pageTransformer = new PageTransformer();
      context.setAttribute("pageTransformer", pageTransformer);
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (pageTransformer)");
      tocTransformer = new TocTransformer();
      context.setAttribute("tocTransformer", tocTransformer);
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (tocTransformer)");
      xQueryEvaluator = new XQueryEvaluator();
      context.setAttribute("xQueryEvaluator", xQueryEvaluator);
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextInitialized (xQueryEvaluator)");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void contextDestroyed(ServletContextEvent event) {
    try {
      this.context = null;
      LexHandler.getInstance().end();
      MorphologyCache.getInstance().end(); 
      IndexHandler.getInstance().end();
      CmsChainScheduler scheduler = CmsChainScheduler.getInstance();
      scheduler.end();
      Thread.sleep(1000);  // with this, also the scheduler worker threads could be closed
      System.out.println(MpiwgMpdlCmsWebServletContextListener.class.getName() + ": contextDestroyed");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}