首页 文章

远程调试Bluemix CF Java buildpack应用程序

提问于
浏览
0

我在IBM Bluemix上部署了一个独立的Java应用程序作为Cloud Foundry Java buildpack .

有没有办法在Eclipse中对它执行远程调试?我只能找到用于远程调试Java Liberty buildpack应用程序的文档 .

2 回答

  • 1

    另一个答案中提到的套接字监听方式当然很方便,但是希望您将一个公共IP分配给您的调试机器(或者您必须在路由器上配置一些端口转发) . 这可能并不总是可行的 .

    因此,另一种方法是在Java应用程序上启用调试并使用ssh端口转发连接到应用程序实例 . 以下是步骤

    • 通过设置值为 {enabled: true} 的环境变量 JBP_CONFIG_DEBUG 并重新启动应用程序来启用java调试 .

    • 通过JDWP为调试框架设置SSH隧道

    cf ssh -N -T -L 8000:localhost:8000 <APP_NAME>

    • 打开ssh隧道后,在 localhost:8000 上使用eclipse中的Socket Attach调试类型

    cf ssh 之前的先决条件: cf apicf logincf target

  • 2

    https://docs.cloudfoundry.org/buildpacks/java/java-tips.html#debugging的Java buildpack文档中有一些说明

    • 在Eclipse中打开您的项目 .

    • 右键单击项目,转到Debug as并选择Debug Configurations .

    • 创建新的远程Java应用程序 .

    • 确保选择了项目,从“连接类型”下拉列表中选择“标准(套接字侦听)”并设置端口 . 如果您正在运行防火墙,请确保此端口已打开 .

    • 单击“调试” .

    调试器现在应该正在运行 . 如果切换到Debug透视图,您应该会在Debug面板中看到您的应用程序,它应该说 Waiting for vm to connect at port .

    接下来,将您的应用程序推送到Cloud Foundry,并指示Cloud Foundry使用以下说明连接到本地计算机上运行的调试器:

    • 编辑manifest.yml文件 . 将实例计数设置为1.如果将此值设置为大于1,则多个应用程序会尝试连接到调试器 .

    • 同样在manifest.yml中,添加env部分并创建一个名为JAVA_OPTS的变量 .

    • 将远程调试器配置添加到JAVA_OPTS变量: -agentlib:jdwp=transport=dt_socket,address=YOUR-IP-ADDRESS:YOUR-PORT .

    • 保存manifest.yml文件 .

    • 运行cf push .

    完成后,您应该看到您的应用程序已启动,现在已连接到IDE中运行的调试器 . 您现在可以像在本地运行时一样添加断点并查询应用程序 .

相关问题