diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java index 0cd3aae..74992ff 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java @@ -47,7 +47,7 @@ public class ConfigGateway implements RouteDefinitionLocator { HashMap , String>> specialField = new HashMap , String>>(); @Autowired - private ApplicationContext applicationContext; + private ApplicationContext appContext; @Bean public GenericServicePool genericServicePool() { @@ -200,7 +200,7 @@ public class ConfigGateway implements RouteDefinitionLocator { } catch (Exception e) { // TODO: 任何错误都直接终止退出 log.error(e.toString()); - SpringApplication.exit(applicationContext); + SpringApplication.exit(appContext); } // gs.$invoke(method, parameterTypes, args) @@ -261,11 +261,50 @@ public class ConfigGateway implements RouteDefinitionLocator { } } - String uriString = "dubbo://"; + + + // GenericServicePool gsPool = appContext.getBean(GenericServicePool.class); + // GenericService gs = gsPool.get(rkey); + // if(gs == null) { + // ReferenceConfig reference = new ReferenceConfig(); // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存 + // reference.setApplication(new ApplicationConfig("dubbo-exchange")); // 必须 + // // reference.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181")); + // reference.setGroup("test"); + // reference.setInterface("ocean.demo.api.IExchange"); // 弱类型接口名 必须 + // reference.setVersion("1.0.0"); // 必须 + // reference.setConnections(rconnections); + // reference.setGeneric(true); // 声明为泛化接口 + // // gsPool.add(rkey, reference.get()); + // gs = reference.get(); + // gsPool.put(rkey, gs); + // } + + ReferenceConfig reference = new ReferenceConfig(); + String UriString = "dubbo://"; + + Object application = iter.get("application"); + if (application != null) { + BiConsumer, String> doFunc = specialField.get("application"); + if(doFunc != null) { + doFunc.accept(reference, (String)application); + } + UriString += (String)application + "/"; + } Object group = iter.get("group"); if (group != null) { - rd.setOrder((int) group); + BiConsumer, String> doFunc = specialField.get((String)group); + if(doFunc != null) { + doFunc.accept(reference, (String)application); + } else { + try { + ConfigSpecialFunction.setDefault(reference, "group", (String)group); + } catch (Exception e) { + log.error("配置解析错误 字段: {}:{}", "group", group); + } + + } + UriString += (String)application + "/"; } Object registry = iter.get("registry"); @@ -273,10 +312,9 @@ public class ConfigGateway implements RouteDefinitionLocator { rd.setOrder((int) registry); } - Object application = iter.get("application"); - if (registry != null) { - rd.setOrder((int) application); - } + + + return ""; } diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java index 2bd46f7..4f07186 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigSpecialFunction.java @@ -1,22 +1,37 @@ package cn.ecpark.service.usergw.config; +import java.lang.reflect.Method; import java.util.function.BiConsumer; import java.util.function.Function; +import javax.el.MethodNotFoundException; + import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.ReferenceConfig; import org.apache.dubbo.rpc.service.GenericService; +import cn.ecpark.service.usergw.utils.Convert; +import lombok.extern.slf4j.Slf4j; + /** * ConfigSpecialFunction */ +@Slf4j public class ConfigSpecialFunction { - - // public static BiConsumer, String> setApplication = (ref, cfgValue) -> { - // ref.setApplication(new ApplicationConfig(cfgValue)); + + // public static BiConsumer, String> + // setApplication = (ref, cfgValue) -> { + // ref.setApplication(new ApplicationConfig(cfgValue)); // }; - public static void setApplication(ReferenceConfig ref, String cfgValue) { + public static void setApplication(ReferenceConfig ref, String cfgValue) { ref.setApplication(new ApplicationConfig(cfgValue)); } + + public static void setDefault(ReferenceConfig ref, String methodName, String cfgValue) throws Exception { + cfgValue = "set" + Convert.firstUpperCase(methodName); + log.info(methodName,cfgValue); + Method method = ref.getClass().getMethod(methodName); + method.invoke(ref, cfgValue); + } } \ No newline at end of file