package server;
import java.io.File;
import java.io.IOException;
import javax.annotation.Resource;
import model.HibernateSessionFactory;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.hibernate.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import tools.AutoResponseClient;
/**
* 服务器启动器
*
* @author Feng
*
*/
public class Server {
public static boolean keepAliveSwitch = true;
// public static boolean keepAliveSwitch = false;
static Logger logger = Logger.getLogger(Server.class);
public static Server instance;
private ServerNetwork serverNetwork;
private ServerModel serverModel;
private ServerModel_Chatting serverModel_Chatting;
public Server() throws IOException {
// // 启动网络层
// // ServerNetwork.instance.init();
//
// // 启动逻辑层
// // ServerModel.instance.init();
// init();
}
/**
* 初始化
* @author Feng
*/
// public void init(){
// try {
// serverNetwork.init();
//
// // 开启自动回复器
// new AutoResponseClient();
// } catch (IOException e) {
// e.printStackTrace();
// }
// serverModel.init();
// serverModel_Chatting.init();
// }
public static Server getServer() {
return instance;
}
public static void setServer(Server server) {
Server.instance = server;
}
public ServerNetwork getServerNetwork() {
return serverNetwork;
}
public void setServerNetwork(ServerNetwork serverNetwork) {
this.serverNetwork = serverNetwork;
}
public ServerModel getServerModel() {
return serverModel;
}
public void setServerModel(ServerModel serverModel) {
this.serverModel = serverModel;
}
public ServerModel_Chatting getServerModel_Chatting() {
return serverModel_Chatting;
}
public void setServerModel_Chatting(ServerModel_Chatting serverModel_Chatting) {
this.serverModel_Chatting = serverModel_Chatting;
}
public void onDestroy() {
serverNetwork.onDestroy();
}
public static void main(String[] args) throws IOException {
String path = System.getProperty("user.dir");
logger.info(path);
try{
String logConfigPath = "Log4JConfig.properties";
logger.info(logConfigPath);
PropertyConfigurator.configure(logConfigPath);
logger.info("log configure load success");
}catch(Exception e){
logger.info("log configure load fail");
e.printStackTrace();
}
try{
Session session = HibernateSessionFactory.getSession();
session.close();
logger.info("数据库配置加载成功");
}catch(Exception e){
logger.error("数据库配置加载失败");
}
// try{
// String springConfigPath = "src/applicationContext.xml";
// PropertyConfigurator.configure(springConfigPath);
// logger.info("spring configure load success");
// }catch(Exception e){
// System.out.println("spring configure load fail");
// e.printStackTrace();
// }
// File file = new File("src/applicationContext.xml");
// System.out.println(file.exists());
ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
((ServerNetwork) ctx.getBean("ServerNetwork")).init();
((ServerModel)ctx.getBean("ServerModel")).init();
((MyLogger)ctx.getBean("MyLogger")).closeLoggerNotWant();
new AutoResponseClient();
// ServerNetwork serverNetwork = (ServerNetwork)ctx.getBean("ServerNetwork");
}
}