Question

J'ai un Dropwizard basée Maillot de service de REPOS en cours d'exécution sur les ports par défaut 8080(service) et 8081(admin), j'ai besoin de changer les ports par défaut pour quelque chose qui est moins couramment utilisé, je ne suis pas en mesure de trouver toute l'information pour ce faire , quelqu'un peut-il svp m'indiquer le faire ?

Était-ce utile?

La solution

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

http:
  port: 9000
  adminPort: 9001

voir http://www.dropwizard.io/0.9.2/docs/Manuel / 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 ce qui suit:

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

Autres conseils

de la 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 de cette façon:

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

Je semble que si vous configurez des ports via les propriétés du système, vous devez également les définir dans le YML (la propriété système prend sa priorité, de toute façon).Au moins cela me arrive dans Dropwizard 0.7.Exemple de la configuration du port YAML:

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

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

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

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 n'ai pas trouvé de meilleure façon de le faire par programme.Je devais veiller à ce que les ports ne se heurtent pas entre des tests d'intégration différents, car ils fonctionnent en parallèle.Création d'un fichier YML au hasard pour chaque test aurait été plus actionné, je crois.

Oh et c'est ainsi que vous obtenez le port de course plus tard sur:

@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();
  }

Je ne travaille jamais avec Dropwizard avant, créant uniquement des services simples utilisant Jersey.J'ai décidé de voir le manuel de l'utilisateur et j'ai immédiatement trouvé une description des paramètres.

Manuel de configuration Dropwizard

Vous pouvez remplacer les paramètres de configuration en passant des propriétés spéciales du système Java lors du démarrage de votre service.Les substituts doivent commencer avec préfixe DW., Suivi du chemin de la valeur de la configuration étant remplacé. Par exemple, pour remplacer le port HTTP à utiliser, vous pouvez démarrer votre service comme celui-ci:

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

Est-ce qu'il vous convient?

Si vous voulez que cela soit changé à l'utilisation de l'exécution

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

Je l'ai utilisé avec la version 1.0.5

pour Dropwizard 0.6.2 Vous pouvez modifier le port programmatiquement comme 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);
}

}

J'avais besoin de définir les ports mais je n'arrivais pas à les définir à 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

pour Dropwizard 0.8.0 -

Votre fichier YAML peut être -

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

Si vous souhaitez modifier les ports de la 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'elle peut remplacer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top