### ### 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 }