Java tutorial
/* * 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"); } }