# # Install Application Server. # #################################################################### # Patrick Finnegan 19/10/2005. V1. #################################################################### #################################################################### # List installed application servers. #################################################################### proc showList { a } { puts "\nList installed servers" puts "**********************\n" foreach e $a { regexp {(.*)(\(cells.*)} $e 1 2 3 puts [ format "%-5s %-50s" " " $2 ] lappend returnList $2 } puts "\n**********************\n" return $returnList } #################################################################### # Install Server then create properties for server. #################################################################### proc installServer { serverName nodeId nonsslPort sslPort rmiPort sessionTimeout tranTimeout } { global AdminConfig set nameList [ list name $serverName ] set attrList [ list $nameList ] if { [ catch {$AdminConfig create Server $nodeId $attrList} r ] == 0 } { puts "************************************" puts "$serverName server created successfully." puts "************************************\n" } else { puts "\nfailed to create $serverName server\n" puts $r puts "************************************\n" return -code error $r } set serverId [ $AdminConfig getid /Server:$serverName/ ] regexp {(.*)(\(cells.*)} $serverId 1 2 3 set serverName $2 # set Transaction Service Properties. if { [ catch { setTransProps $serverId $serverName $tranTimeout } r ] != 0 } { return -code error $r } # set Web Container Properties. if { [ catch { setWebProps $serverId $serverName $nonsslPort $sslPort $sessionTimeout } r ] != 0 } { return -code error $r } # set Log File Properties. if { [ catch { setLogProps $serverId $serverName } r ] != 0 } { return -code error $r } # set JVM Properties. if { [ catch { setJVMProps $serverId $serverName } r ] != 0 } { return -code error $r } # set Process Definition Properties. if { [ catch { setProcessDefProps $serverId $serverName } r ] != 0 } { return -code error $r } # set EndPoints Properties. if { [ catch { setEndPointsProps $serverId $serverName $rmiPort } r ] != 0 } { puts "\nfailed - result is $r" return -code error $r } } #################################################################### # Set transaction service properties. #################################################################### proc setTransProps { serverId serverName tranTimeout } { global alias global AdminConfig # get Transaction Service id set TransactionServiceId [ $AdminConfig list TransactionService $serverId ] set drive [lindex [file split [info script]] 0 ] set clientInactivityTimeout [ list clientInactivityTimeout 60 ] set totalTranLifetimeTimeout [ list totalTranLifetimeTimeout $tranTimeout ] set transactionLogDirectory [ list transactionLogDirectory " " ] set attrList [ list $clientInactivityTimeout \ $totalTranLifetimeTimeout \ $transactionLogDirectory \ ] if { [ catch { $AdminConfig modify $TransactionServiceId $attrList } r ] == 0 } { puts "************************************" puts "$serverName transaction properties created successfully." puts "************************************\n" } else { puts "\nfailed to create transaction properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } } #################################################################### # Set web container properties. #################################################################### proc setWebProps {serverId serverName nonsslPort sslPort sessionTimeout } { global AdminConfig # get Web Container id set WebContainerId [ $AdminConfig list WebContainer $serverId ] set defaultVirtualHostName [ list defaultVirtualHostName intg_$serverName ] set enableServletCaching [ list enableServletCaching true ] set attrList [ list $defaultVirtualHostName \ $enableServletCaching \ ] if { [ catch { $AdminConfig modify $WebContainerId $attrList } r ] == 0 } { puts "************************************" puts "$serverName - WebContainer properties created successfully." puts "************************************\n" } else { puts "\nfailed to create WebContainer properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # get ThreadPool id set threadPoolId [ lindex [ $AdminConfig list ThreadPool $WebContainerId ] 0 ] set inactivityTimeout [ list inactivityTimeout 3500 ] set isGrowable [ list isGrowable true ] set maximumSize [ list maximumSize 50 ] set minimumSize [ list minimumSize 10 ] set threadPoolList [ list $inactivityTimeout \ $isGrowable \ $maximumSize \ $minimumSize \ ] if { [ catch { $AdminConfig modify $threadPoolId $threadPoolList } r ] == 0 } { puts "************************************" puts "$serverName - Threadpool properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Threadpool properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # get Session Manager id set sessionManagerId [ $AdminConfig list SessionManager $WebContainerId] set accessSessionOnTimeout [ list accessSessionOnTimeout true ] set allowSerializedSessionAccess [ list allowSerializedSessionAccess false ] set enable [ list enable true ] set enableCookies [ list enableCookies true ] set enableProtocolSwitchRewriting [ list enableProtocolSwitchRewriting false ] set enableSSLTracking [ list enableSSLTracking false ] set enableSecurityIntegration [ list enableSecurityIntegration false ] set enableUrlRewriting [ list enableUrlRewriting false ] set maxWaitTime [ list maxWaitTime 5 ] set sessionManagerList [ list $accessSessionOnTimeout \ $allowSerializedSessionAccess \ $enable \ $enableCookies \ $enableProtocolSwitchRewriting \ $enableSSLTracking \ $enableSecurityIntegration \ $enableUrlRewriting \ $maxWaitTime \ ] if { [ catch { $AdminConfig modify $sessionManagerId $sessionManagerList } r ] == 0 } { puts "************************************" puts "$serverName - Session Manager properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Session Manager properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # get Tuning Parms set tuningParamsId [ $AdminConfig list TuningParams $WebContainerId ] set allowOverflow [ list allowOverflow false ] set invalidationTimeout [ list invalidationTimeout $sessionTimeout ] set maxInMemorySessionCount [ list maxInMemorySessionCount 1000 ] set tuningParamsList [ list $allowOverflow \ $invalidationTimeout \ $maxInMemorySessionCount \ ] if { [ catch { $AdminConfig modify $tuningParamsId $tuningParamsList } r ] == 0 } { puts "************************************" puts "$serverName - Tuning properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Tuning properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # get http transports id. set httpTransportIdList [ $AdminConfig list HTTPTransport $WebContainerId ] # assume two default host entries. # modify host entries with new values. # Transport 1. set transport1 [ lindex $httpTransportIdList 0 ] set addressId [ $AdminConfig showAttribute $transport1 address ] set oldHost [ $AdminConfig showAttribute $addressId host ] set oldPort [ $AdminConfig showAttribute $addressId port ] puts "Old Host is $oldHost " puts "Old Port is $oldPort " set newHost [ list host * ] set newPort [ list port $nonsslPort ] set addressList [ list $newHost $newPort ] puts "New Host is $oldHost" puts "New Port is $newPort" if { [ catch { $AdminConfig modify $addressId $addressList } r ] == 0 } { puts "************************************" puts "$serverName - HTTP Transport properties modified successfully." puts "************************************\n" } else { puts "************************************" puts "\nfailed to create modify HTTP Transport properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # Transport2. set transport2 [ lindex $httpTransportIdList 1 ] set addressId [ $AdminConfig showAttribute $transport2 address ] set oldHost [ $AdminConfig showAttribute $addressId host ] set oldPort [ $AdminConfig showAttribute $addressId port ] puts "Old Host is $oldHost " puts "Old Port is $oldPort " set newHost [ list host * ] set newPort [ list port $sslPort ] set addressList [ list $newHost $newPort ] puts "New Host is $oldHost" puts "New Port is $newPort" if { [ catch { $AdminConfig modify $addressId $addressList } r ] == 0 } { puts "************************************" puts "$serverName - HTTP Transport properties modified successfully." puts "************************************\n" } else { puts "************************************" puts "\nfailed to create modify HTTP Transport properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } } #################################################################### # Set logging properties. #################################################################### proc setLogProps {serverId serverName } { global AdminConfig # get websphere install directory from node variable map. set nodeVarMapId [ $AdminConfig getid /Node:[exec hostname]/VariableMap:/ ] set listVar1 [ eval join [ $AdminConfig showall $nodeVarMapId ] ] set x [ lindex [ lindex $listVar1 [lsearch $listVar1 *WAS_INSTALL_ROOT*] ] 2 ] set WAS_INSTALL_ROOT [ lindex [ split $x ] 1 ] # get output log id set outputLogId [ $AdminConfig showAttribute $serverId outputStreamRedirect ] set baseHour [ list baseHour 24 ] set fileName [ list fileName $WAS_INSTALL_ROOT\\logs\\$serverName\\$serverName\_SystemOut.log ] set formatWrites [ list formatWrites true ] set maxNumberOfBackupFiles [ list maxNumberOfBackupFiles 5 ] set messageFormatKind [ list messageFormatKind BASIC ] set rolloverPeriod [ list rolloverPeriod 24 ] set rolloverSize [ list rolloverSize 5 ] set rolloverType [ list rolloverType TIME ] set suppressStackTrace [ list suppressStackTrace false ] set suppressWrites [ list suppressWrites false ] set attrList [ list $baseHour \ $fileName \ $formatWrites \ $maxNumberOfBackupFiles \ $messageFormatKind \ $rolloverPeriod \ $rolloverSize \ $rolloverType \ $suppressStackTrace \ $suppressWrites \ ] if { [ catch { $AdminConfig modify $outputLogId $attrList } r ] == 0 } { puts "************************************" puts "$serverName - Server output log properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Server output log properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } # get error log id set errorLogId [ $AdminConfig showAttribute $serverId errorStreamRedirect ] set baseHour [ list baseHour 24 ] set fileName [ list fileName $WAS_INSTALL_ROOT\\logs\\$serverName\\$serverName\_SystemErr.log ] set formatWrites [ list formatWrites true ] set maxNumberOfBackupFiles [ list maxNumberOfBackupFiles 5 ] set messageFormatKind [ list messageFormatKind BASIC ] set rolloverPeriod [ list rolloverPeriod 24 ] set rolloverSize [ list rolloverSize 5 ] set rolloverType [ list rolloverType TIME ] set suppressStackTrace [ list suppressStackTrace false ] set suppressWrites [ list suppressWrites false ] set attrList [ list $baseHour \ $fileName \ $formatWrites \ $maxNumberOfBackupFiles \ $messageFormatKind \ $rolloverPeriod \ $rolloverSize \ $rolloverType \ $suppressStackTrace \ $suppressWrites \ ] if { [ catch { $AdminConfig modify $errorLogId $attrList } r ] == 0 } { puts "************************************" puts "$serverName - Server error log properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Server error log properties for $serverName\n" puts $r puts "************************************\n" return -code error $r } } #################################################################### # Set JVM Properties. #################################################################### proc setJVMProps {serverId serverName } { global AdminConfig # get JVM id set jvmId [ $AdminConfig list JavaVirtualMachine $serverId ] set initialHeapSize [ list initialHeapSize 128 ] set maximumHeapSize [ list maximumHeapSize 256 ] # set custom properties. ## ws.ext.dirs set name [ list name ws.ext.dirs ] set value [ list value {d:\HBFWeb\properties} ] set description [ list description {Application Property Files} ] set wsExtDirs [ list $name $value $description ] set systemPropertiesList [ list systemProperties [ list $wsExtDirs]] set attrList [ list $initialHeapSize \ $maximumHeapSize \ $systemPropertiesList \ ] if { [ catch { $AdminConfig modify $jvmId $attrList } r ] == 0 } { puts "************************************" puts "$serverName - JVM properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Server JVM properties for $serverName\n" puts "************************************\n" return -code error $r } } #################################################################### # Set Process Definition Properties. #################################################################### proc setProcessDefProps {serverId serverName } { global AdminConfig set processDefId [ $AdminConfig showAttribute $serverId processDefinition ] set monPolicyId [$AdminConfig showAttribute $processDefId monitoringPolicy ] set monPolicy [ list nodeRestartState PREVIOUS ] set attrList [ list $monPolicy ] if { [ catch { $AdminConfig modify $monPolicyId $attrList } r ] == 0 } { puts "************************************" puts "$serverName - Process Definition properties created successfully." puts "************************************\n" } else { puts "\nfailed to create Process Definition properties for $serverName\n" puts "************************************\n" return -code error $r } } #################################################################### # Set Endpoints - RMI. #################################################################### proc setEndPointsProps {serverId serverName rmiPort } { global AdminConfig set endPointsId [ $AdminConfig getid /ServerEntry:$serverName/ ] set specialEndPoints [ $AdminConfig showAttribute $endPointsId specialEndpoints ] # specialEndPoints is a one element list containing an embedded list. set listlength [ llength [ lindex $specialEndPoints 0 ] ] set listElements [ expr { $listlength - 1 } ] # iterate through the sublist and find the bootstrap address. set i 0 while { $i <= $listElements } { set endPoint [ lindex [ lindex $specialEndPoints 0 ] $i ] set endPointName [ $AdminConfig showAttribute $endPoint endPointName ] if { $endPointName == "BOOTSTRAP_ADDRESS" } { set endPointId [ $AdminConfig showAttribute $endPoint endPoint ] set port [ $AdminConfig showAttribute $endPointId port ] puts "End Point Name = $endPointName" puts "Old port = $port" set newPort [ list port $rmiPort ] set attrList [ list $newPort ] if { [ catch { $AdminConfig modify $endPointId $attrList } r ] == 0 } { puts "************************************" puts "End Point Name = $endPointName" puts "New port = $rmiPort" puts "$serverName - End Points modified successfully." puts "************************************\n" } else { puts "************************************" puts "\nfailed to modify End Points for $serverName\n" puts "************************************\n" return -code error $r } } incr i } } #################################################################### # Main Control. #################################################################### puts "\n argc = $argc \n" if {$argc < 1} { return -code error "error - no arguments supplied. Supply server name" puts "no arguments" } # Assume one cell, one deployment manager node and one application node. set cellId [ lindex [ $AdminConfig list Cell ] 0 ] set nodes [ $AdminConfig list Node ] # delete the manager node from the list. set manIndex [ lsearch -glob $nodes *Manager* ] set nodeId [ lindex [ lreplace $nodes $manIndex $manIndex ] 0 ] # get name attribute for cell and application node set cellName [ $AdminConfig showAttribute $cellId name ] set nodeName [ $AdminConfig showAttribute $nodeId name ] set serverName [ lindex $argv 0 ] set nonsslPort [ lindex $argv 1 ] set sslPort [ lindex $argv 2 ] set rmiPort [ lindex $argv 3 ] set sessionTimeout [ lindex $argv 4 ] set tranTimeout [ lindex $argv 5 ] puts "server name = $serverName" puts "nonsslPort = $nonsslPort" puts "sslPort = $sslPort" puts "rmiPort = $rmiPort" puts "sessionTimeout = $sessionTimeout" puts "tranTimeout = $tranTimeout" ####################################################################### # List servers and check if target server already exists. # If so delete it and recreate ####################################################################### set servers [ $AdminConfig list Server ] catch { showList $servers } r catch {lsearch $r $serverName } r if { $r == -1 } { set continue true } else { set serverId [ $AdminConfig getid /Server:$serverName/ ] catch { $AdminConfig remove $serverId } r puts $r } #################################################################### # Install Server #################################################################### if { [ catch { installServer $serverName $nodeId $nonsslPort $sslPort $rmiPort $sessionTimeout $tranTimeout } r ] == 0 } { puts "************************************" puts "$serverName installed successfully" puts "************************************\n" puts "\n###### Admin Config Save ######\n" $AdminConfig save } else { puts "\n$serverName failed to install\n" puts $r puts "************************************\n" } #################################################################### # List servers to verify install #################################################################### set servers [ $AdminConfig list Server ] catch { showList $servers } r