Maven запускает две разные JVM? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть проект, в котором с бэкэндом Java (X) мне нужно запустить другой проект Maven (Y) (что-то вроде mvn test).Это отлично работает с использованием ProcessBuilder.

Я также недавно добавил конфигурацию JMX для мониторинга Y-JVM, потому что может быть запущено несколько Y-проектов.Конфигурация JMX передается как переменная env MAVEN_OPS, и у меня есть метод для генерации уникальных случайных портов в диапазоне.Я также могу подключиться к JMX через случайно сгенерированный порт из моего X-бэкэнда, но проблема в том, что это работает только тогда, когда проект находится в состоянии сборки.Сразу после того, как сборка завершена, и maven должен «запустить» службу, я получил эту ошибку:

[INFO] --- gatling-maven-plugin: 2.2.4: execute (test1)@ xxxxxxx - удаление источников из предыдущего анализа из-за несовместимого CompileSetup.

[INFO] ------------------------------------------------------------------------

[INFO] СБОЙ СТРОИТЕЛЬСТВА

[INFO] ------------------------------------------------------------------------

[INFO] Общее время:15,388 s

[INFO] Окончание: 2018-12-27T09: 31: 10 + 01: 00

[INFO] Окончательная память: 15M / 363M

[INFO] ------------------------------------------------------------------------

[ОШИБКА] Не удалось выполнить цель io.gatling: gatling-maven-plugin: 2.2.4:выполнить (test1) в проекте xxxxxxx: Xxxxxx не выполнен.Процесс завершился с ошибкой: 1 (Выходное значение: 1) -> [Справка 1] [ОШИБКА]

[ОШИБКА] Чтобы увидеть полную трассировку стека ошибок, перезапустите Maven с ключом -e,

[ОШИБКА] Перезапустите Maven, используя ключ -X, чтобы включить полное ведение журнала отладки.

[ОШИБКА]

[ОШИБКА] Для получения дополнительной информации об ошибках и возможных решениях, пожалуйста, прочитайте следующие статьи:

[ОШИБКА] [Помощь 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException Ошибка: исключение выдается агентом: java.rmi.server.ExportException: порт уже используется: xxxx;вложенное исключение: java.net.BindException: адрес уже используется (сбой привязки)

До этого момента я мог получать метрики с помощью JMX.Итак, теперь мой вопрос заключается в том, использует ли maven разные JVM в состоянии сборки и выполнения?Почему мой порт уже используется ???

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Создание уникального диапазона портов в проекте Y не гарантирует, что не произойдет коллизия с портом, используемым в проекте X. Вместо того, чтобы заранее создавать диапазон портов, вы можете создавать их динамически в нужный моментподключиться к ним.Просто убедитесь, что вы перехватили все исключения и повторите попытку с другим портом.Например, попытайтесь подключиться к 8080, в случае неудачи попробуйте 8081, затем 8082 и т. Д., Пока соединение не будет установлено.

0 голосов
/ 27 декабря 2018

Каждая Java-программа будет выполняться в своем собственном JVM , поэтому ответьте на свой вопрос: да, Maven будет выполнять в своей собственной JVM.или какое-то другое приложение.Вам может понадобиться явно определить порт для каждого сервера.Вам нужна помощь в контексте Gatling, так как я вижу журналы Gatling во фрагменте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...