+

Search Tips   |   Advanced Search

 

###
### createserver.jacl 
###
###  Create and modify a server 
###  Loads an application onto the server 
###  Start the server.  
###
###  Usage:
###
###     wsadmin.sh -username system \
###                -password password \
###                -f createserver.jacl serverX nodeY /applicationZ myapp
###
###  The script expects some parameters:
###
###      arg1 - server name
###      arg2 - node name
###      arg3 - application 
###      arg4 - application name (optional) 
###


proc createserver {serverName nodeName args} {



   ###
   ### check for optional argument 
   ###

   set app [lindex $args 0]
   if {[llength $args] > 1} {
      set appName [lindex $args 1]
   } else {
      set appName ""
   }



   ###
   ### set up globals
   ###

   global AdminConfig
   global AdminControl
   global AdminApp



   ###
   ### do some sanity checking 
   ###     -- do we have a node by this name? 
   ###

   set node [$AdminConfig getid /Node:$nodeName/]
   puts "createserver: checking for existence of node $nodeName"
   if {[llength $node] == 0} {
      puts "createserver: Error -- node not found for name $nodeName"
      return 
   }




   ###
   ###     -- was a earfile name supplied 
   ###

   if {[llength $app] == 0} {
      puts "createserver: Error -- No application specified."
      return 
   }


   ###
   ###     -- is a server by this name already running on the node? 
   ###

   puts "createserver: checking to see if server $serverName is already running on node $nodeName"
   set runningServer [$AdminControl completeObjectName type=Server,node=$nodeName,process=$serverName,*]
   if {[llength $runningServer] > 0} {
      puts "createserver: Error -- Server $serverName already running on node $nodeName"
      return 
   }



   ###
   ###     -- is a nodeSync MBean available on this node? 
   ###

   puts "createserver: checking for the existence of a NodeSync MBean on node $nodeName"
   set nodeSync [$AdminControl completeObjectName type=NodeSync,node=$nodeName,*]
   if {[llength $nodeSync] == 0} {
      puts "createserver: Error -- NodeSync MBean not found for name $nodeName"
      return 
   }



   ###
   ### Create a server using the supplied server name and node 
   ###

   puts "createserver: creating a server $serverName ....."
   set name_attribute [list name $serverName]
   set attributes     [list $name_attribute]
   set server [$AdminConfig create Server $node $attributes] 
 


   ###
   ### Change the list of transports associated with the WebContainer
   ### for this server.  Create one secure and one non-secure transport 
   ###

   puts "createserver: modifying HTTP port addresses"
   set http_nonsecure_address [list [list sslEnabled false] [list address [list [list host {}] [list port 9088]]]] 
   set http_secure_address    [list [list sslEnabled true] [list address [list [list host {}] [list port 9448]]] [list sslConfig DefaultSSLSettings]] 
   set transports             [list transports:HTTPTransport [list $http_nonsecure_address $http_secure_address]]
   set web_container [$AdminConfig list WebContainer $server]
   $AdminConfig modify $web_container [list $transports]



   ###
   ### Install an application onto this server
   ###

   puts "createserver: installing the application"
   set app_options [list -server $serverName]
   lappend app_options -node $nodeName
   if {[llength $appName] > 0} {
      lappend app_options -appname $appName
   }
   $AdminApp install $app $app_options 



   ###
   ### Save all the changes 
   ###

   puts "createserver: saving the configuration"
   $AdminConfig save



   ###
   ### Find out if serverStartupSyncEnabled is true for this node
   ### We just created this server, so if this attribute is set to
   ### "false" we have to perform a sync.  If we do not, the node we
   ### are installing on may have an out-of-date copy of the config
   ### data. 
   ###

   set enabled [$AdminControl getAttribute $nodeSync serverStartupSyncEnabled]
   if {[string compare $enabled "false"] == 0} {
      puts "createserver: Invoking synchronization for node $nodeSync because serverStartupSyncEnabled is set to false..."
      $AdminControl invoke $nodeSync sync
      puts "createserver: Done with synchronization."
   }



   ###
   ### start the server 
   ###

   puts "createserver: starting server $serverName ..."
   $AdminControl startServer $serverName $nodeName
   puts "createserver: done."
}



###
### Main
###

if { !($argc == 3 || $argc == 4) } {
   puts "createserver: this script requires 3 or 4 parameters: server name, node name, ear file, and (optionally) application name"
   puts "e.g.:     createserver  server2 mynode c:/WebSphere/AppServer/installableApps/jmsample.ear myapp1" 
} else { 
   set serverName       [lindex $argv 0]  
   set nodeName         [lindex $argv 1]  
   set application      [lindex $argv 2]
   set appName          [lindex $argv 3]

   createserver $serverName $nodeName $application $appName
}