簡體   English   中英

遠程調試Tomcat 7和CentOS 7

[英]Remote debugging in Tomcat 7 and CentOS 7

我正在嘗試設置從 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 運行時環境(build 1.8.0_242-b08)
  • OpenJDK 64 位服務器 VM(構建 25.242-b08,混合模式)

如果我刪除我一直在添加的 arguments,Tomcat 工作得很好。

為什么會發生此錯誤,為什么我不能讓 Tomcat 開始使用這些錯誤?

我主要在JAVA_OPTS下的/etc/sysconfig/tomcat中設置它,但也嘗試過其他位置。

對於在 Centos7 上執行此操作並遇到相同問題的任何其他人,在嘗試了一百萬次之后,這就是解決問題的方法......正如 Mikematic 在這里回答的那樣https://stackoverflow.com/a/56536805/13223528

這與 Tomcat 配置無關。 它是 RHEL 上的 SELinux 和 CentOS 框,阻止對與默認 tomcat 安裝無關的文件夾的讀寫權限。 要解決此問題,請安裝 SELinux 管理工具並為 tomcat_t SELinux 類型設置許可。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM