web-dev-qa-db-fra.com

Changer les ports par défaut de Dropwizard

J'ai un service Jersey REST basé sur Dropwizard qui s'exécute sur les ports par défaut 8080 (service) et 8081 (admin), je dois modifier les ports par défaut pour un système moins utilisé, je ne trouve aucune information Pour ce faire, quelqu'un peut-il m'indiquer s'il vous plaît de le faire?

40
user1965449

Vous pouvez mettre à jour les ports dans votre fichier de configuration yaml:

http:
  port: 9000
  adminPort: 9001

Voir http://www.dropwizard.io/0.9.2/docs/manual/configuration.html#http pour plus d'informations.

MODIFIER

Si vous avez migré vers Dropwizard 0.7.x, 0.8.x, 0.9.x, vous pouvez utiliser les éléments suivants:

server:
  applicationConnectors:
  - type: http 
    port: 9000
  adminConnectors:
  - type: http
    port: 9001
82
condit

En ligne de commande, vous pouvez les définir de cette façon, dans Dropwizard 0.6:

Java -Ddw.http.port=9090 -Ddw.http.adminPort=9091 -jar yourapp.jar server yourconfig.yml

Si vous utilisez Dropwizard 0.7, les propriétés du système sont définies comme suit:

Java -Ddw.server.applicationConnectors[0].port=9090 -Ddw.server.adminConnectors[0].port=9091 -jar yourapp.jar server yourconfig.yml

Il semble que si vous configurez des ports à l'aide de propriétés système, vous devez également les définir dans le yml (la propriété système a priorité, de toute façon). Au moins, cela m’arrive dans Dropwizard 0.7. Exemple de configuration du port YAML:

server:
  applicationConnectors:
  - type: http
    port: 8090
  adminConnectors:
  - type: http
    port: 8091

Si vous ne mettez pas ces ports dans le YAML, Dropwizard se plaint:

Exception in thread "main" Java.lang.IllegalArgumentException: Unable to override server.applicationConnectors[0].port; node with index not found.
29
Ferran Maylinch

C'est ce que j'ai fait pour mes applications de test (0.7.x, 0.8.x, 0.9.x):

public class TestConfiguration extends Configuration {

  public TestConfiguration() {
    super();
    // The following is to make sure it runs with a random port. parallel tests clash otherwise
    ((HttpConnectorFactory) ((DefaultServerFactory) getServerFactory()).getApplicationConnectors().get(0)).setPort(0);
    // this is for admin port
    ((HttpConnectorFactory) ((DefaultServerFactory) getServerFactory()).getAdminConnectors().get(0)).setPort(0);   } }

0 donne un port aléatoire disponible.

Je sais que ce n'est pas joli mais je ne pourrais pas trouver une meilleure façon de le faire par programme. Je devais m'assurer que les ports ne se heurtaient pas entre différents tests d'intégration, car ils s'exécutaient en parallèle. Créer un fichier yml au hasard pour chaque test aurait été plus laid, je pense.

Oh, et voici comment vous obtenez le port en cours d'exécution plus tard:

@Override
  public void run(TestConfiguration configuration, Environment environment) throws Exception {
    this.environment = environment;
    // do other stuff if you need to
  }

  public int getPort() {
    return ((AbstractNetworkConnector) environment.getApplicationContext().getServer().getConnectors()[0]).getLocalPort();
  }
12
Natan

Je n'avais jamais travaillé avec dropwizard auparavant, je ne créais que des services simples à l'aide de jersey. J'ai décidé de consulter le manuel d'utilisation et j'ai immédiatement trouvé une description des paramètres.

Manuel de configuration Dropwizard

Vous pouvez remplacer les paramètres de configuration en transmettant des propriétés système Java spéciales lors du démarrage de votre service. Les remplacements doivent commencer par le préfixe dw., Suivi du chemin d'accès à la valeur de configuration remplacée . Par exemple, pour remplacer le port HTTP à utiliser, vous pouvez démarrer votre service de la manière suivante:

Java -Ddw.http.port=9090 server my-config.json

Cela vous convient-il?

5
Mark

Si vous voulez que cela change lors de l'utilisation

-Ddw.server.applicationConnectors[0].port=9090  -Ddw.server.adminConnectors[0].port=9091

Je l'ai utilisé avec la version 1.0.5

2
Vikash Tiwari

Pour Dropwizard 0.6.2, vous pouvez modifier le port par programmation comme indiqué ci-dessous dans votre classe de service.

import com.yammer.dropwizard.config.Configuration;
import com.yammer.dropwizard.config.Bootstrap;
import com.yammer.dropwizard.config.Environment;
import com.yammer.dropwizard.config.HttpConfiguration;
import com.yammer.dropwizard.Service;

public class BlogService extends Service<Configuration> {

public static void main(String[] args) throws Exception {
    new BlogService().run(new String[] {"server"});
}

@Override
public void initialize(Bootstrap<Configuration> bootsrap) {
    bootsrap.setName("blog");
}    


public void run(Configuration configuration, Environment environment) throws Exception {

    HttpConfiguration config = new HttpConfiguration();
    config.setPort(8085);
    config.setAdminPort(8086);
    configuration.setHttpConfiguration(config);
}

}
1
Prasad Revanaki

Pour Dropwizard 0.8.0 -

Votre fichier YAML peut être - 

server:
    type: simple
    connector:
      type: http
      port: 80

Si vous voulez changer les ports en ligne de commande, 

Java -Ddw.server.connector.port=9090 -jar yourapp.jar server yourconfig.yml

La commande ne fonctionnera que si vous avez l'entrée dans le fichier YAML. DW a besoin d'une valeur par défaut qu'il peut remplacer.

1
Jay Khatwani

J'avais besoin de configurer les ports mais je ne pouvais pas les configurer à partir de la ligne de commande. J'ai fini avec cette solution:

public static void main(String[] args) throws Exception {
    String applicationPort = "9090";
    String adminPort = "9091";

    System.setProperty("dw.server.applicationConnectors[0].port", applicationPort);
    System.setProperty("dw.server.adminConnectors[0].port", adminPort);

    new Main().run(args);
}

Ceci est fait en utilisant Dropwizard 1.3.0-rc7

0
Thomas Sundberg