Вопрос

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

Это было полезно?

Решение

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

http:
  port: 9000
  adminPort: 9001
.

См. см. см. http://www.dropwizard.io/0.9.2/docs/Руководство / конфигурация.html # http для получения дополнительной информации.

Редактировать

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

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

Другие советы

из командной строки, вы можете установить их таким образом, в 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 (свойство системы имеет приоритетность, в любом случае).По крайней мере, это происходит со мной в Dropizard 0,7.Пример конфигурации порта YAML:

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

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

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

Это то, что я сделал для моих испытаний (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();
  }
.

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

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

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

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

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

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

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

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

Для 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);
}

}
.

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

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

Это сделано с помощью Dropwizard GeneracodicCodeCode

для 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 требует значения по умолчанию, которое он может переопределить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top