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 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; }
@SuppressWarnings({ "rawtypes", "unchecked" }) public synchronized static ReferenceManager getInstance() { if (null != instance) return instance; instance = new ReferenceManager(); services = new HashSet<ServiceBean>(); try { Field field = SpringExtensionFactory.class.getDeclaredField("contexts"); field.setAccessible(true); Set<ApplicationContext> contexts = (Set<ApplicationContext>)field.get(new SpringExtensionFactory()); for (ApplicationContext context : contexts){ services.addAll(context.getBeansOfType(ServiceBean.class).values()); } } catch (Exception e) { logger.error("Get All Dubbo Service Error", e); return instance; } for (ServiceBean<?> bean : services) { interfaceMapRef.putIfAbsent(bean.getInterfaceClass(), bean.getRef()); } // if (!services.isEmpty()) { ServiceBean<?> bean = services.toArray(new ServiceBean[]{})[0]; application = bean.getApplication(); } return instance; }
public Object getProxy(String interfaceClass) { Set<Entry<Class<?>, Object>> entrySet = interfaceMapProxy.entrySet(); for (Entry<Class<?>, Object> entry : entrySet) { if (entry.getKey().getName().equals(interfaceClass)) { return entry.getValue(); } } for (ServiceBean<?> service : services) { if (interfaceClass.equals(service.getInterfaceClass().getName())) { ReferenceConfig<Object> reference = new ReferenceConfig<Object>(); reference.setApplication(service.getApplication()); reference.setRegistry(service.getRegistry()); reference.setRegistries(service.getRegistries()); reference.setInterface(service.getInterfaceClass()); reference.setVersion(service.getVersion()); interfaceMapProxy.put(service.getInterfaceClass(), reference.get()); return reference.get(); } } return null; }