Удаленная отладка в Tomcat 7 и CentOS 7 - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь настроить удаленную отладку с IntelliJ на Tomcat, но пока забываю IntelliJ, потому что я еще не начал с этого. Сначала я пытаюсь настроить его на сервере, я пытаюсь настроить tomcat, чтобы он мог принимать эти подключения, но когда я добавляю флаги / аргументы jdwp, tomcat не запускается со следующей ошибкой.

May 27 23:02:58 lab5 server: ERROR: transport error 202: bind failed: Permission denied
May 27 23:02:58 lab5 server: ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)    
May 27 23:02:58 lab5 server: JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
May 27 23:02:58 lab5 systemd: tomcat.service: main process exited, code=exited, status=2/INVALIDARGUMENT        
May 27 23:02:58 lab5 systemd: Unit tomcat.service entered failed state.
May 27 23:02:58 lab5 systemd: tomcat.service failed.

Я пробовал несколько способов.

-Xdebug -Xrunjdwp:transport=dt_socket,address=myec2privateip:2345,server=y,suspend=n \
-agentlib:jdwp=transport=dt_socket,address=myec2privateip:2345,suspend=y,server=n \
-agentlib:jdwp=transport=dt_socket,address=myec2privateip:2345,suspend=y,server=y \
-agentlib:jdwp=transport=dt_socket,address=myec2privateip:2345,suspend=n,server=y \
-agentlib:jdwp=transport=dt_socket,address=myec2privateip:2345,suspend=n,server=n \
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=myec2privateip:2000,suspend=n \
# JPDA_ADDRESS=myec2privateip:32702
# JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32702"
-agentlib:jdwp=transport=dt_socket,server=y,address=8000 \
-agentlib:jdwp=transport=dt_socket,server=y,address=*:8000,suspend=n \
JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
agentlib:jdwp=transport=dt_socket,address=localhost:39621,suspend=n,server=y -Xdebug
-Xdebug -agentlib:jdwp=transport=dt_socket,address=2345,server=y,suspend=n -Djava.security.debug=all

Для портов, которые я пробовал выше, на них ничего не работает. Это не проблема тайм-аута подключения, это не проблема брандмауэров и т. Д. c.

Tomcat находится на экземпляре AWS EC2 со следующим CentOS AMI "CentOS Linux 7 x86_64 HVM EBS 1602 "

Tomcat, который я установил, взят из yum," tomcat-7.0.92-1.el7.noarch "

Java версия

  • Версия OpenJDK «1.8.0_242»
  • Среда выполнения OpenJDK (сборка 1.8.0_242-b08)
  • 64-разрядная серверная виртуальная машина OpenJDK (сборка 25.242-b08, смешанный режим)

Tomcat работает отлично, если я удалю добавляемые мной аргументы.

Почему может возникнуть эта ошибка и почему я не могу заставить Tomcat запускаться с любым из них?

Я устанавливал его в основном в /etc/sysconfig/tomcat под JAVA_OPTS, но пробовал и в других местах.

1 Ответ

0 голосов
/ 28 мая 2020

Для всех, кто делает это на Centos7 и имеет ту же проблему, после того, как попробовал миллион вещей, это то, что решило ее ... как ответил Mikemati c здесь { ссылка }

Это не имеет ничего общего с конфигурацией Tomcat. Это SE Linux в ящиках RHEL и CentOS, предотвращающих права чтения и записи для папок, не связанных с установкой Tomcat по умолчанию. Чтобы исправить это, установите инструмент управления SE Linux и установите permissive для tomcat_t SE Linux type.

yum install selinux-policy-devel

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