com.pactera.edg.am.metamanager.extractor.util.ExtractorContextLoader.java Source code

Java tutorial

Introduction

Here is the source code for com.pactera.edg.am.metamanager.extractor.util.ExtractorContextLoader.java

Source

/*
 * Copyright 2009 by pactera.edg.am Corporation. Address:HePingLi East Street No.11
 * 5-5, BeiJing,
 * 
 * All rights reserved.
 * 
 * This software is the confidential and proprietary information of pactera.edg.am
 * Corporation ("Confidential Information"). You shall not disclose such
 * Confidential Information and shall use it only in accordance with the terms
 * of the license agreement you entered into with pactera.edg.am.
 */
package com.pactera.edg.am.metamanager.extractor.util;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.pactera.edg.am.metamanager.app.metamodel.bs.IClassifierQueryBS;
import com.pactera.edg.am.metamanager.extractor.dao.IExtractorLogDao;
import com.pactera.edg.am.metamanager.extractor.ex.SpringContextLoadException;
import com.pactera.edg.am.metamanager.extractor.log.ExtractorLogObservable;
import com.pactera.edg.am.metamanager.extractor.log.ExtractorLogObserver;
import com.pactera.edg.am.metamanager.extractor.rmi.ExtractorRmiProxyFactoryBean;

/**
 * ?spring???,?
 * 
 * @author hqchen
 * @version 1.0 Date: Jul 24, 2009
 */
public class ExtractorContextLoader {

    private static Log log = LogFactory.getLog(ExtractorContextLoader.class);

    /**
     * ?spring?context
     */
    private static AbstractApplicationContext aContext;

    private ExtractorContextLoader() {

    }

    /**
     * ??SPRING,,???
     * 
     * @return
     * @throws SpringContextLoadException
     */
    public static boolean initContext() throws SpringContextLoadException {
        try {
            if (aContext == null) {
                aContext = new ClassPathXmlApplicationContext(
                        new String[] { Constants.EXTRACTOR_CONF_PATH, Constants.EXTRACTOR_RMI_CONF_PATH });

                // JVM??,JVM,?
                aContext.registerShutdownHook();
                // ?
                registerExtractorLogObservable();
            }
            return true;
        } catch (BeanDefinitionStoreException bse) {
            // 
            log.error(new StringBuilder("?spring,?")
                    .append(Constants.EXTRACTOR_CONF_PATH).append(",").append(Constants.EXTRACTOR_RMI_CONF_PATH)
                    .append(",").append(bse.getMessage()).toString());
            if (log.isDebugEnabled()) {
                log.error(new StringBuilder("?spring,?")
                        .append(Constants.EXTRACTOR_CONF_PATH).append(",").append(Constants.EXTRACTOR_RMI_CONF_PATH)
                        .toString(), bse);
            }
            throw new SpringContextLoadException(
                    new StringBuilder("?spring,?")
                            .append(Constants.EXTRACTOR_CONF_PATH).append(",")
                            .append(Constants.EXTRACTOR_RMI_CONF_PATH).toString(),
                    bse);
        } catch (BeanCreationException ce) {
            // BEAN,?RMI??
            log.error(new StringBuilder("?spring,?BEAN,")
                    .append(Constants.EXTRACTOR_CONF_PATH).append(",").append(Constants.EXTRACTOR_RMI_CONF_PATH)
                    .append(",").append(ce.getMessage()).toString());
            if (log.isDebugEnabled()) {
                log.error(new StringBuilder("?spring,?BEAN")
                        .append(Constants.EXTRACTOR_CONF_PATH).append(",").append(Constants.EXTRACTOR_RMI_CONF_PATH)
                        .toString(), ce);
            }
            throw new SpringContextLoadException(
                    new StringBuilder("?spring,?BEAN,")
                            .append(Constants.EXTRACTOR_CONF_PATH).append(",")
                            .append(Constants.EXTRACTOR_RMI_CONF_PATH).toString(),
                    ce);
        }
    }

    /**
     * 
     */
    private static void registerExtractorLogObservable() {
        // ,
        try {
            ExtractorLogObservable eObservable = new ExtractorLogObservable();
            new ExtractorLogObserver(eObservable).setExtractorLogDao(
                    (IExtractorLogDao) ExtractorContextLoader.getBean(IExtractorLogDao.SPRING_NAME));
            AdapterExtractorContext.getInstance().setEObservable(eObservable);
            // ?
            AdapterExtractorContext.getInstance().setExtractorLoggerUseable(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * ?SPRING BEAN
     * 
     * @param beanName BEAN??
     * @return BEAN
     * @throws SpringContextLoadException
     */
    public static Object getBean(String beanName) throws SpringContextLoadException {
        if (initContext()) {
            return aContext.getBean(beanName);
        }
        return null;
    }

    /**
     * ?MM-RMI?
     * @return ExtractorRmiProxyFactoryBean
     */
    public static ExtractorRmiProxyFactoryBean getRmiProxyFactoryBean() {
        return (ExtractorRmiProxyFactoryBean) getBean("&serverProxy");
    }

    /**
     * ?????org.apache.commons.dbcp.BasicDataSource
     * @return javax.sql.DataSource
     */
    public static BasicDataSource getDataSource() {
        return (BasicDataSource) getBean("dataSource");
    }

    /**
     * ?MMRMI??
     * @return MM??
     */
    public static IClassifierQueryBS getMMRmiServer() {
        return (IClassifierQueryBS) getBean("serverProxy");
    }
}