如何在运行java应用程序的弹性beanstalk应用程序上启用java debug?

时间:2017-06-29 23:49:11

标签: java debugging jvm elastic-beanstalk

运行弹性beanstalk java应用程序(不是tomcat)时,如何启用远程调试?

AWS documentation 通过指定启动java进程的命令,显示如何为应用程序实现它。

但是如果我想单独部署SAME应用程序(例如dev和prod部署),并且只想为dev启用远程调试,那么如何实现呢?

2 个答案:

答案 0 :(得分:3)

这可以通过使用_JAVA_OPTIONS环境变量来实现,如here所述。

环境变量的名称可能因JVM供应商而异,但目前弹性beanstalk使用OpenJDK,它尊重_JAVA_OPTIONS

[webapp@ip-XXXXXXX ~]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

您只能在要启用调试的弹性beanstalk环境中设置此环境变量。例如

_JAVA_OPTIONS=-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5001,suspend=n

注意:

  • 您选择的端口必须在分配给该弹性beanstalk环境配置中的实例的其中一个安全组中打开。
  • 如果您只在弹性beanstalk中运行一个实例,那么这种方法效果最好,如果您运行多个实例,那么您将不知道将调试器附加到哪个实例。

答案 1 :(得分:0)

我认为您可以将aws工具插件用于Eclipse https://aws.amazon.com/eclipse/

enter image description here

选中该框并保存,将允许用户进行远程调试。

或在AWS控制台> Elastic Beanstalk>配置> JVM选项中更改

enter image description here

以上是JDK5之前的JDK

对于JDK8: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787