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

com.wueasy.base.bus.server.start.DubboServerApplicationContextInitializer Maven / Gradle / Ivy

/*
 * wueasy - A Java Distributed Rapid Development Platform.
 * Copyright (C) 2017-2019 wueasy.com

 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.

 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see .
 */
package com.wueasy.base.bus.server.start;

import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import com.wueasy.base.bus.Function;
import com.wueasy.base.bus.server.config.BusServerConfig;
import com.wueasy.base.bus.server.impl.FunctionImpl;
import com.wueasy.base.bus.server.util.FunctionHelper;
import com.wueasy.base.config.WueasyZkConfig;
import com.wueasy.base.util.EnvironmentHelper;

/**
 * dubbo服务端初始化
 * @author: fallsea
 * @version 1.0
 */
@Component
@Order(3)
public class DubboServerApplicationContextInitializer implements ApplicationContextInitializer{

	@Override
	public void initialize(ConfigurableApplicationContext applicationContext) {
		
		FunctionHelper.init();
		
		WueasyZkConfig zkConfig = EnvironmentHelper.get("wueasy.zk", WueasyZkConfig.class, applicationContext.getEnvironment());
		BusServerConfig serverConfig = EnvironmentHelper.get("wueasy.bus.server", BusServerConfig.class, applicationContext.getEnvironment());
		if(null!=serverConfig) {
    		// 服务实现
    		Function function = new FunctionImpl();
    		
    		// 当前应用配置
    		ApplicationConfig application = new ApplicationConfig();
    		application.setName(EnvironmentHelper.getString("spring.application.name", applicationContext.getEnvironment()));
    		application.setQosEnable(false);
    		 
    		// 连接注册中心配置
    		RegistryConfig registry = new RegistryConfig();
    		registry.setProtocol("zookeeper");
    		registry.setAddress(zkConfig.getServers());
    		registry.setSession(zkConfig.getSessionTimeout());
    		registry.setTimeout(zkConfig.getConnectionTimeout());
    		registry.setCheck(false);
    		registry.setClient("curator");
    		
    		// 服务提供者协议配置
    		ProtocolConfig protocol = new ProtocolConfig();
    		protocol.setName("dubbo");
    		protocol.setPort(serverConfig.getPort());
    		protocol.setThreads(serverConfig.getMaxWorkerThread());
    		protocol.setHost(EnvironmentHelper.getString("wueasy.local-ip", applicationContext.getEnvironment()));
    		protocol.setServer("netty4");
    		 
    		// 服务提供者暴露服务配置
    		ServiceConfig service = new ServiceConfig(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏
    		service.setApplication(application);
    		service.setRegistry(registry); // 多个注册中心可以用setRegistries()
    		service.setProtocol(protocol); // 多个协议可以用setProtocols()
    		service.setInterface(Function.class);
    		service.setRef(function);
    		service.setGroup(serverConfig.getGroup());
    		service.setVersion(serverConfig.getVersion());
    		service.setFilter(serverConfig.getFilter());
    		// 暴露及注册服务
    		service.export();
    		
    	}
		
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy