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