Code Search for Developers
 
 
  

MyRepositorySelector.java from GridBlocks at Krugle


Show MyRepositorySelector.java syntax highlighted

/*
 * Copyright (c) 2005
 * Helsinki Institute of Physics
 * see LICENSE file for details
 *
 * MyRepositorySelector.java
 * Created on June 23, 2005 
 */

package fi.hip.gb.portlet;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.log4j.Hierarchy;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.RepositorySelector;
import org.apache.log4j.spi.RootCategory;
import org.apache.log4j.xml.DOMConfigurator;
import org.w3c.dom.Document;

/**
 * This RepositorySelector is for use with web applications.  It assumes that
 * your log4j.xml file is in the WEB-INF directory.
 *
 * @author  Stan Silvert
 */
public class MyRepositorySelector implements RepositorySelector {
    private static boolean initialized = false;
    private static Object guard = LogManager.getRootLogger();
    private static Map repositories = new HashMap();
    private static LoggerRepository defaultRepository;

    /**
     * Register your web-app with this repository selector.
     */
    public static synchronized void init(ServletConfig config)
            throws ServletException {
        // set the global RepositorySelector
        if (!initialized) {
            defaultRepository = LogManager.getLoggerRepository();
            RepositorySelector theSelector = new MyRepositorySelector();
            LogManager.setRepositorySelector(theSelector, guard);
            initialized = true;
        }

        Hierarchy hierarchy = new Hierarchy(new RootCategory(Level.DEBUG));
        loadLog4JConfig(config, hierarchy);
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        repositories.put(loader, hierarchy);
    }

    public static synchronized void removeFromRepository() {
        repositories.remove(Thread.currentThread().getContextClassLoader());
    }

    // load log4j.xml from WEB-INF
    private static void loadLog4JConfig(ServletConfig config,
            Hierarchy hierarchy) throws ServletException {
        try {
            String log4jFile = "/WEB-INF/log4j.xml";
            InputStream log4JConfig = config.getServletContext()
                    .getResourceAsStream(log4jFile);
            Document doc = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder().parse(log4JConfig);
            DOMConfigurator conf = new DOMConfigurator();
            conf.doConfigure(doc.getDocumentElement(), hierarchy);
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

    private MyRepositorySelector() {
    }

    public LoggerRepository getLoggerRepository() {
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        LoggerRepository repository = (LoggerRepository) repositories
                .get(loader);

        if (repository == null) {
            return defaultRepository;
        } else {
            return repository;
        }
    }
}



See more files for this project here

GridBlocks

GridBlocks builds a grid application framework via easy-to-use building blocks in distributed environment. The framework offers components for Grid security, distributed storage, computing, and Portlet web interfaces.

Project homepage: http://sourceforge.net/projects/gridblocks
Programming language(s): Java,JSP,XML
License: other

  beans/
    JobSubmissionJobBean.java
    JobSubmissionSessionBean.java
    JobSubmissionViewBean.java
    ResultsBrowserResultBean.java
    ResultsBrowserViewBean.java
  disk/
    GlobalBean.java
    LocalBean.java
    UploadPortlet.java
  jobs/
    agent/
      AgentJob.java
    FlagDescription.java
    Job.java
  results/
    agent/
      AgentResult.java
      AgentResultFile.java
      AgentResultFinder.java
    Result.java
    ResultComparator.java
    ResultException.java
    ResultFile.java
    ResultFindController.java
    ResultFinder.java
  services/
    agent/
      AgentService.java
      AgentServiceFinder.java
    Service.java
    ServiceComparator.java
    ServiceException.java
    ServiceFindController.java
    ServiceFinder.java
  CredentialPortlet.java
  JobSubmissionPortlet.java
  LogRepositoryServlet.java
  MyRepositorySelector.java
  ResultsBrowserPortlet.java