private Object resolveServiceBean(String serviceBeanName, ServiceBean serviceBean) { int index = serviceBeanName.indexOf("#"); if (index > -1) { Class<?> interfaceClass = serviceBean.getInterfaceClass(); String serviceName = serviceBeanName.substring(index + 1); if (applicationContext.containsBean(serviceName)) { return applicationContext.getBean(serviceName, interfaceClass); } } return null; }
private Map<String, Map<String, Object>> buildReferencesMetadata( Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedElementReferenceBeanMap) { Map<String, Map<String, Object>> referencesMetadata = new LinkedHashMap<>(); for (Map.Entry<InjectionMetadata.InjectedElement, ReferenceBean<?>> entry : injectedElementReferenceBeanMap.entrySet()) { InjectionMetadata.InjectedElement injectedElement = entry.getKey(); ReferenceBean<?> referenceBean = entry.getValue(); Map<String, Object> beanMetadata = resolveBeanMetadata(referenceBean); beanMetadata.put("invoker", resolveBeanMetadata(referenceBean.get())); referencesMetadata.put(String.valueOf(injectedElement.getMember()), beanMetadata); } return referencesMetadata; }
@SuppressWarnings("rawtypes") public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (org.springframework.aop.framework.Advised.class.isInstance(bean)) { org.springframework.aop.framework.Advised advised = (org.springframework.aop.framework.Advised) bean; Class<?> targetClass = advised.getTargetClass(); Compensable compensable = targetClass.getAnnotation(Compensable.class); if (compensable == null) { return bean; } Field[] fields = targetClass.getDeclaredFields(); for (int i = 0; fields != null && i < fields.length; i++) { Field field = fields[i]; Reference reference = field.getAnnotation(Reference.class); if (reference == null) { continue; } ReferenceBean referenceConfig = new ReferenceBean(reference); this.validateReferenceBean(beanName, referenceConfig); } } return bean; }
private void initProviderBean(String beanName, Object bean) throws Exception { Service service = this.applicationContext.findAnnotationOnBean(beanName, Service.class); ServiceBean<Object> serviceConfig = new ServiceBean<Object>(service); if ((service.interfaceClass() == null || service.interfaceClass() == void.class) && (service.interfaceName() == null || "".equals(service.interfaceName()))) { Class<?>[] interfaces = bean.getClass().getInterfaces(); if (interfaces.length > 0) { serviceConfig.setInterface(interfaces[0]); serviceConfig.setApplication(this.parseApplication(application, this.properties, environment, beanName, "application", application)); String module = service.module(); serviceConfig.setModule( this.parseModule(module, this.properties, environment, beanName, "module", module)); String[] registries = service.registry(); serviceConfig.setRegistries( this.parseRegistries(registries, this.properties, environment, beanName, "registry")); String[] protocols = service.protocol(); serviceConfig.setProtocols( this.parseProtocols(protocols, this.properties, environment, beanName, "registry")); String monitor = service.monitor(); serviceConfig.setMonitor( this.parseMonitor(monitor, this.properties, environment, beanName, "monitor", monitor)); String provider = service.provider(); serviceConfig.setProvider( this.parseProvider(provider, this.properties, environment, beanName, "provider", provider)); serviceConfig.setApplicationContext(this.applicationContext); serviceConfig.afterPropertiesSet(); serviceConfig.setRef(bean);
ReferenceBean<T> referenceBean = new ReferenceBean<T>(reference); if ((reference.interfaceClass() == null || reference.interfaceClass() == void.class) && (reference.interfaceName() == null || "".equals(reference.interfaceName()))) { referenceBean.setInterface(field.getType()); referenceBean.setApplication(this.parseApplication(application, this.properties, environment, beanName, field.getName(), "application", application)); String module = reference.module(); referenceBean.setModule(this.parseModule(module, this.properties, environment, beanName, field.getName(), "module", module)); String[] registries = reference.registry(); referenceBean.setRegistries(this.parseRegistries(registries, this.properties, environment, beanName, field.getName(), "registry")); String monitor = reference.monitor(); referenceBean.setMonitor(this.parseMonitor(monitor, this.properties, environment, beanName, field.getName(), "monitor", monitor)); String consumer = reference.consumer(); referenceBean.setConsumer(this.parseConsumer(consumer, this.properties, environment, beanName, field.getName(), "consumer", consumer)); referenceBean.setApplicationContext(DubboConsumerAutoConfiguration.this.applicationContext); return referenceBean;
ReferenceBean<?> referenceBean = DubboConsumerAutoConfiguration.this.getConsumerBean(beanName, field, reference); Class<?> interfaceClass = referenceBean.getInterfaceClass(); String group = referenceBean.getGroup(); String version = referenceBean.getVersion(); ClassIdBean classIdBean = new ClassIdBean(interfaceClass, group, version); Object dubboReference = DubboConsumerAutoConfiguration.DUBBO_REFERENCES_MAP.get(classIdBean); if (dubboReference == null) { referenceBean.afterPropertiesSet(); dubboReference = referenceBean.getObject(); DubboConsumerAutoConfiguration.DUBBO_REFERENCES_MAP.put(classIdBean, dubboReference);
@SuppressWarnings("rawtypes") public void validateReferenceBean(String beanId, ReferenceBean referenceBean) throws BeansException { Integer retries = referenceBean.getRetries(); String loadBalance = referenceBean.getLoadbalance(); String cluster = referenceBean.getCluster(); String filter = referenceBean.getFilter(); String group = referenceBean.getGroup(); String clazzName = referenceBean.getInterface(); ClassLoader cl = Thread.currentThread().getContextClassLoader();
@SuppressWarnings("rawtypes") public void validateServiceBean(String beanId, ServiceBean serviceBean) throws BeansException { Integer retries = serviceBean.getRetries(); String loadBalance = serviceBean.getLoadbalance(); String cluster = serviceBean.getCluster(); String filter = serviceBean.getFilter(); String group = serviceBean.getGroup();
@Override public Class<?> getObjectType() { return getInterfaceClass(); }
String group = serviceBean.getGroup(); if (StringUtils.equals("x-bytetcc", group) == false && StringUtils.trimToEmpty(group).startsWith("x-bytetcc-") == false) { ReferenceBean referenceBean = entry.getValue(); String group = referenceBean.getGroup(); if (StringUtils.equals("x-bytetcc", group) == false && StringUtils.trimToEmpty(group).startsWith("x-bytetcc-") == false) {
@Override public void setPackage(String annotationPackage) { super.setPackage(annotationPackage); this.annotationPackage = annotationPackage; }
@WriteOperation public Map<String, Object> shutdown() throws Exception { Map<String, Object> shutdownCountData = new LinkedHashMap<>(); // registries int registriesCount = getRegistries().size(); // protocols int protocolsCount = getProtocolConfigsBeanMap().size(); ProtocolConfig.destroyAll(); shutdownCountData.put("registries", registriesCount); shutdownCountData.put("protocols", protocolsCount); // Service Beans Map<String, ServiceBean> serviceBeansMap = getServiceBeansMap(); if (!serviceBeansMap.isEmpty()) { for (ServiceBean serviceBean : serviceBeansMap.values()) { serviceBean.destroy(); } } shutdownCountData.put("services", serviceBeansMap.size()); // Reference Beans ReferenceAnnotationBeanPostProcessor beanPostProcessor = getReferenceAnnotationBeanPostProcessor(); int referencesCount = beanPostProcessor.getReferenceBeans().size(); beanPostProcessor.destroy(); shutdownCountData.put("references", referencesCount); // Set Result to complete Map<String, Object> shutdownData = new TreeMap<>(); shutdownData.put("shutdown.count", shutdownCountData); return shutdownData; }
@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { super.setApplicationContext(applicationContext); this.applicationContext = applicationContext; }
public void destroy() throws Exception { unexport(); }
private void init() { this.bean = referenceBean.get(); } }
@Override protected ReferenceBean doBuild() { return new ReferenceBean<Object>(); }
public Class<?> getObjectType() { return getInterfaceClass(); }
@Override public Object getObject() throws Exception { return get(); }
public Class<?> getObjectType() { return getInterfaceClass(); }
public Object getObject() throws Exception { return get(); }