Friday, 19 February 2016

Create / replace datasource with WLST online mode

The following tutorial has been checked to work Webogic 12c version 12.1.3 and 12.2,1.

There are 3 steps involved:

1. Define a jython script to create a datasource
2. Define instance specific parameters
3. Execute the script


1. Create your jython script createDS.py:

####################################
def connectAdmin() :
 try:
  connect(adminServerUser,adminServerPassword, adminServer)
  print('Successfully connected')
 except:
   print 'Unable to find admin server...'
   exit()

def deleteDS() :
 try:
  cd('/SystemResources/' + dsName)
  set('Targets',jarray.array([], ObjectName))
 except:
  print 'Datasource not created yet'
 
 try:
  cd('/JDBCSystemResources')
  datasources = cmo.getJDBCSystemResources()
  for datasource in datasources :
   currentDSName = datasource.getName()
   if dsName == currentDSName :
    try:
     datasource.forceShutDown()
    except:
     print 'Could not shutdown datasource'
    try:
     cmo.destroyJDBCSystemResource(datasource)
    except:
     print 'Could not destroy data source'
 except:
  print 'could not delete datasource'

def retrieveTargets() :
 targetsNames = targets.split(" ")
 targetsArray = jarray.zeros(len(targetsNames),ObjectName)
 index = 0
 for targetName in targetsNames :
  targetsArray[index] = ObjectName('com.bea:Name='+targetName+',Type=Server')
  index = index + 1
 return targetsArray
 
if __name__== "main":

 print('This will enable you to create or update a Datasource')
 connectAdmin()

 print('Starting a edit session')
 edit()
 startEdit()
 deleteDS()

 print 'Creating data source'
# Create a new Mbean ( a JDBC resource)
 cd('/')
 cmo.createJDBCSystemResource(dsName)

 #Naming the datasource under JDBCSystemResources
 cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName)
 cmo.setName(dsName)

 print 'Assigning JNDI name'

#Setting JNDI name
 cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCDataSourceParams/'+dsName)
 set('JNDINames',jarray.array([String(jndiName)], String))

 cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName )
 cmo.setUrl(driverUrl)
 cmo.setDriverName( driverName )
 cmo.setPassword(driverPassword)


 cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName+'/Properties/'+dsName)
 cmo.createProperty('user')
 cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName+'/Properties/'+dsName+'/Properties/user')
 cmo.setValue(driverUser)

 print 'Assigning target'

 cd('/SystemResources/' + dsName)

 targetsArray = retrieveTargets()
 set('Targets',targetsArray)

 #Writing the chages to the server
 save()
 activate()

 disconnect()

####################################


2. Create a properties file for your instance, instance.properties:

adminServer = t3://localhost:7001
adminServerUser = weblogic
adminServerPassword = password
items = 1
dsName =  MyDS
jndiName = jdbc/MyDS
targets = AdminServer
driverName = oracle.jdbc.xa.client.OracleXADataSource
driverUrl = jdbc:oracle:thin:@pippo.pallino.int:1597:SERVICE
driverUser = MyUser

driverPassword = myPass


3. Run the following command:

WL_HOME\server\bin\setWLSEnv.cmd
java weblogic.WLST -loadProperties instance.properties createDS.py

No comments:

About Me

My Photo