Подтвердить что ты не робот

Изменение портов по умолчанию Dropwizard

У меня есть служба службы REST на основе Dropwizard, работающая на портах 8080 по умолчанию (служба) и 8081 (admin), мне нужно изменить порты по умолчанию на то, что используется менее часто, я не могу найти какую-либо информацию для сделайте это, может кто-нибудь, пожалуйста, назовите меня сделать это?

4b9b3361

Ответ 1

Вы можете обновить порты в файле конфигурации yaml:

http:
  port: 9000
  adminPort: 9001

Подробнее см. http://www.dropwizard.io/0.9.2/docs/manual/configuration.html#http.

ИЗМЕНИТЬ

Если вы переместились в Dropwizard 0.7.x, 0.8.x, 0.9.x, вы можете использовать следующее:

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

Ответ 2

Из командной строки вы можете установить их таким образом, в Dropwizard 0.6:

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

Если вы используете Dropwizard 0.7, свойства системы задаются следующим образом:

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

Кажется, что, если вы настраиваете порты через системные свойства, вам также нужно установить их в yml (свойство системы имеет приоритет, во всяком случае). По крайней мере, это происходит со мной в Dropwizard 0.7. Пример конфигурации порта YAML:

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

Если вы не поместите эти порты в YAML, Dropwizard жалуется:

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

Ответ 3

Это то, что я сделал для своих тестовых приложений (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 предоставляет доступный случайный порт.

Я знаю, что это не очень, но не смог найти лучшего способа сделать это программно. Мне нужно было убедиться, что порты не сталкиваются между различными интеграционными тестами, потому что они работают параллельно. Создание yml файла случайным образом для каждого теста было бы более уродливым, я полагаю.

О, и вот как вы позже получите рабочий порт:

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

Ответ 4

Я никогда раньше не работал с dropwizard, создавая простые сервисы с использованием трикотажа. Я решил посмотреть руководство пользователя и сразу нашел описание настроек.

Руководство по конфигурации Dropwizard

Вы можете переопределить параметры конфигурации, передав специальные свойства системы Java при запуске службы. Переопределения должны начинаться с префикса dw., А затем путь к переопределенному значению конфигурации. Например, чтобы переопределить используемый HTTP-порт, вы можете запустить службу следующим образом:

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

Он подходит для вас?

Ответ 5

Если вы хотите, чтобы он был изменен во время выполнения, используйте

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

Я использовал его с версией 1.0.5

Ответ 6

Для Dropwizard 0.8.0 -

Ваш файл YAML может быть -

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

Если вы хотите изменить порты из командной строки,

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

Команда будет работать, только если у вас есть запись в файле YAML. DW требуется значение по умолчанию, которое оно может переопределить.

Ответ 7

Для Dropwizard 0.6.2 вы можете программно изменить порт, как показано ниже в своем классе обслуживания.

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

}