Я пытаюсь подключить мой отладчик к Wildlfy, работающему на Open JDK 11.
Несмотря на то, что Wildfly говорит:
Listening for transport dt_socket at address: 8787
Моя IDE (IntelliJ IDEA CE 2018.1) утверждает, что не подключается:
Unable to open debugger port (localhost:8787): java.io.IOException "handshake failed - connection prematurally closed"
.
Я standalone.sh --debug
Wildfly через standalone.sh --debug
приводит к следующему JAVA_OPTS
:
-server
-Xms64m
-Xmx512m
-XX:MetaspaceSize=96M
-XX:MaxMetaspaceSize=256m
-Djava.net.preferIPv4Stack=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djava.awt.headless=true
-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED
--add-modules=java.se
Что-то изменилось в Java 9/10/11? Удаленная отладка с точно такой же настройкой прекрасно работает при использовании Oracle JDK 8.
Используя telnet, я могу подтвердить, что порт 8787
действительно недоступен.
Обновление после прочтения комментария @ehsavoie: netstat -ln
на сервере под управлением Wildfly показывает:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:8787 0.0.0.0:* LISTEN
Таким образом, очевидно, что в OpenJDK 11 порт отладки теперь привязан к localhost по умолчанию.