Search in sources :

Example 1 with ConfigHandler

use of com.weibo.api.motan.config.handler.ConfigHandler in project motan by weibocom.

the class ServiceConfig method unexport.

public synchronized void unexport() {
    if (!exported.get()) {
        return;
    }
    try {
        ConfigHandler configHandler = ExtensionLoader.getExtensionLoader(ConfigHandler.class).getExtension(MotanConstants.DEFAULT_VALUE);
        configHandler.unexport(exporters, registereUrls);
    } finally {
        afterUnexport();
    }
}
Also used : ConfigHandler(com.weibo.api.motan.config.handler.ConfigHandler)

Example 2 with ConfigHandler

use of com.weibo.api.motan.config.handler.ConfigHandler in project motan by weibocom.

the class ServiceConfig method doExport.

@SuppressWarnings("unchecked")
private void doExport(ProtocolConfig protocolConfig, int port, List<URL> registryURLs) {
    String protocolName = protocolConfig.getName();
    if (protocolName == null || protocolName.length() == 0) {
        protocolName = URLParamType.protocol.getValue();
    }
    String hostAddress = host;
    if (StringUtils.isBlank(hostAddress) && basicServiceConfig != null) {
        hostAddress = basicServiceConfig.getHost();
    }
    if (NetUtils.isInvalidLocalHost(hostAddress)) {
        hostAddress = getLocalHostAddress(registryURLs);
    }
    Map<String, String> map = new HashMap<String, String>();
    map.put(URLParamType.nodeType.getName(), MotanConstants.NODE_TYPE_SERVICE);
    map.put(URLParamType.refreshTimestamp.getName(), String.valueOf(System.currentTimeMillis()));
    collectConfigParams(map, protocolConfig, basicServiceConfig, extConfig, this);
    collectMethodConfigParams(map, this.getMethods());
    URL serviceUrl = new URL(protocolName, hostAddress, port, interfaceClass.getName(), map);
    if (serviceExists(serviceUrl)) {
        LoggerUtil.warn(String.format("%s configService is malformed, for same service (%s) already exists ", interfaceClass.getName(), serviceUrl.getIdentity()));
        throw new MotanFrameworkException(String.format("%s configService is malformed, for same service (%s) already exists ", interfaceClass.getName(), serviceUrl.getIdentity()), MotanErrorMsgConstant.FRAMEWORK_INIT_ERROR);
    }
    List<URL> urls = new ArrayList<URL>();
    // injvm 协议只支持注册到本地,其他协议可以注册到local、remote
    if (MotanConstants.PROTOCOL_INJVM.equals(protocolConfig.getId())) {
        URL localRegistryUrl = null;
        for (URL ru : registryURLs) {
            if (MotanConstants.REGISTRY_PROTOCOL_LOCAL.equals(ru.getProtocol())) {
                localRegistryUrl = ru.createCopy();
                break;
            }
        }
        if (localRegistryUrl == null) {
            localRegistryUrl = new URL(MotanConstants.REGISTRY_PROTOCOL_LOCAL, hostAddress, MotanConstants.DEFAULT_INT_VALUE, RegistryService.class.getName());
        }
        urls.add(localRegistryUrl);
    } else {
        for (URL ru : registryURLs) {
            urls.add(ru.createCopy());
        }
    }
    for (URL u : urls) {
        u.addParameter(URLParamType.embed.getName(), StringTools.urlEncode(serviceUrl.toFullStr()));
        registereUrls.add(u.createCopy());
    }
    ConfigHandler configHandler = ExtensionLoader.getExtensionLoader(ConfigHandler.class).getExtension(MotanConstants.DEFAULT_VALUE);
    exporters.add(configHandler.export(interfaceClass, ref, urls));
    initLocalAppInfo(serviceUrl);
}
Also used : MotanFrameworkException(com.weibo.api.motan.exception.MotanFrameworkException) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) URL(com.weibo.api.motan.rpc.URL) ConfigHandler(com.weibo.api.motan.config.handler.ConfigHandler)

Example 3 with ConfigHandler

use of com.weibo.api.motan.config.handler.ConfigHandler in project motan by weibocom.

the class RefererConfig method initRef.

@SuppressWarnings({ "unchecked", "rawtypes" })
public synchronized void initRef() {
    if (initialized.get()) {
        return;
    }
    try {
        interfaceClass = (Class) Class.forName(interfaceClass.getName(), true, Thread.currentThread().getContextClassLoader());
    } catch (ClassNotFoundException e) {
        throw new MotanFrameworkException("ReferereConfig initRef Error: Class not found " + interfaceClass.getName(), e, MotanErrorMsgConstant.FRAMEWORK_INIT_ERROR);
    }
    if (CollectionUtil.isEmpty(protocols)) {
        throw new MotanFrameworkException(String.format("%s RefererConfig is malformed, for protocol not set correctly!", interfaceClass.getName()));
    }
    checkInterfaceAndMethods(interfaceClass, methods);
    clusterSupports = new ArrayList<ClusterSupport<T>>(protocols.size());
    List<Cluster<T>> clusters = new ArrayList<Cluster<T>>(protocols.size());
    String proxy = null;
    ConfigHandler configHandler = ExtensionLoader.getExtensionLoader(ConfigHandler.class).getExtension(MotanConstants.DEFAULT_VALUE);
    List<URL> registryUrls = loadRegistryUrls();
    String localIp = getLocalHostAddress(registryUrls);
    for (ProtocolConfig protocol : protocols) {
        Map<String, String> params = new HashMap<String, String>();
        params.put(URLParamType.nodeType.getName(), MotanConstants.NODE_TYPE_REFERER);
        params.put(URLParamType.version.getName(), URLParamType.version.getValue());
        params.put(URLParamType.refreshTimestamp.getName(), String.valueOf(System.currentTimeMillis()));
        collectConfigParams(params, protocol, basicReferer, extConfig, this);
        collectMethodConfigParams(params, this.getMethods());
        URL refUrl = new URL(protocol.getName(), localIp, MotanConstants.DEFAULT_INT_VALUE, interfaceClass.getName(), params);
        ClusterSupport<T> clusterSupport = createClusterSupport(refUrl, configHandler, registryUrls);
        clusterSupports.add(clusterSupport);
        clusters.add(clusterSupport.getCluster());
        proxy = (proxy == null) ? refUrl.getParameter(URLParamType.proxy.getName(), URLParamType.proxy.getValue()) : proxy;
    }
    ref = configHandler.refer(interfaceClass, clusters, proxy);
    initialized.set(true);
}
Also used : ClusterSupport(com.weibo.api.motan.cluster.support.ClusterSupport) MotanFrameworkException(com.weibo.api.motan.exception.MotanFrameworkException) Cluster(com.weibo.api.motan.cluster.Cluster) URL(com.weibo.api.motan.rpc.URL) ConfigHandler(com.weibo.api.motan.config.handler.ConfigHandler)

Aggregations

ConfigHandler (com.weibo.api.motan.config.handler.ConfigHandler)3 MotanFrameworkException (com.weibo.api.motan.exception.MotanFrameworkException)2 URL (com.weibo.api.motan.rpc.URL)2 Cluster (com.weibo.api.motan.cluster.Cluster)1 ClusterSupport (com.weibo.api.motan.cluster.support.ClusterSupport)1 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)1