applicationlistener.java

来自「一个用struts tiles的在线影院web系统」· Java 代码 · 共 132 行

JAVA
132
字号
package com.eline.vod.controller;

import java.net.MalformedURLException;

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

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.DailyRollingFileAppender;
import org.apache.log4j.PatternLayout;

import com.blue.web.common.util.AppKeys;
import com.blue.web.common.util.AppLogger;
import com.blue.web.common.util.AppSettings;
import com.blue.web.common.util.AppSettingsHandler;
import com.eline.vod.security.configuration.ConfigurationSettingsHandler;
import com.eline.vod.utils.SiteUrls2;

public class ApplicationListener implements ServletContextListener {

	private ServletContext context	= null;

	public void contextDestroyed(ServletContextEvent event) {
		System.out.println("********************** APPLICATION STOPED. **********************");
		context = null;
	}

	public void contextInitialized(ServletContextEvent event) {
		System.out.println("********************** APPLICATION STARTED. **********************");
		// Get ServletContext object.
		context = event.getServletContext();

		try {
			initAppSettings();
			initLogger();
			initAuthSettings();
			initJaasSettings();
			initSiteUrls();
		} catch (Exception e) {
			System.out.println("ERROR: Initialize system settings." + e.getMessage());
		}
	}
	
	private void initAppSettings() throws Exception {
		// ********************** 初始化系统配置信息 **********************
		try {
			String configURL = context.getResource("/WEB-INF/config.xml").toString();
			AppSettingsHandler handler = new AppSettingsHandler();
			handler.create(configURL);
		} catch (MalformedURLException e) {
			System.err.println("ApplicationListener.contextInitialized() : unable to find \"/WEB-INF/config.xml\"." + e.getMessage());
			throw e;
		} catch (Exception e) {
			System.err.println("ApplicationListener.contextInitialized() : " + e.getMessage());
			throw new Exception("Exception : ApplicationListener.initAppSettings()");
		}
	}
	
	private void initAuthSettings() throws Exception {
		try {
			String configURL = context.getResource("/WEB-INF/config.xml").toString();
			ConfigurationSettingsHandler handler = new ConfigurationSettingsHandler();
			handler.create(configURL);
		} catch (MalformedURLException e) {
			System.err.println("ApplicationListener.contextInitialized() : unable to find \"/WEB-INF/config.xml\"." + e.getMessage());
			throw e;
		} catch (Exception e) {
			System.err.println("ApplicationListener.contextInitialized() : " + e.getMessage());
			throw new Exception("Exception : ApplicationListener.initAuthSettings()");
		}
	}
	
	private void initJaasSettings() throws Exception {
		// ********************** 初始化JAAS系统属性 **********************
		try {
			String authSecurityLoginFile = context.getRealPath("/WEB-INF/jaas-login.conf");
			System.out.println("authSecurityLoginFile=" + authSecurityLoginFile);
			
			System.setProperty("java.security.auth.login.config", authSecurityLoginFile);

			if (System.getProperty("java.security.auth.db.config") == null) {
				String authDbConfigFile = context.getRealPath("/WEB-INF/jaas-db.conf");
				System.out.println("authDbConfigFile=" + authDbConfigFile);

				System.setProperty("java.security.auth.db.config", authDbConfigFile);
			}
			
		} catch (Exception e) {
			System.err.println("ApplicationListener.contextInitialized() : unable to set jaas login configuration file. " + e.getMessage());
			throw new Exception("Exception : ApplicationListener.initJaasSettings()");
		}
	}
	
	private void initLogger() throws Exception {
		// ********************** 设置系统日志文件信息 **********************
		try {
			// Set log level for output.
			String logLevel = AppSettings.getInstance().getProperty(AppKeys.LOG_LEVEL);
			if (logLevel != null)
				AppLogger.setLevel(logLevel);
			System.out.println("logLevel\t= " + logLevel);

			// Add the file appender to AppLogger.
			String logFilePath = AppSettings.getInstance().getProperty(AppKeys.LOG_PATH);
			System.out.println("logFilePath\t= " + logFilePath);
			DailyRollingFileAppender fileAppender = new DailyRollingFileAppender(
					new PatternLayout("=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n"),
					logFilePath + "\\" + AppSettings.getInstance().getProperty(AppKeys.APPID) + ".log", ".yyyy-MM-dd");
			AppLogger.getInstance().addAppender(fileAppender);

			// Add the console appender to AppLogger.
			AppLogger.getInstance().addAppender(new ConsoleAppender(
					new PatternLayout("[%d{MM-dd HH:mm:ss}] %-5p : %10c > %x - %m%n"),
					"System.out"));

			AppLogger.info("AppLogger started.");

		} catch (Exception e) {
			System.err.println("MainServlet.init() : init application logger failure." + e.getMessage());
			throw new Exception("Exception : ApplicationListener.initLogger()");
		}
	}
	
	private void initSiteUrls() throws Exception {
		String configURL = context.getResource("/WEB-INF/site-urls.xml").toString();
		SiteUrls2 settings = SiteUrls2.getInstance();
		settings.init(configURL);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?