Я пытаюсь удаленно отладить веб-приложение Tomcat на недавно обновленном Tomcat 9.0.13 и Open JDK 11.0.1. Сервер - это Redhat Enterprise Linux 7.6, и я использую Eclipse в окне разработчика Windows 7 для подключения.
Tomcat запускается, и приложение доступно через порт 8080, но при определенных запросах происходит сбой. Итак, на своем Eclipse я настроил удаленное приложение Java со своими данными конфигурации. Когда я пытаюсь подключиться к нему, происходит сбой подключения с
Failed to connect to remote VM. Connection refused.
Я использую порт по умолчанию, 8000, и на сервере Linux netstat -an показывает, что процесс прослушивает этот порт при запуске Tomcat, а не при остановке Tomcat.
Я пробовал telnet из коробки Windows на порт 8000 и получаю
$ telnet c516vefpubrec 8000
Trying XX.XXX.XX.XX...
telnet: Unable to connect to remote host: Connection refused
Когда я делаю то же самое с нашим старым Tomcat 7 + Java 1.8, все проходит успешно. Я пробовал другие порты с тем же результатом.
Может ли это быть ошибкой? Есть ли элемент конфигурации для включения JPDA на Tomcat 9?




У меня была точно такая же проблема. Я запускаю приложение из Centos vm и пытаюсь выполнить отладку с моей машины с Windows.
Мне пришлось зайти в файл catalina.sh на виртуальной машине и внести изменения.
В разделе, в котором говорится, что обрабатывает флаг jpda, переменную JPA_OPTS необходимо изменить на JPDA_OPTS = "-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=*:$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND".
Обратите внимание на *: перед переменной JPDA. Это позволяет любому IP-адресу иметь доступ к удаленной отладке. Я считаю, что по умолчанию он разрешает только локальный хост.
Надеюсь это поможет.
Я полагаю, что синтаксис * начался с Tomcat9? Если вы застряли на удаленной отладке чего-то более старого (надеюсь, это часть усилий по миграции), попробуйте address=0.0.0.0:$YourListingJdwpPort.
У меня была аналогичная проблема с запуском Tomcat 9 в докере. Я указал JPDA_ADDRESS в сборке докера, чтобы разрешить доступ с любого хоста:
ОКРУГ JPDA_ADDRESS=8000 CMD ["catalina.sh", "jpda", "выполнить"]
Если вы работаете в Windows и используете Tomcat как 64-разрядную службу. Тогда нужно было бы внести изменения в реестр Windows. Этот путь реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\<Tomcat9ServiceName>\Parameters\Java
В 32-битной Windows этот путь будет без WOW6432Node. Есть строковое значение Options и удаленную отладку можно включить, добавив туда эти 2 строчки
-Xdebug
-Xrunjdwp:transport=dt_socket,address=*:4446,server=y,suspend=n
если вы не поставите параметр *: to address, то удаленная отладка будет возможна только с локального хоста. *: означает, что вы можете подключиться из любого места/любого хоста к коту для отладки.
Tomcat9ServiceName — это имя службы Tomcat, которое показано на снимке экрана ниже, и обычно вы вводите его во время установки.
Спасибо за ваш ответ @Paul Tucker. Я сменил работу и не имею возможности протестировать ваше решение, но оно имеет смысл, поэтому я его принял.