我正在开发的web应用程序是非常大的和模块化的,目前ear在远程机器上是以爆炸的形式存在,而被调试的cod是在另一台远程计算机上进行的,而且由于该体系结构复杂,不能安装在同一台机器上,所以我无法进行热代码替换。任何建议都会很有帮助.我们使用的是JBoss7.x和java1.8以及eclipse。
发布于 2022-06-08 10:10:59
通过在domain.xml中设置以下内容,我在Wildfly/Jboss中定期进行这种类型的调试
<server-groups>
<server-group name="s1" profile="s1">
<jvm name="default">
<heap size="3g" max-size="3g"/>
<jvm-options>
<option value="-agentlib:jdwp=transport=dt_socket,address=remote_server_name_or_ip:8000,server=y,suspend=n"/>
...这里的关键是remote_server_name_or_ip:8000
注意,您需要在端口号之前指定remote_server_name_or_ip。
如果没有这个,Wildfly/JBoss将只在localhost上监听。还可以指定0.0.0.0,以便调试过程侦听所有可用IP地址。
在Eclipse中,只需指定远程服务器IP地址和端口即可。
热交换是自动的,只要你不改变方法签名,等等。
这个逻辑并不局限于JBoss或Wildfly。您可以使用此方法连接到运行在另一台计算机上的任何Java代码。
例如,请参阅我的答案,其中解释了如何允许使用Tomcat进行远程调试:
https://stackoverflow.com/questions/55277504
复制相似问题