LISTING 1: SAMPLE START SCRIPT

# Set the number of servers to start
set maxServer 50
set nodeName arcturus1
set event_flag 0
# In this loop, start all servers
set servNum 2
while {$servNum <= $maxServer} {
    set serverName serverX[format "%3.3d" $servNum]
    $AdminControl startServer $serverName $nodeName 1
    incr servNum
    }
# Start server1 also
$AdminControl startServer server1 $nodeName 1
puts "Start request issued to all servers"#
# Wait for start to complete
# First wait for maxServer Application Server MBeans to be created#
while {1} {
    after 10000 {incr event_flag}   ;# wait 10 seconds to check MBean creation
    vwait event_flag
    set serverMBeans [$AdminControl queryNames type=Server,
      processType=ManagedProcess,*]
    if {[llength $serverMBeans] == $maxServer} {
        break
    }
}
puts "MBeans created for all servers"#
# Then wait for each server to have a state of STARTED#
puts "Waiting for each server's state to be STARTED"

set waitForStart 1
while {$waitForStart == 1} {
    set waitForStart 0
    foreach server $serverMBeans {
        if {[string compare [$AdminControl invoke $server
         getState] "STARTED"] != 0} {
            after 10000 {incr event_flag}   ;# wait 10
             seconds to check MBean state
            vwait event_flag
            set waitForStart 1
        }
    }
}

This script checks for server startup every 5 seconds:

set template [$AdminControl queryNames  cell=$cellName,node=$
 nodeName,type=ApplicationManager,process=$serverName,*]
while {[llength $template] == 0} {
after 5000
set template [$AdminControl queryNames cell=$cellName,node=
 $nodeName,  type=ApplicationManager,process=$serverName,*]
}

LISTING 2: STOP SCRIPT

#
# Stop running application servers
#
set nodeName arcturus1

set event_flag 0

set serverMBeans [$AdminControl queryNames node=$nodeName,
type=Server,processType=ManagedProcess,*]

#  Remove those servers from the serverMBeans list that
   should not be stopped
#  ....  For this example assume that no other servers were
         removed from
#  serverMBeans
set numOtherBeans  0

#  Stop the servers

foreach server $serverMBeans {
    $AdminControl invoke $server stop
}

#  Wait for servers to finish stopping - wait for
    Application Server MBeans to #  vanish

while {1}  {
    after 5000 {incr event_flag}   ;# wait 5 seconds to
     check MBean existence
    vwait event_flag
    set serverMBeans [$AdminControl queryNames node=$nodeName
     ,type=Server,processType=ManagedProcess,*]
    if {[llength $serverMBeans] == $numOtherBeans}  {
        break
    }
}
The following example checks for server shutdown every 5 seconds:

set template [$AdminControl queryNames  cell=$cellName,node=$
  nodeName,type=ApplicationManager,process=$serverName,*]
while {[llength $template] != 0} {
after 5000
set template [$AdminControl queryNames cell=$cellName,node=
  $nodeName,  type=ApplicationManager,process=$serverName,*]
}

The script ends when the server starts, or continues with more script logic.