java - 为 Weblogic 集群中的节点启用调试

标签 java debugging weblogic weblogic-10.x jdwp

我有一个 Weblogic (10.3.5) AdminServer 实例和两个作为集群一部分运行的节点。

我按照此 page 上的说明进行操作并在 startweblogic.cmd 中添加了一个设置以在端口 4000 上启用调试。一切都很好,我可以连接到此端口进行调试。

但是当我使用以下命令启动集群中的节点时,我收到一条错误消息,指出 4000 已用完。这是我用来启动节点的命令和我收到的错误

c:\Oracle\Middleware\user_projects\domains\base_domain\bin\startManagedWebLogic.cmd server1 http://adminServer_host_name:7001

starting weblogic with Java version:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b50)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
Starting WLS with line:
C:\Oracle\MIDDLE~1\JDK160~1\bin\java -client   -Xms256m -Xmx512m -XX:CompileThre
shold=8000 -XX:PermSize=1028m  -XX:MaxPermSize=1024m -Dweblogic.Name=myhealth1 -
Djava.security.policy=C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\weblogic.policy -
Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n -
Xverify:none  -da -Dplatform.home=C:\Oracle\MIDDLE~1\WLSERV~1.3 -Dwls.home=C:\Or
acle\MIDDLE~1\WLSERV~1.3\server -Dweblogic.home=C:\Oracle\MIDDLE~1\WLSERV~1.3\se
rver   -Dweblogic.management.discover=false -Dweblogic.management.server=http://
DJX09cs1.co.ihc.com:7001  -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw
.logErrorsToConsole=false -Dweblogic.ext.dirs=C:\Oracle\MIDDLE~1\patch_wls1035\p
rofiles\default\sysext_manifest_classpath;C:\Oracle\MIDDLE~1\patch_ocp360\profil
es\default\sysext_manifest_classpath -Dweblogic.management.username=weblogic -Dw
eblogic.management.password=weblogic1  weblogic.Server
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../.
./../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_E
RROR_TRANSPORT_INIT(197)

这很疯狂,因为节点可能正在尝试在管理服务器设置的同一端口 4000 上启用调试。如何设置才能仅在节点而不是管理服务器上启用调试功能?我尝试将以下配置添加到 startmanagementserver.cmd 等,但没有骰子。

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

最佳答案

修改startWebLogic.cmd就可以了。但问题是您正在一个域中运行,其服务器与管理服务器不同,这不是您提供的“页面”所涵盖的情况。

要解决此问题,您唯一需要做的就是在 startWebLogic.cmd 中设置 JAVA_OPTIONS 之前添加保护条件。

类似于:

if serverName=='managedServer1' then
  JAVA_OPTIONS="....debug_options....normal_options"
else
  JAVA_OPTIONS="normal_options"
endif

或者

if serverName=='managedServer1' then
  JAVA_OPTIONS="....debug_options....%JAVA_OPTIONS%"
endif

抱歉,我不记得具体的语法规则,请检查您的 Windows 平台的详细信息。

关于java - 为 Weblogic 集群中的节点启用调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751958/

相关文章:

java - @OneToOne 关联无法在查询中急切加载

Java JPA @OneToMany 需要返回@ManyToOne?

Android 上的 JavaScript 随机停止工作

node.js - 如何使用 Atom 的 Node 调试器添加断点?

java - Weblogic 8.1 - 最简单的耳朵 - 无法理解的错误消息

ssl - JMSCMQ0001 : IBM MQ call failed with compcode '2' ('MQCC_FAILED' ) reason '2400' ('MQRC_UNSUPPORTED_CIPHER_SUITE' )

java - 我在第 : if ( args[0]. 行的 args[0] 中遇到异常数组索引超出范围等于 ("t") || args[0].equals ("time") ) 当我运行下面的代码时

java - 重置后,以不同方式声明和初始化的持久数组会发生什么情况?

javascript - IE 开发者工具断点不起作用

java - 从独立的 Java 客户端以编程方式创建 WebLogic 用户