如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?
Posted
技术标签:
【中文标题】如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?【英文标题】:How can I enable java debug on an elastic beanstalk application running a java application? 【发布时间】:2017-12-03 20:02:28 【问题描述】:在运行弹性 beanstalk java 应用程序(不是 tomcat)时,如何启用远程调试?
AWS documentation 通过指定启动 java 进程的命令,展示了如何为应用程序实现它。
但如果我想单独部署 SAME 应用(例如 dev 和 prod 部署),并且只想为 dev 启用远程调试,如何实现?
【问题讨论】:
【参考方案1】:这可以通过使用_JAVA_OPTIONS
环境变量来实现,如here 所述。
环境变量的名称可能因JVM供应商而异,但目前elastic 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 环境配置中分配给您的实例的安全组之一中打开。 如果您只在弹性 beantalk 中运行一个实例,这种方法效果最好,如果您运行多个实例,那么您将不知道将调试器附加到哪个实例。【讨论】:
【参考方案2】:我认为您可以为 Eclipse 使用 aws 工具插件 https://aws.amazon.com/eclipse/
勾选并保存将允许用户远程调试。
或在 AWS 控制台 > Elastic Beanstalk > 配置 > JVM 选项中更改
以上是JDK5之前的JDK
对于 JDK8:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787
【讨论】:
以上是关于如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?
如何在弹性 beantalk 配置上运行 wget cron 命令