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

org.caiguoqing.uyuni.common.Provider Maven / Gradle / Ivy

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.caiguoqing.toolbox.net.IPHelper;
import org.caiguoqing.uyuni.config.ProtocolConfig;
import org.caiguoqing.uyuni.config.ProviderConfig;
import org.caiguoqing.uyuni.config.RegistryConfig;
import org.caiguoqing.uyuni.registry.RegistryService;
import org.caiguoqing.uyuni.rpc.client.socketclient.SocketClient;
import org.caiguoqing.uyuni.rpc.server.Server;
import org.caiguoqing.uyuni.rpc.server.ServerConfig;
import org.caiguoqing.uyuni.rpc.server.ServerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author caiguoqing0427
 *
 */
public class Provider {
	private Logger logger = LoggerFactory.getLogger(getClass());
	private List list;
	private RegistryService registry;
	private RegistryConfig registryConfig;
	private ProtocolConfig protocolConfig;
	
	public Provider(List list,RegistryConfig registryConfig
		,ProtocolConfig protocolConfig){
		this.list = list;
		this.registryConfig = registryConfig;
		this.protocolConfig = protocolConfig;
	}
	
	private boolean check(){
		if(list == null || list.size() == 0 || registryConfig == null
			|| protocolConfig == null){
			return false;
		}
		return true;
	}
	
	public void init(){
		if(!check()){
			return;
		}
		String address = registryConfig.getAddress();
		int pos = address.indexOf(":");
		String host = address.substring(0, pos);
		int port = Integer.parseInt(address.substring(pos+1));
		try {
			registry = SocketClient.getInstance().refer(RegistryService.class
					,host,port);
			logger.info("find registry at " + host + ":" + port);
		} catch (Exception e) {
			logger.error("registry not found at " + host + ":" + port);
			e.printStackTrace();
			return;
		}
		
		String ip = IPHelper.getLocalIp();
		port = Integer.parseInt(protocolConfig.getPort());
		Map services = new HashMap();
		for(ProviderConfig config : list){
			services.put(config.getInter(),config.getClazz());
		}
		
		Server server = ServerFactory.getServer(new ServerConfig(services,port));
		if(server != null){
			server.run();
		}else{
			return;
		}
		
		for(String name : services.keySet()){
			String url = "http://"+ip+":"+protocolConfig.getPort() + "/" + name;
			logger.info("regist service " + url);
			registry.setService(name,url);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy