
com.zlyx.easynetty.server.NettyServerManager Maven / Gradle / Ivy
package com.zlyx.easynetty.server;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import com.zlyx.easycore.annotations.ApplicationBean;
import com.zlyx.easycore.beans.AbstractBean;
import com.zlyx.easycore.event.IHandlerOnChanged;
import com.zlyx.easycore.event.IHandlerOnRefreshed;
import com.zlyx.easycore.tool.Ops;
import com.zlyx.easycore.utils.LogUtils;
import com.zlyx.easycore.utils.ObjectUtils;
import com.zlyx.easycore.utils.ProxyUtils;
import com.zlyx.easycore.utils.ThreadManager;
import com.zlyx.easynetty.server.annotations.Server;
import com.zlyx.easynetty.server.core.AbstractNettyServer;
import com.zlyx.easynetty.server.core.NettyFactory;
/**
* @Auth 赵光
* @Describle
* @2019年1月25日 下午2:12:06
*/
@SuppressWarnings("rawtypes")
@ApplicationBean(todo = { "easy-netty-server" })
public class NettyServerManager extends AbstractBean
implements IHandlerOnRefreshed, IHandlerOnChanged {
private List factorys;
@Override
public void doOnRefreshed(ApplicationContext context) {
List nettyServers = getBeans();
Server serverAnno = null;
NettyFactory factory = null;
factorys = new ArrayList();
if (Ops.isNotNull(nettyServers)) {
for (AbstractNettyServer nettyServer : nettyServers) {
if (nettyServer.isOpen()) {
serverAnno = ProxyUtils.getTarget(nettyServer).getClass().getAnnotation(Server.class);
if (ObjectUtils.isNotEmpty(serverAnno) && serverAnno.isOpen()) {
logger.info("Easy-netty have started an listener on port " + serverAnno.port() + " for "
+ nettyServer);
factory = new NettyFactory(serverAnno.port(), nettyServer);
factorys.add(factory);
ThreadManager.execute(factory);
}
} else {
LogUtils.info(nettyServer.getClass(), " Server is closed");
}
}
LogUtils.info("Easy-netty have been started!");
}
}
@Override
public void doOnChanged(ApplicationContext context) throws Exception {
if (factorys != null) {
for (NettyFactory factory : factorys) {
factory.close();
}
LogUtils.info("Easy-netty have been closed!");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy