236 lines
9.9 KiB
Java
236 lines
9.9 KiB
Java
package com.eactive.eai.common.web;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
|
|
import javax.servlet.ServletContextEvent;
|
|
import javax.servlet.ServletContextListener;
|
|
|
|
import org.springframework.beans.factory.DisposableBean;
|
|
import org.springframework.beans.factory.InitializingBean;
|
|
import javax.sql.DataSource;
|
|
import com.eactive.eai.adapter.socket.config.SocketAdapterManager;
|
|
import com.eactive.eai.batch.code.CodeMessageManager;
|
|
import com.eactive.eai.batch.scheduler.SchedulerMessageManager;
|
|
import com.eactive.eai.common.exception.ExceptionUtil;
|
|
import com.eactive.eai.common.lifecycle.Lifecycle;
|
|
import com.eactive.eai.common.lifecycle.LifecycleException;
|
|
import com.eactive.eai.common.lifecycle.LifecycleManager;
|
|
import com.eactive.eai.common.property.PropManager;
|
|
import com.eactive.eai.common.dao.Keys;
|
|
import com.eactive.eai.common.util.Logger;
|
|
import com.eactive.eai.common.util.ServiceLocator;
|
|
import com.eactive.eai.common.util.ServiceLocatorException;
|
|
|
|
/**
|
|
* 1. 기능 : EAI FrameWork이 초기화(Deploy)될 때 실행되어야 할 작업을 정의
|
|
* 2. 처리 개요 : Logger초기화, LifecycleManager를 통한 Manager 초기화
|
|
* * -
|
|
* 3. 주의사항
|
|
*
|
|
* @author :
|
|
* @version : v 1.0.0
|
|
* @see : Logger.java, LifecycleManager.java
|
|
* @since :
|
|
*/
|
|
public class AppInitializer implements InitializingBean, DisposableBean {
|
|
|
|
private DataSource dataSource;
|
|
|
|
private String instName;
|
|
|
|
private String tableOwner;
|
|
|
|
private String systemMode = "D"; //EAI System Mode : [P/T/D/S]
|
|
|
|
public void setDataSource(DataSource dataSource) {
|
|
this.dataSource = dataSource;
|
|
}
|
|
|
|
public void setInstName(String instName) {
|
|
this.instName = instName;
|
|
}
|
|
|
|
public void setTableOwner(String tableOwner) {
|
|
this.tableOwner = tableOwner;
|
|
}
|
|
|
|
public void setSystemMode(String systemMode) {
|
|
this.systemMode = systemMode;
|
|
}
|
|
/**
|
|
* 1. 기능 : EAI FrameWork의 웹어플리케이션이 될 때 초기화 작업을 수행
|
|
* 2. 처리 개요 : EAI FrameWork의 웹어플리케이션이 디플로이될 때 PropManager, Logger, LifecycleManager를 기동하여
|
|
* 초기화작업을 수행한다.
|
|
* 3. 주의사항
|
|
* - appicationContext에 정의된 DataSource를 사용하도록 처리 됨
|
|
* @return void
|
|
* @exception
|
|
**/
|
|
|
|
private void init()
|
|
{
|
|
Logger logger = Logger.getLogger("root");
|
|
String serverName = System.getProperty("inst.Name");
|
|
if(serverName == null) {
|
|
System.setProperty("inst.Name", instName);
|
|
// System.setProperty("weblogic.Name", instName);
|
|
}
|
|
|
|
String tOwner = System.getProperty(Keys.TABLE_OWNER_KEY);
|
|
if(tOwner == null) {
|
|
System.setProperty(Keys.TABLE_OWNER_KEY, tableOwner);
|
|
}
|
|
|
|
String sMode = System.getProperty(com.eactive.eai.common.server.Keys.EAI_SYSTEMMODE);
|
|
if(sMode == null) {
|
|
System.setProperty(com.eactive.eai.common.server.Keys.EAI_SYSTEMMODE, systemMode);
|
|
}
|
|
|
|
// set Spring dataSource to ServiceLoactor
|
|
try {
|
|
ServiceLocator sl = ServiceLocator.getInstance();
|
|
sl.putDataSource(Keys.EAI_DATASOURCE, dataSource);
|
|
System.out.println("\n@@ " + Keys.EAI_DATASOURCE + " = " + dataSource);
|
|
} catch (ServiceLocatorException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
|
|
System.out.println("\n@@ ElinkBAP Framework =====================================================");
|
|
System.out.println("@ Batch System Config Initializing---------------------------------- ");
|
|
try {
|
|
String tableOwner = System.getProperty(com.eactive.eai.common.dao.Keys.TABLE_OWNER_KEY);
|
|
String systemMode = System.getProperty(com.eactive.eai.common.server.Keys.EAI_SYSTEMMODE);
|
|
|
|
if(tableOwner == null || tableOwner.trim().length() == 0 ||
|
|
systemMode == null || systemMode.trim().length() == 0 ) {
|
|
System.out.println("==========================================================================");
|
|
System.out.println("# E R R O R : Batch System Configuration");
|
|
System.out.println("# Check Start Script Rule table Owner : -D"+com.eactive.eai.common.dao.Keys.TABLE_OWNER_KEY+"=");
|
|
System.out.println("# Check Start Script Batch System Mode : -D"+com.eactive.eai.common.server.Keys.EAI_SYSTEMMODE+"=");
|
|
System.out.println("# Batch System Mode : [P/T/D/S]");
|
|
System.out.println("==========================================================================");
|
|
throw new Exception(" Rule Table Owner Not Configured ");
|
|
}
|
|
|
|
System.out.println("==========================================================================");
|
|
System.out.println("# S U C C E S S : Batch System Configuration");
|
|
//System.out.println("# Rule table Owner : "+tableOwner);
|
|
//System.out.println("# Batch System Mode : "+systemMode);
|
|
System.out.println("# Batch System Mode : [P(Product)/T(Test)/D(Develop)/S(Simulator)]");
|
|
System.out.println("==========================================================================");
|
|
|
|
} catch(Exception e) {
|
|
throw new RuntimeException("EAI System Configuration Error - " + e.getMessage());
|
|
}
|
|
|
|
|
|
if (logger != null) logger.debug("CodeMessageManager 메모리 로딩 시작 ------------------------------------------");
|
|
try {
|
|
CodeMessageManager.getInstance().start();
|
|
} catch(LifecycleException e) {
|
|
if (logger != null) logger.error( e.getMessage(), e);
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BFCEAICWB001"));
|
|
}
|
|
if (logger != null) logger.debug("CodeMessageManager 메모리 로딩 종료 ------------------------------------------");
|
|
|
|
if (logger != null) logger.debug("Property 메모리 로딩 시작 ------------------------------------------");
|
|
try {
|
|
PropManager.getInstance().start();
|
|
} catch(LifecycleException e) {
|
|
if (logger != null) logger.error( e.getMessage(), e);
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BFCEAICWB001"));
|
|
}
|
|
if (logger != null) logger.debug("Property 메모리 로딩 종료 ------------------------------------------");
|
|
|
|
if (logger != null) logger.debug("Logger 메모리 로딩 시작 ------------------------------------------");
|
|
try {
|
|
Logger.doConfigure();
|
|
} catch(Exception e) {
|
|
if (logger != null) logger.error( e.getMessage(), e);
|
|
}
|
|
if (logger != null) logger.debug("Logger 메모리 로딩 종료 ------------------------------------------");
|
|
|
|
try {
|
|
SchedulerMessageManager.getInstance().deleteJobFromProcessing();
|
|
} catch (Exception e) {
|
|
if (logger != null) logger.error(e.getMessage(), e);
|
|
}
|
|
|
|
// try {
|
|
// Class clazz = Class
|
|
// .forName("com.eactive.eai.rms.client.context.MonitoringContextFactory");
|
|
// Object factory = clazz.newInstance();
|
|
// Method method = clazz.getMethod("create");
|
|
// method.invoke(factory);
|
|
// System.out.println("RMSCLIENT AGENT STARTED ~~ !!!!");
|
|
// logger.warn("EMSCLIENT AGENT STARTED ~~ !!!!");
|
|
// } catch (InvocationTargetException e) {
|
|
// System.out.println("RMSCLIENT AGENT CANNOT START ~~ !!!! - "+e.getTargetException().toString());
|
|
// logger.error("RMSCLIENT AGENT CANNOT START ~~ !!!! - "+e.getTargetException().toString(),e.getTargetException());
|
|
// e.getTargetException().printStackTrace();
|
|
// } catch (Throwable e) {
|
|
// System.out.println("RMSCLIENT AGENT CANNOT START ~~ !!!! - "+e.toString());
|
|
// logger.error("RMSCLIENT AGENT CANNOT START ~~ !!!! - "+e.toString(),e);
|
|
// }
|
|
|
|
if (logger != null) logger.debug("LifeCycle 관련 클래스 메모리 로딩 시작 ------------------------------------------");
|
|
LifecycleManager manager = LifecycleManager.getInstance();
|
|
if(manager instanceof Lifecycle) {
|
|
try {
|
|
manager.start();
|
|
} catch(LifecycleException e) {
|
|
if (logger != null) logger.error( e.getMessage(), e);
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BECEAICWB002"));
|
|
}
|
|
}
|
|
|
|
if (logger != null) logger.debug("LifeCycle 관련 클래스 메모리 로딩 종료 ------------------------------------------");
|
|
if (logger != null) logger.debug("배치 프레임웍 Application 초기화 종료!");
|
|
}
|
|
|
|
/**
|
|
* 1. 기능 : EAI FrameWork의 웹어플리케이션이 Undeploy될 때 초기화된 Manager들을 중지시킴
|
|
* 2. 처리 개요 : EAI FrameWork의 웹어플리케이션이 Undeploy될 때 LifecycleManager를 통해 Manager를 중지시킨다.
|
|
*
|
|
* 3. 주의사항
|
|
*
|
|
* @param ServletContextEvent
|
|
* @return void
|
|
* @exception
|
|
**/
|
|
public void destroy()
|
|
{
|
|
Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
|
|
if (logger != null) logger.debug("@ eLink Batch Application destroying.");
|
|
|
|
|
|
LifecycleManager manager = LifecycleManager.getInstance();
|
|
if(manager instanceof Lifecycle) {
|
|
try {
|
|
manager.stop();
|
|
} catch(LifecycleException e) {
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BECEAICWB003"));
|
|
}
|
|
}
|
|
|
|
try {
|
|
PropManager.getInstance().stop();
|
|
} catch(LifecycleException e) {
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BECEAICWB004"));
|
|
}
|
|
|
|
try {
|
|
SocketAdapterManager.getInstance().stop();
|
|
} catch ( Exception e ) {
|
|
throw new RuntimeException(ExceptionUtil.getErrorCode(e,"BECEAICWB005"));
|
|
}
|
|
if (logger != null) logger.debug("\n\n");
|
|
}
|
|
@Override
|
|
public void afterPropertiesSet() throws Exception {
|
|
init();
|
|
}
|
|
|
|
}
|