【问题标题】:Remote debugging in Tomcat 7 and CentOS 7Tomcat 7 和 CentOS 7 中的远程调试
【发布时间】:2020-09-15 04:01:05
【问题描述】:

我正在尝试设置从 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

对于我上面尝试过的端口,它们上没有运行任何东西。这不是连接超时的问题,也不是防火墙等问题。

Tomcat 位于具有以下 CentOS AMI“CentOS Linux 7 x86_64 HVM EBS 1602”的 AWS EC2 实例上

我安装的Tomcat来自yum,“tomcat-7.0.92-1.el7.noarch”

Java 版本

  • OpenJDK 版本“1.8.0_242”
  • OpenJDK 运行时环境(内部版本 1.8.0_242-b08)
  • OpenJDK 64 位服务器 VM(内部版本 25.242-b08,混合模式)

如果我删除我一直添加的参数,Tomcat 工作得非常好。

为什么会发生这个错误,为什么我不能让 Tomcat 启动其中任何一个?

我一直将它主要设置在/etc/sysconfig/tomcatJAVA_OPTS,但也尝试过其他位置。

【问题讨论】:

    标签: java tomcat centos centos7


    【解决方案1】:

    对于在 Centos7 上执行此操作并遇到相同问题的其他人,在尝试了一百万件事之后,这就是解决它的问题...正如 Mikematic 在这里回答的 https://stackoverflow.com/a/56536805/13223528

    这与 Tomcat 配置无关。它是 RHEL 和 CentOS 机器上的 SELinux,阻止了对与默认 tomcat 安装无关的文件夹的读写权限。要解决此问题,请安装 SELinux 管理工具并为 tomcat_t SELinux 类型设置 permissive。

    yum install selinux-policy-devel
    
    semanage permissive -a tomcat_t
    

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 2017-02-03
      • 2015-11-20
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2011-07-07
      相关资源
      最近更新 更多