
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