# Simple script to dump all the JDBC connection pools import os import sys # Function: parseArguments # Purpose: Collect arguments into appropriate collections # Parameter: Script arguments # Returns: Dictionary of keyed arguments def parseArguments( args ) : rtnArgSet = { } svrList = [ ] dsList = [ ] dpList = [ ] idx = 0 idxLimit = len( args ) if ( idxLimit < 0 ) : return rtnArgSet while ( idx < idxLimit ) : arg = args[idx] idx += 1 if ( arg.startswith( '--' ) and ( idx < idxLimit ) ) : val = args[idx] idx += 1 if ( arg == "--server" ) : svrList.append( val ) elif ( arg == "--source" ) : dsList.append( val ) elif ( arg == "--provider" ) : dpList.append( val ) else : raise KeyError( "Invalid argument: " + arg ) # end if # end if # end while rtnArgSet['servers'] = svrList rtnArgSet['dataSources'] = dsList rtnArgSet['dataProviders'] = dpList return rtnArgSet # end parseArguments # Function: dumpByProvider # Purpose: Output JDBC Pool stats by server and provider # Parameters: Server name and provider name # Returns: None def dumpByProvider( server, provider ) : qry = "*:JDBCProvider=" + provider + ",type=DataSource,process=" + server + ",*" dSources = AdminControl.queryNames( qry ) dsList = dSources.splitlines( ) for ds in dsList : print AdminControl.invoke( ds, "showPoolContents" ) # end for # end dumpByProvider # Function: dumpByDataSource # Purpose: Output JDBC Pool stats by server and data source name # Parameters: Server name and data source name # Returns: None def dumpByDataSource( server, dsName ) : qry = "*:type=DataSource,name=" + dsName + ",process=" + server + ",*" ds = AdminControl.queryNames( qry ) print AdminControl.invoke( ds, "showPoolContents" ) # end dumpByDataSource # Function: scriptUsage # Purpose: Dump script usage # Parameters: Optional script name # Returns: Never def scriptUsage( cmdName = 'jdbcDump' ): print ''' Command: %(cmdName)s\n Purpose: Dump connection pool statistics for specified server(s) by either data source or providers. At least one server must be specified. If one or more providers are specified, then all data sources within that provider are listed. Usage: %(cmdName)s --server "name" [ optional args ]\n Where options include: server - repeatable listing of application servers to query data sources source - repeatable listing of data sources to list provider - repeatable listing of data providers to retrieve data sources Examples: wsadmin -lang jython -f %(cmdName)s.jy --server server1 --provider sample ''' % locals() sys.exit( 1 ) # end scriptUsage #--------------------------------------------------------------------- # main entry point - verify that script was executed, and not imported #--------------------------------------------------------------------- if ( __name__ == 'main' ) or ( __name__ == '__main__' ) : argDict = parseArguments( sys.argv ) serverList = argDict['servers'] sourceList = argDict['dataSources'] providerList = argDict['dataProviders'] if ( len( serverList ) == 0 ) : scriptUsage( ) for curServer in serverList : print "WebSphere Server: " + curServer if ( len( providerList ) > 0 ) : for curProvider in providerList : dumpByProvider( curServer, curProvider ) # end if processing by provider elif ( len( sourceList ) > 0 ) : for curSource in sourceList : dumpByDataSource( curServer, curSource ) # end if processing by data source else : print "At least one data provider or data source must be specified." scriptUsage( ) # end invalid usage # end for each specified server