Package de.fuberlin.wiwiss.d2rq.server

Source Code of de.fuberlin.wiwiss.d2rq.server.WebappInitListener

package de.fuberlin.wiwiss.d2rq.server;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import de.fuberlin.wiwiss.d2rq.SystemLoader;

/**
* Initialize D2R server on startup of an appserver such as Tomcat. This listener should
* be included in the web.xml. This is compatible with Servlet 2.3 spec compliant appservers.
*
* @author Inigo Surguy
* @author Richard Cyganiak (richard@cyganiak.de)
*/
public class WebappInitListener implements ServletContextListener {
  private final static Log log = LogFactory.getLog(WebappInitListener.class);
 
  public void contextInitialized(ServletContextEvent event) {
    ServletContext context = event.getServletContext();

    // Is there already a loader in the servlet context, put there
    // by the JettyLauncher?
    SystemLoader loader = D2RServer.retrieveSystemLoader(context);
    if (loader == null) {
      log.info("Fresh ServletContext; initializing a new SystemLoader");
      // We are running as pure webapp, without JettyLauncher,
      // so initalize the loader from the configFile context parameter.
      loader = new SystemLoader();
      D2RServer.storeSystemLoader(loader, context);
      if (context.getInitParameter("configFile") == null) {
        throw new RuntimeException("No configFile configured in web.xml");
      }
      String configFileName = absolutize(context.getInitParameter("configFile"), context);
      loader.setMappingURL(configFileName);
      loader.setResourceStem("resource/");
    }
    D2RServer server = loader.getD2RServer();
    server.start();
    VelocityWrapper.initEngine(server, context);
  }

  public void contextDestroyed(ServletContextEvent event) {
    D2RServer server = D2RServer.fromServletContext(event.getServletContext());
    if (server != null)
      server.shutdown();
  }
 
  private String absolutize(String fileName, ServletContext context) {
    if (!fileName.matches("[a-zA-Z0-9]+:.*")) {
      fileName = context.getRealPath("WEB-INF/" + fileName);
    }
    return ConfigLoader.toAbsoluteURI(fileName);
  }
}
TOP

Related Classes of de.fuberlin.wiwiss.d2rq.server.WebappInitListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.