EsbManager.java 1.55 KB
/*
 *
 * Copyright (c) 2001-2019 泛微软件.
 * 泛微协同商务系统,版权所有.
 *
 */
package com.weaver.esb.spi;

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

import java.util.ServiceLoader;

/**
 * <p>Title: ${file_name}</p>
 * <p>Description: </p>
 *
 * @author SJZ
 * @version 1.0
 * @date 2019/5/16
 */
public class EsbManager {

    /**
     * 日志组件
     */
    private static Logger log = LoggerFactory.getLogger(EsbManager.class);

    /**
     * 获取ESB 服务实现类
     * @param protocol
     * @param requestConfig
     * @return
     */
    public static EsbService getService(String protocol, RequestConfig requestConfig){
        ServiceLoader<EsbService> loaders = ServiceLoader.load(EsbService.class);

        for(EsbService service : loaders){
            try {
                log.info("find service protocol:" + service.getProtocol());

                if (protocol == null || protocol.isEmpty() || service.getProtocol().equalsIgnoreCase(protocol)) {
                    log.info("service init");
                    service.init(requestConfig);
                    log.info("return service protocol:" + service.getProtocol());
                    return service;
                }
            }catch (Exception e){
                log.error(e.getMessage());
                e.printStackTrace();
            }
        }

        log.error("not find service protocol:" + protocol);

        return null;
    }

    public static EsbService getService(RequestConfig requestConfig){
        return getService(null,requestConfig);
    }
}