Debugging 如何在版本中远程调试附加KeyClope>;8.
我最近将KeyClope升级到了版本9,在Docker中运行时,我在连接远程调试器时遇到了问题。我怀疑这与keydape对java9+的底层升级有关 我得到的错误是:Debugging 如何在版本中远程调试附加KeyClope>;8.,debugging,keycloak,Debugging,Keycloak,我最近将KeyClope升级到了版本9,在Docker中运行时,我在连接远程调试器时遇到了问题。我怀疑这与keydape对java9+的底层升级有关 我得到的错误是: 握手失败-连接过早关闭 我在Docker中正确映射了我的端口(我可以运行KeyClope版本7,并且连接得很好)。事实证明,Java 9在调试方面引入了安全增强功能。资料如下: 在我的KeyClope docker compose服务定义中,我能够在环境下添加: 调试端口:“*:8787” 这就解决了问题。我现在可以调试了。对于K
握手失败-连接过早关闭
我在Docker中正确映射了我的端口(我可以运行KeyClope版本7,并且连接得很好)。事实证明,Java 9在调试方面引入了安全增强功能。资料如下: 在我的KeyClope docker compose服务定义中,我能够在
环境下添加:
调试端口:“*:8787”
这就解决了问题。我现在可以调试了。对于KeyClope 7版 我正在使用此命令运行docker容器,以便在端口
1234
docker run -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin
-e 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=1234,server=y,suspend=n"
-p 8080:8080 -p 1234:1234 jboss/keycloak:7.0.0
使用远程配置将其连接到IntelliJ
-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\u socket,server=y,suspend=n,address=1234
docker run -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin
-e 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=1234,server=y,suspend=n"
-p 8080:8080 -p 1234:1234 jboss/keycloak:7.0.0
*注意:JAVA\u 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
方法取决于您使用的是
standalone.sh
(或者.bat)还是docker映像
如果使用的是standalone.sh
,则可以使用--debug
选项,该选项记录在standalone.sh-h
中:
standalone.sh --debug '*:8000'
(*
允许从任何主机访问。普通--debug 8000
只允许从本地主机访问)
对于docker图像,这将是一种方法,它至少在KeyClope 11.0.2中起作用:
$ git diff
diff --git a/docker-compose/keycloak-standalone/docker-compose.yml b/docker-compose/keycloak-standalone/docker-compose.yml
index fcf3a52..93b7209 100644
--- a/docker-compose/keycloak-standalone/docker-compose.yml
+++ b/docker-compose/keycloak-standalone/docker-compose.yml
@@ -11,11 +11,14 @@ services:
environment:
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
+ DEBUG: "true"
+ DEBUG_PORT: "*:8000"
ports:
- 8080:8080
+ - 8000:8000
volumes:
- data:/opt/jboss/keycloak/standalone/data
(同样,
*
允许从任何主机进行访问。)您可以通过使用Dockerfile创建自己的映像来替换调试参数
Dockerfile:
FROM jboss/keycloak:latest
ENV DEBUG true
ENV DEBUG_PORT *:8787
EXPOSE 8080 8443 9990 8787
ENTRYPOINT ${JBOSS_HOME}/../tools/docker-entrypoint.sh
docker build -t local/debug-keycloack ..
docker run -p 8080:8080 -p 8443:8443 -p 9990:9990 -p 8787:8787 --name debug-keycloack local/debug-keycloack
控制台:
FROM jboss/keycloak:latest
ENV DEBUG true
ENV DEBUG_PORT *:8787
EXPOSE 8080 8443 9990 8787
ENTRYPOINT ${JBOSS_HOME}/../tools/docker-entrypoint.sh
docker build -t local/debug-keycloack ..
docker run -p 8080:8080 -p 8443:8443 -p 9990:9990 -p 8787:8787 --name debug-keycloack local/debug-keycloack
这是从第12版开始将要记录的方法。看到没有必要创建自己的形象…@PeterV.Mørch这只是一个选择。启用远程调试的另一种方法我很确定,至少从11.0.2开始,您还需要设置环境变量
DEBUG:“true”
。添加DEFAULT\u MODULAR\u JVM\u选项
将比更新JAVA\u选项更好-e DEFAULT\u MODULAR\u JVM\u OPTIONS=“-Xdebug-Xrunjdwp:transport=dt\u socket,server=y,suspend=n,address=8000”