Я очень новичок в написании сценариев 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()
Любая помощь будет высоко ценится.
С уважением,
Амрут Раут.