2016-10-10 1 views
3

Je les services suivants:Configuration de Spring Config serveur remplace port du serveur argument vm

  1. Spring Nuage Config serveur
  2. Discovery Service Eureka
  3. Event Service (application de démarrage du printemps)

J'utilise le mode "Config First". Cela signifie que je démarre le serveur de configuration en premier et après que je démarre le service de découverte.

Ensuite, je cours le service d'événement. Il prend la configuration à partir du serveur de configuration. Dans la configuration, je spécifie la propriété server.port égale à 8081.

Je vois que mon service d'événements est en cours d'enregistrement dans le service de découverte.

Le problème survient lorsque j'essaie de démarrer une instance de plus du service d'événements. Pour l'exécuter sur un autre port, j'utilise l'argument -Dserver.port vm. Donc, ma commande ressemble à:

java -jar event-service.jar -Dserver.port=8082

Mais l'application ne démarre pas, en disant que 8081 est déjà utilisé. Il semble que le service événementiel utilise la configuration du serveur de configuration et cette configuration a priorité sur les arguments VM. Mais je pensais que ce devrait être vice-verca.

+0

Il doit y avoir quelque chose de surcharger le port du serveur dans votre projet. Vérifiez votre application.properties. Vérifiez également System.setProperty ("server.port") – Snickers3192

Répondre

3

L'ordre de vos arguments de ligne de commande est erronée: le system variable doit être avant la jarfile:

$ java -jar -Dserver.port=8082 event-service.jar 

3 façons de spécifier les propriétés de la ligne de commande

  • variable d'environnement: $ server_port=8082 java -jar event-service.jar
  • Variable système: $ java -jar -Dserver.port=8082 event-service.jar
  • Argument de ligne de commande: $ java -jar event-service.jar --server.port=8082

Notez que pour environment variable, le dots sont remplacés par underscores.

source: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

0

Vous devez modifier les propriétés du client à spring.cloud.config.override-none=true qui est définie sur false par défaut. Selon la documentation:

Drapeau pour indiquer que lorsque allowOverride est vrai, les propriétés externes doivent avoir la priorité la plus basse, et ne remplacent toutes les sources de propriété existants (y compris les fichiers de configuration locale). Par défaut faux.