📄 appmainserver.java
字号:
/*
* Copyright(C) 2008, NTT AT Co., Ltd.
* Project: AWGView
*
* Notes:
* N/A
*
* Record of change:
* Date Version Name Content
* 2008/12/15 1.0 TriNT First create
*/
package jp.co.ntt.awgview.server;
import java.io.IOException;
import javax.jms.JMSException;
import javax.naming.NamingException;
import jp.co.ntt.awgview.server.common.AlarmLevel;
import jp.co.ntt.awgview.server.common.AlarmType;
import jp.co.ntt.awgview.server.common.LogWriter;
import jp.co.ntt.awgview.server.common.Setting;
import jp.co.ntt.awgview.server.common.Utils;
import jp.co.ntt.awgview.server.constant.Constants;
import jp.co.ntt.awgview.server.jms.JMSManager;
import jp.co.ntt.awgview.server.snmp.SnmpManager;
import jp.co.ntt.awgview.server.thread.AgentDispatcher;
import jp.co.ntt.awgview.server.thread.ShutdownHook;
/**
* Class name : AppMainServer <BR>
*
* Package : jp.co.ntt_at.awgview.server <BR>
*
* Description: This class is provides function to load all configuration,
* create all object necessary and start AWGView server application <BR>
*
* @author : AI&T
* @version : 1.0
*/
public class AppMainServer {
/** This Object provides functions to trapping SNMP command of all Requestor*/
public static AgentDispatcher agentDispatcher = null;
/**This Object provides functions to send SNMP Command and receive SNMP data.*/
public static SnmpManager snmpTrapManager = null;
/** Version information*/
private static final String VERSION = "-version";
/** Help content*/
private static final String HELP = "-help";
/** Keep path of JBOSS Server*/
public static String JBOSS_HOME = null;
/** ShutdownHook object provides a way of trapping a shutdown of the virtual machine*/
private static ShutdownHook shutdownHook = null;
/** JMSManager object control all JMS Queue of application*/
private static JMSManager jmsManager = null;
/**
* Application main of AWG-View
*
* @param args
*/
public static void main(String[] args) {
try {
Setting.getJBossHome();
if (JBOSS_HOME == null){
System.out.println("FATAL: Make sure that JBOSS_HOME variable is still defined in the environment");
System.out.println("FATAL: Cannot start application");
System.exit(0);
}
if ((args != null) && (args.length > 0)){
if (args[0] != null) {
if (VERSION.equalsIgnoreCase(args[0].trim())) {
printVersion();
System.exit(Constants.SYSTEM_EXIT);
} else if (HELP.equalsIgnoreCase(args[0].trim())) {
printHelp();
System.exit(Constants.SYSTEM_EXIT);
}
}
}
LogWriter.getSNMPLogger().info("AWGView initialize ...");
if (!Utils.checkConfigFiles()){
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
System.exit(Constants.SYSTEM_EXIT);
}
LogWriter.getSNMPLogger().info("Checking license ...");
if (Utils.checkLicense()){
LogWriter.getSNMPLogger().info("License is valid");
}else{
LogWriter.getSNMPLogger().fatal("License is invalid");
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
System.exit(Constants.SYSTEM_EXIT);
}
LogWriter.getSNMPLogger().info("Loading application configuration ...");
if (!Setting.readConfig()){
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
System.exit(Constants.SYSTEM_EXIT);
}
if (!AlarmLevel.loadAlarmLevel()){
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
System.exit(Constants.SYSTEM_EXIT);
}
if (!AlarmType.loadAlarmType()){
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
System.exit(Constants.SYSTEM_EXIT);
}
snmpTrapManager = new SnmpManager(true);
snmpTrapManager.startTrapListener();
LogWriter.getSNMPLogger().info("Starting Trap Listener ...");
LogWriter.getSNMPLogger().info("Starting lister SNMP command to Client ...");
//Create AgentDispatcher to control command
agentDispatcher = new AgentDispatcher();
// Create JMSManager to control JMS/QUEUE
jmsManager = new JMSManager();
jmsManager.startJMSManager();
// Set shutdown hook
setShutdownHook();
LogWriter.getSNMPLogger().info("AWGView Server started in " + Utils.getNow(Constants.DATE_FORMAT));
} catch (NamingException e) {
LogWriter.getSNMPLogger().fatal(e.toString());
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
shutDown();
LogWriter.getSNMPLogger().info("AWGView Server stopped");
System.exit(Constants.SYSTEM_EXIT);
} catch (JMSException e) {
LogWriter.getSNMPLogger().fatal(e.toString());
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
shutDown();
LogWriter.getSNMPLogger().info("AWGView Server stopped");
System.exit(Constants.SYSTEM_EXIT);
} catch (IOException e) {
LogWriter.getSNMPLogger().fatal(e.toString());
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
shutDown();
System.exit(Constants.SYSTEM_EXIT);
} catch (Exception e) {
LogWriter.getSNMPLogger().fatal(e.toString());
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
LogWriter.getSNMPLogger().fatal("Cannot start AWGView Server");
shutDown();
LogWriter.getSNMPLogger().info("AWGView Server stopped");
System.exit(Constants.SYSTEM_EXIT);
}
}
/**
* This is the function to print version of AWG-View project
*/
protected static void printVersion() {
System.out.println(Constants.VERSION);
}
/**
* This is the function to print help of AWG-View project
*/
protected static void printHelp() {
System.out.println(Constants.HELP);
}
/**
* Demonstrate adding a Shutdown Hook to the Runtime.
*/
protected static void setShutdownHook(){
try{
Thread curThread = Thread.currentThread();
curThread.setName("main");
shutdownHook = new ShutdownHook();
shutdownHook.setSnmpThread(curThread);
Runtime.getRuntime().addShutdownHook(shutdownHook);
LogWriter.getSNMPLogger().info("[AWGView_SNMP] Shutdown hook added");
}catch (Exception e){
LogWriter.getSNMPLogger().warn("[AWGView_SNMP] Could not add Shutdown hook");
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
}
}
/**
* Shutdown application to clean-up when the user shuts down application.
*/
public static void shutDown() {
try{
if (snmpTrapManager != null){
snmpTrapManager.destroy();
}
snmpTrapManager = null;
if (jmsManager != null){
jmsManager.stopJMSManager();
}
jmsManager = null;
if (agentDispatcher != null){
agentDispatcher.destroy();
}
agentDispatcher = null;
System.gc();
}catch (JMSException e){
if (Thread.currentThread().isAlive()){
Thread.currentThread().interrupt();
}
LogWriter.getSNMPLogger().error("Error when closing application" + e.toString());
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
e.printStackTrace();
System.gc();
}catch (Throwable e){
if (Thread.currentThread().isAlive()){
Thread.currentThread().interrupt();
}
LogWriter.getSNMPLogger().error("Error when closing application" + e.toString());
if(LogWriter.getSNMPLogger().isTraceEnabled()){
LogWriter.getSNMPLogger().trace(Utils.parseException(e));
}
e.printStackTrace();
System.gc();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -