miduo_server/serverlogic/src/main/java/com/ljsd/GameApplication.java

91 lines
3.4 KiB
Java
Raw Normal View History

2019-01-07 10:00:52 +08:00
package com.ljsd;
2018-12-27 17:54:23 +08:00
import com.ljsd.jieling.handler.BaseHandler;
2019-01-04 13:39:02 +08:00
import com.ljsd.jieling.logic.STableManager;
2018-12-27 17:54:23 +08:00
import com.ljsd.jieling.netty.server.NettyGameServer;
import com.ljsd.jieling.network.NettyProperties;
import com.ljsd.jieling.network.NettyServerAutoConfiguration;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import java.util.Map;
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableScheduling
public class GameApplication {
private static SpringApplication app = null;
private static ConfigurableApplicationContext configurableApplicationContext = null;
private static final Logger LOGGER = LoggerFactory.getLogger(GameApplication.class);
private static NettyGameServer nettyServer = null;
public static int serverId = 0;
// public static ServerProperties serverProperties;
public static String coreIp;
public static boolean start = false;
2019-01-04 13:39:02 +08:00
public static void main(String[] args) throws Exception {
2018-12-27 17:54:23 +08:00
start = true;
app = new SpringApplication(GameApplication.class);
app.setRegisterShutdownHook(false);
app.setWebEnvironment(false);
configurableApplicationContext = app.run(args);
//注册消息处理方法
ProtocolsManager protocolsManager = ProtocolsManager.getInstance();
// protocolsManager.initContext();
// 追加ProtocolsManager消息处理器
Map<String, BaseHandler> gameHanderMap = configurableApplicationContext.getBeansOfType(BaseHandler.class);
for (BaseHandler handler : gameHanderMap.values()) {
protocolsManager.addHandler(handler);
}
2019-01-07 14:27:53 +08:00
STableManager.initialize("com.ljsd.jieling.config");
2018-12-27 17:54:23 +08:00
final NettyServerAutoConfiguration netServerConfig = configurableApplicationContext.getBean(NettyServerAutoConfiguration.class);
NettyProperties properties = netServerConfig.getNettyProperties();
try {
LOGGER.info("main->CoreApplication start...");
ISessionFactory sessionFactory = new ISessionFactory();
nettyServer = new NettyGameServer(properties.getTcpPort(), properties.getReadTimeout(),
properties.getWriteTimeout(), properties.getAllTimeout(),ProtocolsManager.getInstance(),
sessionFactory);
nettyServer.start();
} catch (Exception e) {
LOGGER.error("main->msg={}", e.getMessage(), e);
}
}
private static void close() {
start = false;
LOGGER.info("close->QuartzManager.getInstance().shutdownJob-------------------");
try {
nettyServer.stop();
} catch (Exception e) {
LOGGER.error("close->msg={}", e.getMessage(), e);
}
LOGGER.info("close->nettyServer.stop-------------------");
configurableApplicationContext.close();
LOGGER.info("-------------------configurableApplicationContext.close-------------------");
}
}