容器化 WebLogic 服务器中的调试端口

问题描述

我有一个容器化的 WebLogic 服务器,它运行在我的 docker 主机上,映射了三个端口:5556、6001、7001。我已经部署了我的 Java 产品,一切都成功了。我还根据 WebLogic 上的这篇文章在 8453 上分配了一个调试端口:

https://docs.oracle.com/en/cloud/paas/java-cloud/jscug/enable-jvm-debug-port.html#GUID-C83E051D-3A28-4FE7-8333-20F40A06DAEA

在 Intellij IDE 中,我在“编辑配置...”中的本地主机端口 8453 上配置了我的调试端口。在这里,一切似乎都非常好。但是当我要调试时,连接失败了。

“无法打开调试器端口(本地主机:8453):java.net.connectException“连接被拒绝:连接”

我对 WebLogic 服务器有点天真。这可能是因为不知何故给定的端口未映射导致此错误。如果有人以前有过这样的经历,请帮助我。

解决方法

环境变量 JAVA_OPTIONS 通常设置在 startWeblogic.sh 上。使用 dockerized weblogic 时,需要使用调试选项和地址设置相同的变量。

例如,您可以在 Dockerfile 上设置变量。 以下内容会将 Weblogic 应用程序的调试端口设置为 4000 :

ENV JAVA_OPTIONS $JAVA_OPTIONS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n

这个端口也需要暴露。 例如在 docker-compose.yml 上:

ports:
        - 4000:4000

在 IntelliJ IDEA 上,握手成功,无需使用容器的 IP 地址。

enter image description here