+

Search Tips   |   Advanced Search

Configure the Java virtual machine using scripting

Use the wsadmin tool to configure settings for a JVM. As part of configuring an application server, we might define settings that enhance the way the operating system uses of the Java virtual machine.

There are three ways to perform this task. Use the steps in this topic to use the setJVMDebugMode command for the AdminTask object or the AdminConfig object to modify the JVM configuration. Alternatively, we can use the configureJavaVirtualMachine Jython script in the AdminServerManagement script library to enable, disable, or configure the debug mode for the JVM. The wsadmin tool automatically loads the script when the tool starts. Use the following syntax to configure JVM settings using the configureJavaVirtualMachine script:

AdminServerManagement.configureJavaVirtualMachine(nodeName, serverName, debugMode, debugArgs, otherAttributeList)
For additional information and argument definitions, see the documentation for the AdminServerMananagment script library.

The JVM is an interpretive computing engine responsible for running the byte codes in a compiled Java program. The JVM translates the Java byte codes into the native instructions of the host machine. The application server, being a Java process, requires a JVM in order to run, and to support the Java applications running on it. JVM settings are part of an application server configuration.


Tasks

  1. Start the wsadmin scripting tool.

  2. There are two ways to complete this step. Use the setJVMDebugMode command for the AdminTask object or the AdminConfig object to modify the JVM configuration. Choose one of the following configuration methods:

    • Use the AdminTask object:

      • Use Jacl:
        $AdminTask setJVMDebugMode {-serverName server1 -nodeName node1 -debugMode true}
        

      • Use Jython:
        AdminTask.setJVMDebugMode (['-serverName', 'server1', '-nodeName', 'node1', '-debugMode', 'true'])
        

    • Use the AdminConfig object:

      1. Identify the server and assign it to the server1 variable:

        • Use Jacl:
          set server1 [$AdminConfig getid /Cell:mycell/Node:mynode/Server:server1/]
          

        • Use Jython:
          server1 = AdminConfig.getid('/Cell:mycell/Node:mynode/Server:server1/')
          print server1
          

        Example output:

        server1(cells/mycell/nodes/mynode/servers/server1|server.xml#Server_1)
        
      2. Identify the JVM that belongs to the server of interest and assign it to the jvm variable:

        • Use Jacl:
          set jvm [$AdminConfig list JavaVirtualMachine $server1]
          

        • Use Jython:
          jvm = AdminConfig.list('JavaVirtualMachine', server1)
          print jvm
          

        Example output:

        (cells/mycell/nodes/mynode/servers/server1:server.xml#JavaVirtualMachine_1)
        

        (ZOS)

        (cells/mycell/nodes/mynode/servers/server1:server.xml#JavaVirtualMachine_1)
        (cells/mycell/nodes/mynode/servers/server1:server.xml#JavaVirtualMachine_2)
        

      3. Identify the controller JVM of the server and its servant region JVM:

        • Use Jacl:
          set cjvm [lindex $jvm 0]
          set sjvm [lindex $jvm 1]
          

        • Use Jython:
          # get line separator
          import java
          lineSeparator = java.lang.System.getProperty('line.separator')
          arrayJVMs = jvm.split(lineSeparator)
          cjvm = arrayJVMs[0]
          sjvm = arrayJVMs[1]
          

      4. Modify the JVM to enable debugging:

        • Use Jacl:
          $AdminConfig modify $jvm {{debugMode true} {debugArgs "-Djava.compiler=NONE -Xdebug -Xnoagent 
          -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"}}
          
          (ZOS)
          $AdminConfig modify $cjvm {{debugMode true} {debugArgs "-Djava.compiler=NONE -Xdebug -Xnoagent 
          -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"}}
          $AdminConfig modify $sjvm {{debugMode true} {debugArgs "-Djava.compiler=NONE -Xdebug -Xnoagent 
          -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"}}
          

        • Use Jython:
          AdminConfig.modify(jvm, [['debugMode', 'true'], ['debugArgs',  "-Djava.compiler=NONE -Xdebug 
          -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"]])
          
          (ZOS)
          AdminConfig.modify(cjvm, [['debugMode', 'true'], ['debugArgs',  "-Djava.compiler=NONE -Xdebug 
          -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"]])
          AdminConfig.modify(sjvm, [['debugMode', 'true'], ['debugArgs',  "-Djava.compiler=NONE -Xdebug 
          -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"]])
          

  3. Save the configuration changes.
    AdminConfig.save()
    
  4. In a network deployment environment only, synchronize the node.

    Use the syncActiveNode or syncNode scripts in the AdminNodeManagement script library to propagate the configuration changes to node or nodes.

    • Use the syncActiveNodes script to propagate the changes to each node in the cell:
      AdminNodeManagement.syncActiveNodes()
      

    • Use the syncNode script to propagate the changes to a specific node:
      AdminNodeManagement.syncNode("myNode")
      

  • Configure the JVM
  • Automating server administration
  • Node administration scripts
  • Server settings configuration scripts
  • Commands for the AdminConfig object