Step 1) create a property file with Admin Server details , and Number of connections to configure in database adaptor and those configuration details. in this example , i am taking only one DB adaptor configuration. let us say our property file name : dev.properties
domain.name=soa_domain
domain.adminHost=AdminServerHostname
domain.adminPort=7001
domain.adminUserName=Weblogic
domain.soahome=/u01/fmw/product/111/soa_111
###########################DB Configuration#########################################
########## make 'xa' value true if data source is XA################################
deploymentPlan.db.location=/u01/shared/posia/soa/connectors/DBAdapterPlan.xml
totalDbToConfigure=1
############################DB CCBSOA Config properties#################################
db.resource.dbJNDIName1=eis/DB/SOA_INFRA
db.resource.dataSourceName1=jdbc/SOA/SOA_INFRA
db.resource.platformClassName1=
db.resource.xa1=true
db.resource.sequencePreallocationSize1=1
############################################################################################
domain.name=soa_domain
domain.adminHost=AdminServerHostname
domain.adminPort=7001
domain.adminUserName=Weblogic
domain.soahome=/u01/fmw/product/111/soa_111
###########################DB Configuration#########################################
########## make 'xa' value true if data source is XA################################
deploymentPlan.db.location=/u01/shared/posia/soa/connectors/DBAdapterPlan.xml
totalDbToConfigure=1
############################DB CCBSOA Config properties#################################
db.resource.dbJNDIName1=eis/DB/SOA_INFRA
db.resource.dataSourceName1=jdbc/SOA/SOA_INFRA
db.resource.platformClassName1=
db.resource.xa1=true
db.resource.sequencePreallocationSize1=1
############################################################################################
Step 2 ) Script for DB Adaptor configurations. Let us say file name is : DBAdaptorConfig.py
from java.io import FileInputStream
env=sys.argv[1]
propInputStream = FileInputStream( env+".properties")
configProps = Properties()
configProps.load(propInputStream)
totdbToConfigure=configProps.get('totalDbToConfigure')
domainName=configProps.get("domain.name")
hostName=configProps.get("domain.adminHost")
portNo=configProps.get("domain.adminPort")
adminUserName=configProps.get("domain.adminUserName")
planPathDB=configProps.get("deploymentPlan.db.location")
adminURL="t3://" + hostName + ":" + portNo
soahome=configProps.get('domain.soahome')
appPathDB=soahome+'/soa/connectors/DbAdapter.rar'
appNameDB='DbAdapter'
moduleOverrideNamedb=appNameDB+'.rar'
moduleDescriptorName='META-INF/weblogic-ra.xml'
def delDeploymentPlanVariable(wlstPlan, name, value, xpath,overrideName, origin='planbased'):
print 'inside delDeploymentPlanVariable'
wlstPlan.destroyVariable(name)
wlstPlan.destroyVariableAssignment(name, overrideName, moduleDescriptorName)
def makeDeploymentPlanVariable(wlstPlan, name, value, xpath,overrideName, origin='planbased'):
print 'inside makeDeploymentPlanVariable'
wlstPlan.destroyVariable(name)
wlstPlan.destroyVariableAssignment(name, overrideName, moduleDescriptorName)
variableAssignment = wlstPlan.createVariableAssignment(name, overrideName, moduleDescriptorName)
variableAssignment.setXpath(xpath)
variableAssignment.setOrigin(origin)
wlstPlan.createVariable(name, value)
print 'moduleDescriptorName=',moduleDescriptorName
i = 1
print 'no of adapter to configure...' +totdbToConfigure
print 'connecting to weblogic domain...' + domainName
print 'configuring adapter ....' + appPathDB
connect()
edit()
startEdit()
try:
myPlandb=loadApplication(appPathDB, planPathDB)
while (i <= int(totdbToConfigure)):
print 'inside while'
try:
dbJndi = configProps.get("db.resource.dbJNDIName"+str(i))
dbDS=configProps.get('db.resource.dataSourceName'+str(i))
dbPlatform=configProps.get('db.resource.platformClassName'+str(i))
xaDS= configProps.get('db.resource.xa'+str(i))
sequencePreallocationSize=configProps.get('db.resource.sequencePreallocationSize'+str(i))
print 'dbjndi............', dbJndi
makeDeploymentPlanVariable(myPlandb, "ConnectionInstance_"+dbJndi, dbJndi, '/weblogic-connector/outbound-resource-adapter/connection-definition-grou
p/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/jndi-name',moduleOverrideNamedb)
if String(xaDS).indexOf('false') == -1:
delDeploymentPlanVariable(myPlandb, "ConfigProperty_dataSourceName_Value_"+dbJndi, dbDS, '/weblogic-connector/outbound-resource-adapter/connecti
on-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connection-properties/properties/
property/[name="dataSourceName"]/value',moduleOverrideNamedb)
makeDeploymentPlanVariable(myPlandb, "ConfigProperty_dataSourceName_Value_"+dbJndi, dbDS, '/weblogic-connector/outbound-resource-adapter/connect
ion-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connection-properties/properties
/property/[name="xaDataSourceName"]/value',moduleOverrideNamedb)
else:
print 'Not a XA'
delDeploymentPlanVariable(myPlandb, "ConfigProperty_dataSourceName_Value_"+dbJndi, dbDS, '/weblogic-connector/outbound-resource-adapter/connecti
on-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connection-properties/properties/
property/[name="xaDataSourceName"]/value',moduleOverrideNamedb)
makeDeploymentPlanVariable(myPlandb, "ConfigProperty_dataSourceName_Value_"+dbJndi, dbDS, '/weblogic-connector/outbound-resource-adapter/connect
ion-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connection-properties/properties
/property/[name="dataSourceName"]/value',moduleOverrideNamedb)
if len(dbPlatform)!=0:
makeDeploymentPlanVariable(myPlandb, "ConfigProperty_platformClassName_Value_"+dbJndi, dbPlatform, '/weblogic-connector/outbound-resource-adapte
r/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connection-properties/p
roperties/property/[name="platformClassName"]/value',moduleOverrideNamedb)
if len(sequencePreallocationSize)!=0:
makeDeploymentPlanVariable(myPlandb, "ConfigProperty_platformClassName_Value_"+dbJndi, sequencePreallocationSize, '/weblogic-connector/outbound-
resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="'+dbJndi+'"]/connecti
on-properties/properties/property/[name="sequencePreallocationSize"]/value',moduleOverrideNamedb)
myPlandb.save();
save();
except:
print 'Exception occured while creating datasource'
print 'error infor....', sys.exc_info()[0]
raise
i = i+1
cd('/AppDeployments/DbAdapter/Targets');
print 'updating configuration............. for ', appNameDB
print 'updating configuration............. for ', planPathDB
updateApplication(appNameDB, planPathDB);
startApplication(appNameDB)
activate(block='true');
except:
print '********************************************'
print 'Exception occured while configuring db jndi'
print 'error infor....', sys.exc_info()[0]
undo('false','y')
exit('y',1001)
print '********************************************'
Step 3) Invoke WLST and run the script : wlst.sh DBAdaptorConfig.py dev
great article, thank you
ReplyDelete