2014-11-06 19 views
6

Próbuję utworzyć serwer konfiguracji Spring Cloud, który odczytuje dane konfiguracyjne z pliku właściwości, a nie github. Serwer uruchamia się, ale nie obsługuje właściwości z pliku. Mam dwa pliki konfiguracyjne na classpapath:Serwer konfiguracji Spring-Cloud ignoruje plik właściwości konfiguracji

bootstrap.yml

spring: 
application: 
    name: config-server 

config-server.properties

foo=bar 

kiedy idę do adresu URL, który rzekomo powinien dać mi wartość Instrumentu nieruchomość foo:

curl http://localhost:8888/admin/env/foo 

pojawia się błąd: " timestamp ": 1415298615005," status ": 404," error ":" Not Found "," exception ":" org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint $ NoSuchPropertyException "," message ":" Brak takiej właściwości : foo "," ścieżka ":"/admin/env/foo "}

Zastanawiam się, co robię źle? O ile rozumiem nazwa pliku właściwości powinna pasować do nazwy serwera, aby mogła zostać rozpoznana przez serwer.


dodanie profilu natywnego jako sugerowanego przez spencergibb nie pomogło. moi application.properties wygląda następująco:

server.port=8888 
spring.profiles.active=native 
spring.config.name=configserver 
spring.application.name=configserver 

nocie, że musiałem określić port serwera. Zgodnie z dokumentacją serwera Spring Cloud Config Server serwer konfiguracji domyślnie uruchamia port 8888. W moim przypadku jednak chyba określić port w moim config serwer uruchamiany w 8080.

Plik POM ma rodzica oraz pojedyncze zależność:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-config-server</artifactId> 
     <version>1.0.0.M2</version> 
    </dependency> 
</dependencies> 

aplikacja ma nic szczególnego w tym:

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
@EnableConfigServer 
public class ConfigurationApp { 
    public static void main(String[] args) { 
     SpringApplication.run(ConfigurationApp.class, args); 
    } 
} 

plik configserver.properties zawiera pojedynczy wpis: foo = bar

Przede wszystkim jestem zawsze otrzymuję błąd uruchamiania

2014-11-07 09:35:42.852 ERROR 6972 --- [   main] b.c.PropertySourceBootstrapConfiguration : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/configserver/default/master":Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect 

Niezależnie od tego, które polecenie wykonam ja zawsze się taką samą odpowiedź od serwera:

{"name":"info","label":"master","propertySources":[{"name":"bootstrap","source":{}},{"name":"applicationConfig: [classpath:/application.properties]","source":{"spring.config.name":"configserver","spring.application.name":"configserver","server.port":"8888","spring.profiles.active":"native"}},{"name":"defaultProperties","source":{"spring.application.name":"bootstrap"}}]} 

próbowałem:

http://localhost:8888/configserver/env 
http://localhost:8888/configserver/env/foo 
http://localhost:8888/configserver/info 
http://localhost:8888/configserver/beans 
http://localhost:8888/configserver/health 

odpowiedź jest zawsze jak wyżej

Odpowiedz

5

Domyślnie serwer konfiguracji obsługuje właściwości z git. Konieczne będzie ustawienie profilu na native przy użyciu --spring.profiles.active=native, aby serwer konfiguracji służył środowisku sprężynowemu. spring.config.name dla serwera konfiguracyjnego jest programowo ustawiony na spring.config.name=configserver, więc plik właściwości będzie musiał być configserver.properties.

+0

Dodałem ustawienie, które zasugerowałeś do application.properties. Błąd zniknął, ale nadal nie mogę uzyskać moich właściwości. Zaktualizowałem mój pierwotny wpis z więcej informacji – MrkK

+0

Zobacz moją odpowiedź tutaj: http://stackoverflow.com/a/27159030/2730527 – spencergibb

1

Punkt końcowy "/ admin/env" na serwerze konfiguracji obsługuje lokalną konfigurację samego serwera. Serwer jest zwykle zwykłą aplikacją Spring Boot, więc pobiera swoją konfigurację z "application.properties". Jeśli chcesz go pobrać z "config-server.properties", musisz ustawić "spring.config.name" lub "spring.config.location" (tak jak normalna aplikacja Boot).

Powiązane problemy