[英]Changing DataSource Password Using WLST (Multiple Domains)
我对WLST脚本非常陌生,目前还处于初学者水平。 我有一个脚本,提示它为读取的每个数据源输入密码。 尽管这部分工作正常,但我面临的挑战是,在生产环境中,我们要运行此脚本,将有多个托管服务器具有相同的数据源,但名称不同,但JNDI相同,因为两个数据源都连接到相同的数据库。
在那种情况下,脚本当前的工作方式,它将提示输入找到的每个数据源的密码,但是我想修改脚本,以便它检查JNDIName的数据源,如果已经使用相同的JNDI的任何数据源提示了密码,那么它将应该使用相同的密码,而不是再次提示输入密码。
还有多个数据源,如何处理这些数据源? 可能吗? 此外,我不知道如何获取每个数据源的JNDIName。 我试图按以下方式获取JNDIName,但无法正常工作-jndiName = dataSource.getJNDIName()
这是我在命令行中遇到的错误-
Problem invoking WLST - Traceback (innermost last):
File "C:\Script\PostDeploy-DataSourcePasswords.py", line 59, in ?
File "C:\Script\PostDeploy-DataSourcePasswords.py", line 43, in updateJDBCPasswords
AttributeError: getJNDIName
这是我正在使用的脚本-
import sys
#import wlstutility
#wlstutility.initialise(globals())
#from wlstutility import *
#from wlstutility.constructors import *
if len(sys.argv)<1:
print 'Usage: wlst.sh wibble.py <host:port>'
print ' for example: wlst.sh wibble.py prfadmin:14801'
exit()
hostPort = sys.argv[1]
print ('host:port = %s' % hostPort )
connectionUrl = ('t3://%s' % hostPort)
WL_USER='weblogic'
commitChanges=True
WL_PWD=raw_input("Enter Weblogic console password: ")
connect(WL_USER, WL_PWD, connectionUrl)
def updateJDBCPasswords():
PARAMS_TEMPLATE = '/JDBCSystemResources/%s/JDBCResource/%s/JDBCDriverParams/%s'
domainConfig()
# Get JDBC DataSources
cd("JDBCSystemResources")
dataSources = cmo.getJDBCSystemResources()
edit()
# For each DataSource update the password
for dataSource in dataSources :
dsName = dataSource.getName()
print ('DataSource Name : = %s' % dsName)
password=raw_input("Enter database password for " + dsName +" : ")
cd(PARAMS_TEMPLATE % (dsName, dsName, dsName) )
cmo.setPassword(password)
## ===========================================================
# Let's get going
edit()
startEdit()
updateJDBCPasswords()
# dump the changes made so far
print "=== START: The changes that will be applied ==="
showChanges()
if commitChanges :
# =========================================================
# commit the changes
save()
activate(block="true")
else:
# =========================================================
# rollback the changes
print "=== ROLLBACK - cancelling the changes so that they don't get applied ==="
cancelEdit('y')
# =========================================================
# all done - bye!
disconnect()
exit()
任何帮助都感激不尽。
感谢和问候,
阿姆鲁特·劳特(Amrut Raut)。
您可以使用简单的WLST脚本在测试/预发布环境中进行尝试,该脚本可以获取JNDI名称。 您可以从下面的ds中获取JNDI名称:
cd('/JDBCSystemResource/' + dsName + '/JdbcResource/' + dsName + '/JDBCDataSourceParams/NO_NAME_0')
jarray_jndi_names=get('JNDINames')
jndi_names=[]
for jname in jarray_jndi_names:
jndi_names.append(jname)
使用您的输入或对环境感觉更好的更改dsName值。 一旦获得了JNDI名称,就需要使用普通的if条件来检查它是否已经存在,那么就可以使用逻辑了。
请注意,所有多数据源仅配置有通用数据源。 尝试以上提示后,分享您的经验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.