У меня есть служба службы REST на основе Dropwizard, работающая на портах 8080 по умолчанию (служба) и 8081 (admin), мне нужно изменить порты по умолчанию на то, что менее широко используется, я не могу найти любую информацию, чтобы сделать это, может кто-нибудь, пожалуйста, назовите меня сделать это?Изменить порты по умолчанию Dropwizard
ответ
Вы можете обновить порты в вашем конфигурационном файле YAML:
http:
port: 9000
adminPort: 9001
См http://www.dropwizard.io/0.9.2/docs/manual/configuration.html#http для получения дополнительной информации.
EDIT
Если вы мигрировали в Dropwizard 0.7.x, 0.8.x, 0.9.x вы можете использовать следующее:
server:
applicationConnectors:
- type: http
port: 9000
adminConnectors:
- type: http
port: 9001
Я никогда раньше не работал с dropwizard, создавая простые сервисы с использованием трикотажа. Я решил посмотреть руководство пользователя и сразу нашел описание настроек.
Dropwizard configuration manual
Вы можете изменить параметры конфигурации, передавая специальные системные свойства Java при запуске службы. Переопределения должны начинаться с префикса dw., А затем путь к переопределенному значению конфигурации. Например, чтобы переопределить HTTP порт для использования, вы можете начать свой сервис, как это:
java -Ddw.http.port=9090 server my-config.json
Подходит ли для вас?
из командной строки, вы можете установить их таким образом, в 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.
Ищите это целую вечность! благодаря! –
Это то, что я сделал для моих тестовых приложений (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 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 требует значения по умолчанию, которое оно может переопределить.
Это сработало для меня. Я установил оба в один и тот же порт. – stuart
Для 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);
}
}
Если вы хотите, чтобы изменить при использовании времени выполнения
-Ddw.server.applicationConnectors[0].port=9090 -Ddw.server.adminConnectors[0].port=9091
Я использовал его с версией 1.0.5
мне нужно установить порты, но я не мог установите их из командной строки. Я закончил с этим решением:
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 1.3.0-rc7
- 1. По умолчанию закрытые порты Messenger
- 2. DropWizard - невозможно изменить шаблон запроса по умолчанию в журнале доступа
- 3. MariaDB Galera изменяет порты по умолчанию
- 4. по умолчанию Свойства Именования стратегии в dropwizard
- 5. Каковы порты tcp по умолчанию, используемые GridGain
- 6. Zookeeper изменяет кворум по умолчанию и лидирующие порты выборов
- 7. джерси (dropwizard) тип носителя по умолчанию для @Produces и @Consumes
- 8. Изменить значок по умолчанию
- 9. изменить по умолчанию pythonpath
- 10. Изменить по умолчанию Charset
- 11. Как изменить по умолчанию браузер по умолчанию для Android умолчанию
- 12. В DropWizard у нас есть файл конфигурации YAML по умолчанию?
- 13. Как сделать @JsonSnakeCase по умолчанию для конфигурации в Dropwizard
- 14. Как я могу переопределить обработку исключений Dropwizard по умолчанию?
- 15. Почему все порты, опубликованные по умолчанию с этим изображением Docker
- 16. Кластеризация Akka (2.4) использует любые порты по умолчанию, кроме 2551?
- 17. Как определить все порты по умолчанию, используемые Hadoop, и изменить их все?
- 18. Изменить Quick-Fix 'Изменить видимость по умолчанию'
- 19. Изменить исходный корень по умолчанию
- 20. Изменить по умолчанию путь Maven?
- 21. изменить пользователь PSQL по умолчанию
- 22. RecognizerIntent изменить язык по умолчанию
- 23. Изменить значение по умолчанию @ html.DisplayNameFor
- 24. Изменить слайд-шоу по умолчанию
- 25. Изменить цвет по умолчанию popupPanel?
- 26. Изменить DrawingManager по умолчанию курсор
- 27. Изменить общие настройки по умолчанию
- 28. Как изменить message.properties по умолчанию
- 29. Rails: изменить путь по умолчанию
- 30. Android изменить браузер по умолчанию
Спасибо, но только установки этих портов в .yml файла в моем проекте не меняются портов по умолчанию, он по-прежнему работает на 8080 Есть ли файл yaml по умолчанию, отличный от того, который у меня есть для моего сервиса, который мне нужно использовать для ввода этих новых значений? – user1965449
Странный - он работает для меня. Как вы указываете свой файл конфигурации? Должно быть в командной строке Java при запуске службы ... – condit
У меня есть .yml-файл непосредственно под папкой проекта в eclipse и запускаю службу, используя живую банку java -jar myservice.jar server, I Не указывайте его с помощью командной строки, есть ли здесь два файла конфигурации? один для службы и один для конфигурации? Для начала я следую руководству. Этот файл конфигурации совпадает с файлом .yml, который в руководстве упоминается для примера Hello World? – user1965449