2013-12-23 32 views
2

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

我按照这个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将AdminServer中设置为调试。我该如何设置它才能在节点上单独启用调试功能,而不是管理服务器?我尝试添加以下配置startmanagedserver.cmd等,但没有骰子。

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

回答

2

修改startWebLogic.cmd是好的。但问题在于,您运行的服务器与管理服务器的服务器不同,您提供的“网页”不属于这种情况。

解决此问题的唯一方法是在设置startWebLogic.cmd中的JAVA_OPTIONS之前添加防护条件。

喜欢的东西:

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

OR

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

对不起,我不能记得确切的语法规则对于这一点,请检查您的Windows平台的详细信息。

0

我不能似乎得到ifelse工作,所以我有两个IFS

片断懒,但工作液从的setDomainEnv.cmd

if "%SERVER_NAME%"=="AdminServer" (
    set DEBUG_PORT=8455 
) 

if "%SERVER_NAME%"=="node1" (
    set DEBUG_PORT=8456 
) 
0

您可以启用调试到管理控制台进行管理节点....尝试该选项

+0

你介意告诉我选项在哪里吗? – krtek

0

我有一个Weblogic(12.1.3.0)AdminServer实例和两个作为群集一部分运行的节点(edu1和edu2)。要调试这些节点,请编辑{my_domain} /bin/setDomainEnv.sh(windows中的setDomainEnv.cmd)文件,并在上面添加这些行。 edu1调试端口是8881和edu2调试端口是8882

if [ "${SERVER_NAME}" = "AdminServer" ] ; then 
    JAVA_OPTIONS="$JAVA_OPTIONS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8880,server=y,suspend=n" 
fi 

if [ "${SERVER_NAME}" = "edu1" ] ; then 
    JAVA_OPTIONS="$JAVA_OPTIONS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8881,server=y,suspend=n" 
fi 

if [ "${SERVER_NAME}" = "edu2" ] ; then 
    JAVA_OPTIONS="$JAVA_OPTIONS -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8882,server=y,suspend=n" 
fi