Index by: file name |
procedure name |
procedure call |
annotation
getJVMinfo_proc.tcl
(annotations | original source)
#
# Get JVM PMI info for server.
# NB: server must be running and PMI must be switched on.
#
####################################################################
# Patrick Finnegan 11/11/2005. V1.
####################################################################
####################################################################
# proc - get JVM details
####################################################################
namespace eval getJVMInfo {
proc setPreparedStatement { ConnectionI schema } {
set procName [ lindex [ info level 0 ] 0 ]
putsLog "## proc - $procName"
foreach i [ info args $procName ] {
upxxvar 0 $i ilocal
set propertiesArray($i) $ilocal
}
putsLog "properties are.................."
foreach { a b } [ array get propertiesArray ] {
putsLog [ format "%-35s %s" "$a" "$b" ]
}
global AdminConfig
global AdminControl
global null
global Help
set statement "insert into $schema.wasperformjvm values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
java::try {
set StatementI [ $ConnectionI prepareStatement $statement ]
} catch {SQLException SQLExceptionI } {
catchSqlException::catchSqlException $SQLExceptionI
} catch {TclException e } {
putsLog "TCl Exception to prepare statement $e"
return -code error
}
java::lock $StatementI
putsLog " return statement [ $StatementI toString ]"
return $StatementI
}
####################################################################
# proc - get JVM details
####################################################################
proc getJVMInfo { nodeName serverName ConnectionI StatementI } {
set procName [ lindex [ info level 0 ] 0 ]
putsLog "## proc - $procName"
foreach i [ info args $procName ] {
upvar 0 $i ilocal
set propertiesArray($i) $ilocal
}
putsLog "properties are.................."
foreach { a b } [ array get propertiesArray ] {
putsLog [ format "%-35s %s" "$a" "$b" ]
}
global AdminConfig
global AdminControl
global null
global Help
putsLog "getJVMInfo"
#putsLog "get the performance mbean for the server - should be just one."
append queryString "WebSphere:*,node="
append queryString $nodeName
append queryString ",process="
append queryString $serverName
append queryString ",type=Perf"
#putsLog " query string is: $queryString "
set perfMbean [ $AdminControl queryNames $queryString ]
if { $perfMbean == $null || [ string length $perfMbean] == 0 } {
putsLog " $serverName is not running or PMI is not enabled for $serverName. "
return
} else {
set donothing true
}
#putsLog "get the JVM Bean."
unset queryString
append queryString "WebSphere:*,node="
append queryString $nodeName
append queryString ",process="
append queryString $serverName
append queryString ",type=JVM"
#putsLog " query string is: $queryString "
set jvmMbean [ $AdminControl queryNames $queryString ]
if { $jvmMbean == $null || [ string length $jvmMbean] == 0 } {
putsLog " $serverName jvm is not running "
return
} else {
set donothing true
}
set jvmMbeanO [ $AdminControl makeObjectName $jvmMbean ]
set boolean [ java::new Boolean recursive ]
# NB: brackets around array object.
set parramsArray [ java::new {Object[]} {2} [ list $jvmMbeanO $boolean ] ]
set signaturesArray [ java::new {String[]} {2} [ list javax.management.ObjectName java.lang.Boolean ] ]
set perfMbeanO [ $AdminControl makeObjectName $perfMbean ]
#get the stats list from the performance bean
set jvmInfo [ $AdminControl invoke_jmx $perfMbeanO "getStatsString" $parramsArray $signaturesArray ]
set jvmInfoString [ $jvmInfo toString ]
lappend valuesList [ $AdminControl getCell ]
#get PMI data sub list.
set e4 [ lindex $jvmInfoString 3 ]
set dataList [ lindex $e4 1 ]
set dataListL [ llength $dataList ]
# sort in id order
set dataList [ lsort -dictionary -index 0 $dataList ]
set topParms [ lindex $dataList 0 ]
set width 60
set descriptorIndex [ lsearch -glob $topParms {*Descriptor*} ]
set descriptor [ lindex $topParms $descriptorIndex ]
set x1 "[ lindex [ lindex [ lindex $descriptor 1 ] 0 ] 0 ]"
set x2 "[ lindex [ lindex [ lindex $descriptor 1 ] 0 ] 1 ]"
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set x1 "[ lindex [ lindex [ lindex $descriptor 1 ] 1 ] 0 ]"
set x2 "[ lindex [ lindex [ lindex $descriptor 1 ] 1 ] 1 ]"
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set timeIndex [ lsearch -glob $topParms {*Time*} ]
set time [ lindex $topParms $timeIndex ]
set x1 [ lindex [ lindex $topParms $timeIndex ] 0 ]
set x2 [ clock format [ clock seconds ] -format "%Y-%m-%d %H:%M:%S" ]
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set valueIndex [ lsearch -glob $topParms {*Value*} ]
set value [ lindex $topParms $valueIndex ]
set x1 [ lindex [ lindex $value 1 ] 0 ]
set x2 [ lindex [ lindex $value 1 ] 1 ]
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set x1 [ lindex [ lindex $value 2 ] 0 ]
set x2 [ lindex [ lindex $value 2 ] 1 ]
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set x1 [ lindex [ lindex $value 3 ] 0 ]
set x2 [ lindex [ lindex $value 3 ] 1 ]
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set x1 [ lindex [ lindex $value 4 ] 0 ]
set x2 [ lindex [ lindex $value 4 ] 1 ]
putsLog [ format "%-${width}s %s" $x1 $x2 ]
lappend valuesList $x2
set x 1
while { $x < $dataListL } {
set e [ lindex $dataList $x ]
set idIndex [ lsearch -glob $e {*Id*} ]
set id [ lindex $e $idIndex ]
set pmiDataInfoIndex [ lsearch -glob $e {*PmiDataInfo*} ]
set pmiDataInfo [ lindex $e $pmiDataInfoIndex ]
set nl [ eval concat [ join $e ] ]
set commentIndex [ lsearch -glob $nl {*Comment*} ]
set comment [ lindex [ lindex $nl $commentIndex ] 1 ]
set valueIndex [ lsearch -glob $e {*Value*} ]
set value [ lindex [ lindex [ lindex $e $valueIndex ] 1 ] 1 ]
putsLog [ format "%-${width}s %s" $comment $value ]
lappend valuesList $value
incr x
}
# write data to cloudscape.
writeData $ConnectionI $valuesList $StatementI
unset valuesList
}
####################################################################
# proc - write data to database.
####################################################################
proc writeData { ConnectionI valuesList StatementI } {
set procName [ lindex [ info level 0 ] 0 ]
putsLog "## proc - $procName"
foreach i [ info args $procName ] {
upvar 0 $i ilocal
set propertiesArray($i) $ilocal
}
putsLog "properties are.................."
foreach { a b } [ array get propertiesArray ] {
putsLog [ format "%-35s %s" "$a" "$b" ]
}
global AdminConfig
global AdminControl
global null
putsLog "writeData"
set opt1 [java::field ResultSet TYPE_SCROLL_INSENSITIVE]
set opt2 [java::field ResultSet CONCUR_READ_ONLY ]
set x 1
foreach i $valuesList {
$StatementI setString $x $i
incr x
}
#putsLog "execute sqlQuery"
java::try {
$StatementI executeUpdate
} catch {SQLException SQLExceptionI } {
catchSqlException::catchSqlException $SQLExceptionI
} catch {TclException e } {
putsLog "TCl Exception to prepare statement $e"
return -code error
}
}
}
Index by: file name |
procedure name |
procedure call |
annotation
File generated 2007-08-07 at 13:42.