All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.caiguoqing.uyuni.rpc.server.Server Maven / Gradle / Ivy

The newest version!
/**
 * 
 */
package org.caiguoqing.uyuni.rpc.server;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author org.caiguoqing
 * 
 */
public abstract class Server implements Service {
	private Logger logger = LoggerFactory.getLogger(Server.class);
	protected Map serviceInstances = new HashMap();
	protected ServerConfig config;
	protected boolean ifRun = false;
	
	public Server(ServerConfig config){
		this.config = config;
	}
	
	public String getURL(){
		return ":" + config.getPort();
	}
	
	private boolean createInstance(){
		Map servers = config.getServers();
		
		for(Entry entry : servers.entrySet()){
			try {
				Class serviceClass = Class.forName(entry.getValue());
				serviceInstances.put(entry.getKey(),serviceClass.newInstance());
			} catch (ClassNotFoundException e) {
				logger.error("invalid server '" + entry.getValue() + "' class not found");
				return false;
			} catch (InstantiationException e) {
				e.printStackTrace();
				return false;
			} catch (IllegalAccessException e) {
				e.printStackTrace();
				return false;
			}
		}
		return true;
	}
	
	protected boolean check(){
		if(config.getPort() <= 0 || config.getPort() >= 65535) {
			logger.error("invalid port " + config.getPort());
			return false;
		}
		if(config.getServers() == null){
			logger.error("invalid server null");
			return false;
		}
		
		return createInstance();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy