
 
package com.trafree.banking.server.hardcore.init;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.TimeZone;
import org.apache.log4j.PropertyConfigurator;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.IDataSourceProvider;
import com.jfinal.plugin.druid.DruidPlugin;
import com.trafree.banking.server.hardcore.model.Agent;
import com.trafree.banking.server.hardcore.model.BankingAgentInfo;
import com.trafree.banking.server.hardcore.model.BankingAgentSourceInfo;
import com.trafree.banking.server.hardcore.model.BankingApplication;
import com.trafree.banking.server.hardcore.model.BankingBackToArticle;
import com.trafree.banking.server.hardcore.model.BankingBackToArticleTrack;
import com.trafree.banking.server.hardcore.model.BankingBankBusi;
import com.trafree.banking.server.hardcore.model.BankingBankBusiPufainfo;
import com.trafree.banking.server.hardcore.model.BankingBankBusiZhongbang;
import com.trafree.banking.server.hardcore.model.BankingBusiness;
import com.trafree.banking.server.hardcore.model.BankingCtripBase;
import com.trafree.banking.server.hardcore.model.BankingDaokoudaiTask;
import com.trafree.banking.server.hardcore.model.BankingExportAccount;
import com.trafree.banking.server.hardcore.model.BankingExportLog;
import com.trafree.banking.server.hardcore.model.BankingIndex;
import com.trafree.banking.server.hardcore.model.BankingOtaAgentRatio;
import com.trafree.banking.server.hardcore.model.BankingOtaOrder;
import com.trafree.banking.server.hardcore.model.BankingPufaWht;
import com.trafree.banking.server.hardcore.model.BankingRateTrack;
import com.trafree.banking.server.hardcore.model.BankingRefundAgentExt;
import com.trafree.banking.server.hardcore.model.BankingRepay;
import com.trafree.banking.server.hardcore.model.BankingTickorderinfo;
import com.trafree.banking.server.hardcore.model.DigBankingFlow;
import com.trafree.banking.server.hardcore.model.Orderinfo;
import com.trafree.banking.server.hardcore.model.Pnrinfo;
import com.trafree.banking.server.hardcore.model.Segmentinfo;
import com.trafree.banking.server.hardcore.model.Tickorderinfo;
import com.trafree.banking.server.hardcore.model.Travelerinfo;
import com.trafree.banking.server.hardcore.param.GlobalStaticVar;
import com.trafree.banking.server.hardcore.util.BankingServerUtil;
import com.trafree.banking.server.hardcore.util.Loggers;
import com.trafree.cfg.env.config.TrafreeConfigManager;
import com.trafree.cfg.env.data.TrafreeAppTypeEnum;
public class InitProxy {
	/**
	 * 初始化总调度
	 */
	public boolean initAll(){
		TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));//设置时区
		InitProxy initProxy = new InitProxy();
		if(initProxy.initLog()){
			Loggers.businessLog.info("初始化日志完成!");
		}else{
			System.out.println("初始化日志失败!");
			return false;
		}
		/**********************************************************************************/
		if(initProxy.initAppPro()){
			Loggers.businessLog.info("初始化配置文件完成!");
		}else{
			Loggers.exceptionLog.info("初始化配置文件失败!");
			return false;
		}
		/**********************************************************************************/
		if(initProxy.initDao()){
			Loggers.businessLog.info("初始化数据库完成!");
		}else{
			Loggers.exceptionLog.info("初始化数据库失败!");
			return false;
		}
		/**********************************************************************************/
		if(initProxy.initDubbo()){
			Loggers.businessLog.info("初始化dubbo完成!");
		}else{
			Loggers.exceptionLog.info("初始化dubbo失败!");
			return false;
		}
		/**********************************************************************************/
		return true;
	}
	
	/**
	 * 初始化日志<p>
	 * 日志使用log4j,配置文件为程序主目录下的log4j.properties。<br>
	 * 程序日志分为运行日志和异常日志。<br>
	 *
	 * @return
	 */
	public boolean initLog() {
		Properties props = new Properties();
		InputStream in = InitProxy.class.getClassLoader()
				.getResourceAsStream("log4j.properties");
		try {
			props.load(in);
			PropertyConfigurator.configure(props);
			Loggers.businessLog.info("日志初始化成功.");
		} catch (IOException e) {
			return false;
		} finally {
			try {
				if(in != null) in.close();
			} catch (IOException e) {
				return false;
			} finally {
				in = null;
			}
		}
		return true;
	}
	/**
	 * 初始化系统APP配置
	 * @return
	 */
	public boolean initAppPro(){
		Properties props = new Properties();
		InputStream in = InitProxy.class.getClassLoader()
				.getResourceAsStream("app.properties");
		try {
			props.load(in);
			GlobalStaticVar.mode = props.getProperty("mode");//服务启动模式
			Loggers.businessLog.info("启用配置:mode = " + GlobalStaticVar.mode);
			
			GlobalStaticVar.apiBankZb = props.getProperty("apiBankZb");//API请求地址
			Loggers.businessLog.info("启用配置:apiBankZb = " + GlobalStaticVar.apiBankZb);
			
			GlobalStaticVar.dbip_bankingota = props.getProperty("dbip_bankingota");//数据IP
			Loggers.businessLog.info("启用配置:DB.dbip_bankingota = " + GlobalStaticVar.dbip_bankingota);
			GlobalStaticVar.dbpath_bankingota = props.getProperty("dbpath_bankingota");//数据库地址
			Loggers.businessLog.info("启用配置:DB.dbpath_bankingota = " + GlobalStaticVar.dbpath_bankingota);
			GlobalStaticVar.dbname_bankingota = props.getProperty("dbname_bankingota");//数据库用户
			Loggers.businessLog.info("启用配置:DB.dbname_bankingota = " + GlobalStaticVar.dbname_bankingota);
			GlobalStaticVar.dbpass_bankingota = props.getProperty("dbpass_bankingota");//数据库用户密码
			Loggers.businessLog.info("启用配置:DB.dbpass_bankingota = " + GlobalStaticVar.dbpass_bankingota);
			
			GlobalStaticVar.dbip_fly4free = props.getProperty("dbip_fly4free");//数据IP
			Loggers.businessLog.info("启用配置:DB.dbip_fly4free = " + GlobalStaticVar.dbip_fly4free);
			GlobalStaticVar.dbpath_fly4free = props.getProperty("dbpath_fly4free");//数据库地址
			Loggers.businessLog.info("启用配置:DB.dbpath_fly4free = " + GlobalStaticVar.dbpath_fly4free);
			GlobalStaticVar.dbname_fly4free = props.getProperty("dbname_fly4free");//数据库用户
			Loggers.businessLog.info("启用配置:DB.dbname_fly4free = " + GlobalStaticVar.dbname_fly4free);
			GlobalStaticVar.dbpass_fly4free = props.getProperty("dbpass_fly4free");//数据库用户密码
			Loggers.businessLog.info("启用配置:DB.dbpass_fly4free = " + GlobalStaticVar.dbpass_fly4free);
			
			GlobalStaticVar.APIBANKZB_UPIMG_BASEPATH = props.getProperty("APIBANKZB_UPIMG_BASEPATH");
			Loggers.businessLog.info("启用配置:APIBANKZB_UPIMG_BASEPATH = " + GlobalStaticVar.APIBANKZB_UPIMG_BASEPATH);
			GlobalStaticVar.APIBANKZB_UPIMG_ACCOUNT = props.getProperty("APIBANKZB_UPIMG_ACCOUNT");
			Loggers.businessLog.info("启用配置:APIBANKZB_UPIMG_ACCOUNT = " + GlobalStaticVar.APIBANKZB_UPIMG_ACCOUNT);
			GlobalStaticVar.APIBANKZB_UPIMG_PWD = props.getProperty("APIBANKZB_UPIMG_PWD");
			Loggers.businessLog.info("启用配置:APIBANKZB_UPIMG_PWD = " + GlobalStaticVar.APIBANKZB_UPIMG_PWD);
			GlobalStaticVar.APIBANKZB_UPIMG_SERVERIP = props.getProperty("APIBANKZB_UPIMG_SERVERIP");
			Loggers.businessLog.info("启用配置:APIBANKZB_UPIMG_SERVERIP = " + GlobalStaticVar.APIBANKZB_UPIMG_SERVERIP);
			String APIBANKZB_UPIMG_PORT = props.getProperty("APIBANKZB_UPIMG_PORT");
			GlobalStaticVar.APIBANKZB_UPIMG_PORT = BankingServerUtil.strToInteger(APIBANKZB_UPIMG_PORT);
			Loggers.businessLog.info("启用配置:APIBANKZB_UPIMG_PORT = " + GlobalStaticVar.APIBANKZB_UPIMG_PORT);
			
			GlobalStaticVar.APIBANKZB_H5_KEY_3DES = props.getProperty("APIBANKZB_H5_KEY_3DES");
			Loggers.businessLog.info("启用配置:APIBANKZB_H5_KEY_3DES = " + GlobalStaticVar.APIBANKZB_H5_KEY_3DES);
			GlobalStaticVar.APIBANKZB_H5_BASEURL = props.getProperty("APIBANKZB_H5_BASEURL");
			Loggers.businessLog.info("启用配置:APIBANKZB_H5_BASEURL = " + GlobalStaticVar.APIBANKZB_H5_BASEURL);
			
			//初始化浦发相关配置参数
			GlobalStaticVar.PUFA_URL = props.getProperty("PUFA_URL");
			Loggers.businessLog.info("启用配置:PUFA_URL = " + GlobalStaticVar.PUFA_URL);
			GlobalStaticVar.PUFA_ACCMNG_URL = props.getProperty("PUFA_ACCMNG_URL");
			Loggers.businessLog.info("启用配置:PUFA_ACCMNG_URL = " + GlobalStaticVar.PUFA_ACCMNG_URL);
			GlobalStaticVar.PUFA_3DESKEY = props.getProperty("PUFA_3DESKEY");
			Loggers.businessLog.info("启用配置:PUFA_3DESKEY = " + GlobalStaticVar.PUFA_3DESKEY);
			GlobalStaticVar.PUFA_MD5KEY = props.getProperty("PUFA_MD5KEY");
			Loggers.businessLog.info("启用配置:PUFA_MD5KEY = " + GlobalStaticVar.PUFA_MD5KEY);
			GlobalStaticVar.PUFA_DOWNLOAD_PATH = props.getProperty("PUFA_DOWNLOAD_PATH");
			Loggers.businessLog.info("启用配置:PUFA_DOWNLOAD_PATH = " + GlobalStaticVar.PUFA_DOWNLOAD_PATH);
		} catch (Exception e) {
			Loggers.exceptionLog.error("初始化系统APP配置,失败:" + e.getMessage(),e);
			return false;
		}finally {
			try {
				if(in != null) in.close();
			} catch (IOException e) {
				return false;
			} finally {
				in = null;
			}
		}
		return true;
	}
	
	/**
	 * 初始化数据库连接池
	 * @return
	 */
	public boolean initDao(){
		try {
			initBankingotaDb();
			initFly4freeDb();
			return true;
		} catch (Exception e) {
			Loggers.exceptionLog.error("初始化数据库错误:" + e.getMessage(),e);
			return false;
		}
	}
	/**
	 * 初始化政策数据库表
	 */
	public boolean initBankingotaDb(){
		DruidPlugin druidPlugin = initDBPlugin(GlobalStaticVar.dbip_bankingota, GlobalStaticVar.dbpath_bankingota, GlobalStaticVar.dbname_bankingota, GlobalStaticVar.dbpass_bankingota);
		druidPlugin.start();
		ActiveRecordPlugin arp = new ActiveRecordPlugin(GlobalStaticVar.bankingota_control,druidPlugin);
		arp.addMapping("banking_agent_info", "id", BankingAgentInfo.class);
		arp.addMapping("banking_agent_source_info", "id", BankingAgentSourceInfo.class);
		arp.addMapping("banking_ctrip_base", "id", BankingCtripBase.class);
		arp.addMapping("banking_daokoudai_task", "id", BankingDaokoudaiTask.class);
		arp.addMapping("banking_export_account", "id", BankingExportAccount.class);
		arp.addMapping("banking_export_log", "id", BankingExportLog.class);
		arp.addMapping("banking_ota_agent_ratio", "id", BankingOtaAgentRatio.class);
		arp.addMapping("banking_refund_agent_ext", "id", BankingRefundAgentExt.class);
		arp.addMapping("banking_repay", "id", BankingRepay.class);
		arp.addMapping("banking_tickorderinfo", "id", BankingTickorderinfo.class);
		arp.addMapping("banking_application", "id", BankingApplication.class);
		arp.addMapping("banking_bank_busi", "id", BankingBankBusi.class);
		arp.addMapping("banking_bank_busi_pufainfo", "id", BankingBankBusiPufainfo.class);
		arp.addMapping("banking_bank_busi_zhongbang", "id", BankingBankBusiZhongbang.class);
		arp.addMapping("dig_banking_flow", "id", DigBankingFlow.class);
		arp.addMapping("banking_back_to_article", "id", BankingBackToArticle.class);
		arp.addMapping("banking_back_to_article_track", "id", BankingBackToArticleTrack.class);
		arp.addMapping("banking_pufa_wht", "id", BankingPufaWht.class);
		arp.addMapping("banking_rate_track", "id", BankingRateTrack.class);
		arp.addMapping("banking_ota_order", "id", BankingOtaOrder.class);
		arp.addMapping("banking_index", "id", BankingIndex.class);
		arp.start();
		return true;
	}
	/**
	 * 初始化政策数据库表
	 */
	public boolean initFly4freeDb(){
		DruidPlugin druidPlugin = initDBPlugin(GlobalStaticVar.dbip_fly4free, GlobalStaticVar.dbpath_fly4free, GlobalStaticVar.dbname_fly4free, GlobalStaticVar.dbpass_fly4free);
		druidPlugin.start();
		ActiveRecordPlugin arp = new ActiveRecordPlugin(GlobalStaticVar.fly4free_control,druidPlugin);
		arp.addMapping("orderinfo", "orderId", Orderinfo.class);
		arp.addMapping("tickorderinfo", "tickOrderId", Tickorderinfo.class);
		arp.addMapping("pnrinfo", "id", Pnrinfo.class);
		arp.addMapping("segmentinfo", "id", Segmentinfo.class);
		arp.addMapping("travelerinfo", "id", Travelerinfo.class);
		arp.addMapping("agent", "account", Agent.class);
		arp.addMapping("banking_business", "id", BankingBusiness.class);
		arp.start();
		return true;
	}
	
	/**
	 * 初始化dubbo服务客户端方法
	 */
	public boolean initDubbo() {
		try {
			TrafreeConfigManager.me.init(TrafreeAppTypeEnum.B2BAPI);
//			TrafreeOrderClientManager.init();
//			TrafreeRemarkClientManager.init();
			return true;
		} catch (Exception e) {
			Loggers.exceptionLog.error("初始化DUBBO服务客户端错误:" + e.getMessage(), e);
			return false;
		}
	}
	
	public static synchronized DruidPlugin initDBPlugin(String dbip,
			String dbpath, String dbname, String dbpass) {
	    DruidPlugin druidPlugin = new DruidPlugin("jdbc:mysql://" +
	            dbip+
                "/" +
                dbpath +
                "?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull",
                dbname,
                dbpass);//for release
	    return druidPlugin;
	}
	
	public static synchronized ActiveRecordPlugin initActiveRecordPlugin(
			IDataSourceProvider dataSourceProvider, boolean showSql) {
	    ActiveRecordPlugin arp = new ActiveRecordPlugin(dataSourceProvider);
        arp.setShowSql(showSql);
        //这里注册model
//        arp.addMapping("tickordercredit", XE_Tickordercredit.class);
        return arp;
	}
	
}
原文:https://www.cnblogs.com/kokimiki/p/13365314.html