dubbo泛化调用(参数为bean)

public static Object dubbogeneric (String applicationName, String interfaceName, String dubboGroup, String dubboVersion, String method, String className, String param) {

    // 普通编码配置方式
    ApplicationConfig application = new ApplicationConfig();
    application.setName(applicationName);

    // 连接注册中心配置
    RegistryConfig registry = new RegistryConfig();
    registry.setAddress("zookeeper://x.x.x.x:2181");

    ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>();

    reference.setApplication(application);
    reference.setRegistry(registry);
    reference.setInterface(interfaceName);
    reference.setGroup(dubboGroup);
    reference.setVersion(dubboVersion);
    // 声明为泛化接口
    reference.setGeneric(true);

    ReferenceConfigCache cache = ReferenceConfigCache.getCache();
    GenericService genericService = cache.get(reference);

    //基本类型以及Date,List,Map等不需要转换,直接调用
    String[] parameterTypes = new String[]{className};

    Map params = JSON.parseObject(param);
    params.put("class", className);

    Object result = genericService.$invoke(method, parameterTypes,new Object[]{params});

    return result;
}

猜你喜欢

转载自www.cnblogs.com/ligh-test/p/10770643.html