2016-09-29 11 views
0

Spring Загрузочный не autowire в MBean я экспортируемые из другого веб-приложения с:Весна Boot autwire MBean?

@Component 
@Service 
@ManagedResource(objectName = IHiveService.MBEAN_NAME) 
public class HiveService implements IHiveService { 
    @Autowired(required = true) 
    CategoryRepository categoryRepository; 

    @Override 
    @ManagedOperation 
    public String echo(String input) { 
     return "you said " + input; 
    } 
} 

я могу видеть и использовать Bean в Oracle Java управления полетами, но другие приложения Spring загрузки не может autowire боб , Я это пропустил аннотацию. Для автоподготовки боба я использую:

@Controller 
@Configuration 
@EnableMBeanExport 
public class GathererControls { 
    @Autowired 
    IHiveService hiveService; // <-- this should be auto wired 

Любые идеи?

+0

'@ Controller' и' @ Configuration' в том же классе ?? Это возможно? – Pau

+0

@PauChorro я отчаялся и попробовал все ... –

ответ

3

Аннотации @EnableMBeanExport в приложении, где вы хотите получить доступ к управляющему компоненту из исходного приложения.

Что вам нужно - это подключение к реестру JMX, чтобы получить доступ к объектам управления, экспортированным (первым приложением).

@Configuration 
public class MyConfiguration { 

    @Bean 
    public MBeanProxyFactoryBean hiveServiceFactory() { 
    MBeanProxyFactoryBean proxyFactory = new MBeanProxyFactoryBean(); 
    proxyFactory.setObjectName(IHiveService.MBEAN_NAME); 
    proxyFactory.setProxyInterface(IHiveService.class); 
    proxyFactory.afterPropertiesSet(); 
    return proxyFactory; 
    } 

    @Bean 
    public IHiveService hiveService(MBeanProxyFactoryBean hiveServiceFactory) { 
    return (IHiveService) hiveServiceFactory.getObject(); 
    } 
} 

Теперь в контроллере:

@Controller 
public class GathererControls { 
    @Autowired 
    IHiveService hiveService; // <-- will be autowired 
    // ... 
    // ... 
} 
+0

ты мой личный герой :) Он работает! Большое спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^