在 IntelliJ 中远程调试 Wildfly 应用程序

位置:首页>文章>详情   分类:Java教程   阅读(89)   2023-12-08 15:34:57

远程调试 Java 应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java 支持开箱即用的远程调试:目标应用程序必须使用 -agentlib:jdwp[=options] 选项执行,该选项加载 Java Debug Wire Protocol (jdwp) 库,允许使用例如套接字连接进行远程调试。在这篇简短的文章中,您将学习如何使用 IntelliJ 开始调试部署到 Wildfly 服务器的 Web 应用程序。

应用程序

出于演示目的,可以使用一个非常简单的应用程序:它包含一个(入口)JSP 文件和一个 Java Servlet:

Wildfly 应用服务器

在此示例中,您可以使用 Wildfly Servlet-Only Distribution。从这里获取:http://wildfly.org/downloads/

配置 Wildfly 以进行远程调试

下载并提取服务器后,请按照以下步骤操作:

  • 编辑WILDFLY_HOME/standalone/configuration/standalone.xml并将管理控制台的套接字绑定端口从9990更改为9991(这可以在socket-binding-group 元素)。使用默认端口设置,您将在运行服务器时看到异常:
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.serverManagement.controller.management.http: org.jboss.msc.service.StartException in service jboss.serverManagement.controller.management.http: java.net.BindException: Address already in use: bind /127.0.0.1:9990
  • 导航到 WILDFLY_HOME/bin 并使用 standalone.bat 参数运行 standalone.sh (Windows) 或 --debug (Linux)。此参数将强制服务器以调试模式运行,从而启用远程调试。传递给 JVM 的额外参数您会在控制台启动期间注意到:
JAVA_OPTS: "-client -Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

命令:agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n 加载jwdp 库并在端口8787 上侦听套接字连接。

  • 通过将 webapp-demo.war 文件复制到 WAR 来部署应用程序(例如 WILDFLY_HOME/standalone/deployments)。验证应用程序是否已部署。

在 IntelliJ 中远程调试 Wildfly 应用程序

假设应用程序运行正常,在IntelliJ中打开这个应用程序的源代码来远程调试它。为此,您需要为项目创建运行配置。

  • 打开Run > Edit configurations 并添加新配置。在可用配置列表中找到 JBoss 并选择 Remote。如果尚未配置应用程序服务器,请通过将 JBoss 主目录指向 Wildfly 安装目录 (WILDFLY_HOME) 来配置它:
  • 现在更改配置的一些默认设置并保存。在Management port选项卡中将9991设置为Server,在Port中将设置为8787 >$ Startup/Connection 配置选项卡:
  • 运行调试配置并等待 IntelliJ 连接到 Wildfly 服务器。
  • 在您要调试的 Java Servlet(例如 MyServlet.java)或任何 JSP 文件中设置断点并在服务器上执行代码,例如通过调用有效的 servlet URL。等待调试器命中您的断点:

享受在 IntelliJ 中远程调试 Wildfly 应用程序吧!

标签: Java教程
地址:https://www.cundage.com/article/jcg-remote-debugging-wildfly-application-intellij.html