The steps involved in multi datasource confiuration are as follows:
1. Configure individual datasource
2. Configure a new multidatasource
3. Add the datasources created in steip 1
Keeping more flavor (Object-Orientation) to your script we will create a Class in WLST this time. Are you ready??? I know you guys very intelligents and know all WLST tricks how they works and all!! Lets dive into the process of configuration.
-->
#==========================================
# File name: ConfigMDS.py
# Please change the code (line 38) as per your environment and needs
# Author : Inteligent WLA :)
#=============================================
class MDS:
def __init__(self, nam):
self.nam = nam
def configMDS(self):
n=self.nam
try:
cd('/')
cmo.createJDBCSystemResource(n)
cd('/JDBCSystemResources/'+n+'/JDBCResource/'+n)
cmo.setName(n)
cd('JDBCDataSourceParams/'+n)
set('JNDINames',jarray.array([String(n)], String))
cmo.setAlgorithmType('Failover')
dslist=raw_input('Please enter comma separating Datasources for MDS:')
cmo.setDataSourceList(dslist)
cd('/JDBCSystemResources/'+n)
targetType=raw_input('Target to (C)luster or (S)erver: ')
if targetType in ('C','c') :
clstrNam=raw_input('Cluster Name: ')
set('Targets',jarray.array([ObjectName('com.bea:Name='+clstrNam+',Type=Cluster')], ObjectName))
else:
servr=raw_input('Server Name: ')
set('Targets',jarray.array([ObjectName('com.bea:Name='+servr+',Type=Server')], ObjectName))
print 'Succesfully configured MultiDataSource...'
activation()
except BeanAlreadyExistsException:
print 'Error: '+n+' BeanAlreadyExists...'
cancelEdit('y')
exit()
#===== main program===============
if __name__== "main":
connect('wlusr','paswd','t3://AdminUrl:AdminPort')
edit()
startEdit()
mdsName = raw_input("Please enter MultiDataSource name: ")
# create object, call configMDS
MDS(mdsName).configMDS()
print('Exiting...')
exit()
Here you can templatise more by creating the a properties file where you need to store Multidatasoruce name, JNDIName, WebLogic Admin user, Password, AdminURL, the datasource names you wish to add to the multidatasource.
Use the same steps as followed in the Generic Data Source Creation.
# http://unni-at-work.blogspot.com/2009/03/multi-data-source-using-wlst.html
# http://edocs.bea.com/wls/docs100/wlsmbeanref/mbeans/JDBCDataSourceParamsBean.html#AlgorithmType
I get an error setting up the multidatasource:
ReplyDelete[java] AttributeError: setDataSourceList
even tough I have it hardcoded the values and it is as in the scripts written by you or the one recorded.
cmo.setDataSourceList('ENSDS1,ENSDS2')
Any idea how to debug futher?
Thanks for referring the blog.
ReplyDeletedslist is a Python list you need to use input as ['ENSDS1','ENSDS2']
This is like an array in C.
Hope this will help you.
This comment has been removed by the author.
ReplyDeleteHi Pavan,
ReplyDeleteMany thanks for sharing your knowledge across. I have been an avid follower of your blog. I have automated the creation of datasource. But unfortunately, unable to add multiple targets (in a non-clustered environment). For instance if the properties file has DS_TARGETS=soa,osb, I have created a list dsTargetsList=dsTargets.split(","). Then I loop through as, for aTarget in dsTargetsList and call
set('Targets',jarray.array([ObjectName('com.bea:Name='+aTarget+',Type=Server')], ObjectName)). But this doesn't set all the targets. It sets the last target in the list which is osb. After successful activation, you only see one target i.e. osb. Can you help me with this please?
@Jawad, Can you try from the interactive mode so that you can trace what is wrong going after looping or you need loop or not, then you can proceed with the loop.
ReplyDelete