Search This Blog

Sunday, August 19, 2018

Configuration of GEOCODE Datasource for Oracle MapViewer

Couple of years back in the same blog I've posted how we can configure a generic datasource in WebLogic domain using WLST. Working in today's trend continuous deployment(CD) automation development I've worked on similar task that is GEOCODE datasource configuration. GEOCODE datasource is the basic configuration requirement for running Oracle MapViewer.

In Oracle Utilities Mobile Workforce Management runs on WebLogic server.

Pre-requisites
Oracle native WebLogic domain configured and the Admin Server must be up and running because our automation will be going to work online WLST.

How does it works?

In the Oracle Utilities products have a file ENVIRON.INI, that will having all connection related parameters available such as: ADMIN HOST, ADMIN PORT, UserStoreConfig files userConfigFile
userKeyFile path. By reading this file as properties we can get connected to the  running WebLogic Admin Server.

We will need the GEOCODE data source parameters, this can be passed as properties file ConfigGEOCODE.properties. To create a data source we need the following :
  1. Name of the datasoruce as GEOCODE
  2. JNDI Name as NAVTEQ_UTIL
  3. Select the database as Oracle
Connection pool configuration in the JDBC System Resource
  1. Enter your database hostname
  2. Database port
  3. Database name
  4. Database user credentials
  5. Test Connection Pool
###################****##############****################################################
# Generic Datasource configuration script applicable on any Operating Environments (Unix, Windows)
# ScriptName    : ConfigGEOCODE.py
# Properties    : ConfigGEOCODE.properties
# Updated by    : Pavan Devarakonda
# Date creation : 9th Aug 2018
###############     Connecting to Start     ################################################
def connectAdmin() :
 try:
  import os
  splebase=os.environ['SPLEBASE']
  loadProperties(splebase+"/etc/ENVIRON.INI")
  userconfig = splebase+"/etc/.wlsuserconfig"
  userkey = splebase+"/etc/.wlsuserkey"
  adminurl="t3s://"+WEB_ADMIN_SERVER+":"+WLS_ADMIN_PORT
  printline('Connectiong to adminurl: '+adminurl)
  connect(userConfigFile=userconfig,userKeyFile=userkey, url=adminurl)
  printline('Successfully connected')
 except:
  printline('Unable to find admin server...')
  exit()

#================== Printing line =====================================
def printline(msg):
        print 45*'#'
        print msg
        print 45*'#'

################### Configuring Connection Pool #############################
def connPool(DSnam) :
 DRVPARM='/JDBCSystemResources/'+DSnam+'/JDBCResource/'+DSnam+'/JDBCDriverParams/'+DSnam
 cd(DRVPARM)
 set('Url',DBURL)
 set('DriverName',DBDRV)
 cmo.setPassword('XXXXXX')

 cd(DRVPARM+'/Properties/'+DSnam)
 cmo.createProperty('user')
 cd(DRVPARM+'/Properties/'+DSnam+'/Properties/user')
 set('Value',DBUSR)

############         Creating Data source    ###############################
def createDS() :
 DSnam = DSName
 printline('Creating datasource :'+DSnam)
 cmo.createJDBCSystemResource(DSnam)
 RESOURCE='/JDBCSystemResources/'+DSnam+'/JDBCResource/'+DSnam
 cd(RESOURCE)
 set('Name',DSnam)
 #Setting JNDI name
 cd(RESOURCE+'/JDBCDataSourceParams/'+DSnam)
 print RESOURCE+'/JDBCDataSourceParams/'+DSnam
 set('JNDINames',jarray.array([String(JNDIname)], String))

 connPool(DSnam)

 #Set Connection Pool specific parameters
 cd(RESOURCE+'/JDBCConnectionPoolParams/'+DSnam)
 cmo.setTestConnectionsOnReserve(true)
 cmo.setTestTableName('SQL SELECT 1 FROM DUAL\r\n\r\n')
 #cmo.setTestTableName('SQL ISVALID')
 cmo.setConnectionReserveTimeoutSeconds(25)
 cmo.setMaxCapacity(15)
 cmo.setConnectionReserveTimeoutSeconds(10)
 cmo.setTestFrequencySeconds(120)

 cd(RESOURCE+'/JDBCDataSourceParams/'+DSnam)
 cmo.setGlobalTransactionsProtocol('TwoPhaseCommit')

 # targets the GEOCODE DataSource to utilities_cluster1
 cd('/SystemResources/'+DSnam)
 set('Targets',jarray.array([ObjectName('com.bea:Name='+clstrNam+',Type=Cluster')], ObjectName))

###########################  Main Module   #####################################
if __name__== "main":
 connectAdmin()
 edit()
 startEdit()
 # Create a new JDBC resource)
 try:
  cd('/')
  createDS()

 except BeanAlreadyExistsException:
  printline('Error: GEOCODE Datasource already exist')
  cancelEdit('y'); exit()
 save()
 activate()
 printline('Successfully created GEOCODE datasource')
 disconnect()

The properties file look like this:
#=========================================
DBURL=jdbc:oracle:thin:@mydb.server.com:1521:M1DBMAPS
DBDRV=oracle.jdbc.xa.client.OracleXADataSource
DBPASS=XXXXXXX
DBUSR=NAVTEQ_UTIL
DSName=GEOCODE
JNDIname=NAVTEQ_UTIL
clstrNam=utilities_cluster1
The script execution goes as follows:

Now prepare for execution of WLST script, setup the environment and also define proper SSL related options to include in JAVA_OPTIONS which will be considered when wlst.sh execution time.

wlst -loadProperties ConfigGEOCODE.properties ConfigGEOCODE.py

This script execution was tested successful and ready to use. You need to enter properties file corresponding to your database values.


Popular Posts