2016-09-18 1 views
2

Ci-dessous le application.properties pour une application de démarrage ressortImpossible d'obtenir/rafraîchir à travailler avec son client printemps nuage quand server.port et management.port sont différents

spring.application.name=test-service 
server.port=8080 

management.port=8081 
management.context-path=/admin 

spring.cloud.config.uri=http://localhost:8888 
endpoints.refresh.enabled=true 
endpoints.restart.enabled=true 

Lorsque je démarre l'application , il contacte le serveur de configuration et charge les propriétés comme prévu.

Je modifier les propriétés du serveur de configuration et déclencher une actualisation sur l'application à l'aide

curl -X POST http://localhost:8081/admin/refresh 

les impressions API le nom de la propriété qui a été changé.

Quand je fais un get sur la propriété, je vois encore l'ancienne valeur

curl -X GET http://localhost:8081/admin/env/{property_name} 

je déclenche un redémarrage et il reprend la nouvelle valeur de la propriété

curl -X POST http://localhost:8081/admin/restart 

Voir le même comportement quand j'essaye de changer la valeur de propriété en utilisant

curl -X POST http://localhost:8081/admin/env -d property1=123 

Quand j'essaye d'obtenir la valeur de propriété je vois toujours le o ld valeur

curl -X GET http://localhost:8081/admin/env/property1 

Quand je change la management.port à 8080 (le même que le server.port) tout fonctionne comme prévu.

Est-ce que ce comportement est attendu? Il me semble qu'il est en train de modifier 2 environnements différents un pour le serveur fonctionnant sur 8080 et l'autre fonctionnant sur 8081.

Répondre

0

Pourriez-vous s'il vous plaît partager votre pom.xml et le fichier principal de l'application (Entrée). Nous pouvons utiliser différents Port. Si vous êtes en mesure d'obtenir les propriétés modifiées dans l'appel "/ refresh", cela devrait également fonctionner dans votre application. Êtes-vous sûr d'utiliser @RefreshScope dans votre bean?

Remarque: @RefreshScope ne fonctionnera pas sur l'annotation @Configuration. Pour plus de détails, veuillez suivre la documentation https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html.

0

Cela semble être un problème avec spring-boot.

EnvironmentEndpoint et EnvironmentMVCEndpoint sont injectés avec 2 environnements différents lorsque server.port et management.port sont différents.

L'environnement d'application a la valeur actualisée, mais quand je reçois la valeur d'une propriété spécifique EnviromentMVCEndpoint il ne reflète pas la juste valeur dans son environnement

@GetMapping(value = "/{name:.*}", produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
@HypermediaDisabled 
public Object value(@PathVariable String name) { 
    if (!getDelegate().isEnabled()) { 
     // Shouldn't happen - MVC endpoint shouldn't be registered when delegate's 
     // disabled 
     return getDisabledResponse(); 
    } 
    return new NamePatternEnvironmentFilter(this.environment).getResults(name); 
} 

@Override 
public void setEnvironment(Environment environment) { 
    this.environment = environment; 
}