I wanted to retreive all the information from weblogic datasources using WLST such as:

  • Name
  • JNDI Name
  • Connection Pool parameters:
    • URL
    • Driver Class Name
    • Properties passed to the JDBC Driver
    • SetStreamAsBlob
  • Initial Capacity
  • Maximum Capacity
Get datasource information using WLST

Get datasource information using WLST

Get datasource information using WLST

Get datasource information using WLST

I’ve written a script to perform this task.

How to use this script:

<MIDDLEWARE_HOME>/soa/common/bin/wlst.sh bring_datasources.py <ENV> <DOMAIN>
#miguel.ortiz
import sys,os,re

environment = sys.argv[1]
domain = sys.argv[2]
hostUser = 'READONLY_USER'
hostPass = 'readonly_pass'


# you need to provide two parameters, environment and domain
if environment == '' or domain == '' :
        print 'este script requiere (2) parametros, Ambiente y Dominio'

# if the environment is QAM
if environment == 'QAM' :

        hostIP = '172.x.x.x'

        if domain == 'SYNC':
                hostPort = '8001'
        if domain == 'ASYNC':
                hostPort = '8002'
        if domain == 'RSYNC':
                hostPort = '8003'

# If my environment is Production
if environment == 'PROD' :

        hostIP = '172.x.x.x'

        if domain == 'SYNC':
                hostPort = '8001'
        if domain == 'ASYNC':
                hostPort = '8002'
        if domain == 'RSYNC':
                hostPort = '8003'
dsCounter = 0

# Connect to the host
connect( hostUser , hostPass , 't3://' + hostIP + ':' + hostPort )

# get all JDBC Properties
allJDBCResources = cmo.getJDBCSystemResources()
for jdbcResource in allJDBCResources:
        dsCounter +=1
        dsname = jdbcResource.getName()
        dsResource = jdbcResource.getJDBCResource()
        dsJNDIname = dsResource.getJDBCDataSourceParams().getJNDINames()#[0]
        dsInitialCap = dsResource.getJDBCConnectionPoolParams().getInitialCapacity()
        dsMaxCap = dsResource.getJDBCConnectionPoolParams().getMaxCapacity()
        dsParams = dsResource.getJDBCDataSourceParams()
        dsDriver = dsResource.getJDBCDriverParams().getDriverName()
        conn =  dsResource.getJDBCDriverParams().getUrl()
        test = dsResource.getJDBCDriverParams().getProperties()
        test1 = dsResource.getJDBCConnectionPoolParams()
        user = ''
        readTimeOut = ''
        conTimeOut = ''
        streamAsBlob = ''
       
        redirect('file','false')	
	try :
	 	user = get("/JDBCSystemResources/"+ dsname +"/Resource/" + dsname + "/JDBCDriverParams/" + dsname + "/Properties/" + dsname + "/Properties/user/Value")
	 	readTimeOut = get("/JDBCSystemResources/"+ dsname +"/Resource/" + dsname + "/JDBCDriverParams/" + dsname + "/Properties/" + dsname + "/Properties/oracle.jdbc.ReadTimeout/Value")
	 	conTimeOut = get("/JDBCSystemResources/"+ dsname +"/Resource/" + dsname + "/JDBCDriverParams/" + dsname + "/Properties/" + dsname + "/Properties/oracle.net.CONNECT_TIMEOUT/Value")
	 	streamAsBlob = get("/JDBCSystemResources/"+ dsname +"/Resource/" + dsname + "/JDBCDriverParams/" + dsname + "/Properties/" + dsname + "/Properties/SendStreamAsBlob/Value")
	except WLSTException:
		# omitimos errores por la no existencia de las propiedades buscadas con ls()
		pass
	stopRedirect()	

	print 'datasource.name.' + str(dsCounter) +'=' + str(dsname)
	print 'datasource.jndiname.' + str(dsCounter) + '=' + str(dsJNDIname)
	print 'datasource.driver.class.' + str(dsCounter) + '=' + dsDriver
	print 'datasource.url.' + str(dsCounter) + '=' + conn
	print 'datasource.readTimeout.' + str(dsCounter) + '=' + readTimeOut 
	print 'datasource.connectionTimeout.' + str(dsCounter) + '=' + conTimeOut 
	print 'datasource.username.' + str(dsCounter) + '=' + user
	print 'datasource.password.' + str(dsCounter) + '=' 
	print 'datasource.initialCapacity.' + str(dsCounter) + '=' + str(dsInitialCap)
	print 'datasource.maxCapacity.' + str(dsCounter) + '=' + str(dsMaxCap)
	print 'datasource.target.' + str(dsCounter) + '=' + target
	if not streamAsBlob :
		getStreamAsBlob = 'false'
	else :
		print '#datasource.sendStreamAsBlob.' + str(dsCounter) + '=' + streamAsBlob

	print '\n'
  • The output of the script was adjusted to match the input of another script for datasource creation, adjust it to your needs.