2016-08-11 6 views
0

В настоящее время я запускаю приложение Spring Boot внутри Websphere Liberty и использую Consul for Service Discovery. Чтобы зарегистрировать службы в Consul, я создал функцию Liberty, которая перехватывает события Application Lifecycle и выполняет регистрацию/дерегистрацию. Это отлично работает, но, делая это, я связываюсь с Либерти. Spring-Cloud-Consul выглядит так, что может решить эту проблему, но я не могу заставить ее зарегистрировать услугу с Liberty (она подключается к Consul) - только с Embedded Tomcat Server. Посмотрев код Spring-Cloud-Consul, проблема заключается в том, что EmbeddedServletContainerInitializedEvent не запускается, поэтому порт не устанавливается.Spring Cloud with Liberty

Мой вопрос: разве Spring Cloud Consul работает только со встроенными контейнерами сервлетов?

ответ

0

Мое решение было довести класс ConsulLifecycle весна-облако-консула местных и добавить ApplicationReadyEvent, например, так:

@Autowired(required = false) 
private ServerProperties serverProperties; 

@EventListener 
public void onApplicationReady(ApplicationReadyEvent event) { 
    this.setConfiguredPort(serverProperties.getPort()); 
    log.info("Application ready on port " + serverProperties.getPort()); 
    this.start(); 
} 

Теперь регистрация мои услуги и дерегистрировать, как ожидалось.