Search code examples
javaeclipsedebuggingweblogicremote-debugging

How to setup remote debugging on Weblogic clustered environment?


I'm trying to remote debug a clustered Web Application that is deployed on WebLogic 12c.

I know how to setup remote debugging for normal (non-clustered) environments, I just add the following parameters to the file named [startWebLogic.cmd]:

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

But when I try to set those same parameters on all the nodes of the cluster environment, and then start the cluster using WebLogic console page, remote debugging will not work!! (Eclipse will not be able to connect).

I suspect this is caused by the way the Node Manager of WebLogic starts the individual nodes, it's like it's not calling [startWebLogic.cmd] for each node.


Solution

  • I figured it out!

    When you start the cluster nodes through WebLogic console page, The node manager handles the start-up of each node in some way, so it does not run each node's [startWebLogic.cmd] file!

    I found that you can set remote debugging arguments for each node through the console page itself, so that the node manager will pass those parameters to each node when it attempts to start it.

    Below is how I did that (Edit: on WebLogic 12c):

    1. Open WebLogic console page (e.g: localhost:7001/console)
    2. On the left side of the page, go to Environment > Clusters
    3. Find the name of your cluster environment and click on it
    4. In the "Configuration" tab, open the "Servers" sub-tab
    5. At the bottom of the page, you'll find a table of all the cluster nodes you have.
    6. Click on one of the nodes (servers).
    7. In the "Configuration" tab, open the "Server Start" sub-tab
    8. Scroll down a bit and you'll find a Text Area named "Arguments", fill it with the remote debugging arguments: -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n
    9. Click "Save", and repeat steps 6-8 on all the other cluster nodes.

    And you are done!