Passwords WLST标识多数据源。

Passwords WLST标识多数据源。,passwords,datasource,wlst,identify,Passwords,Datasource,Wlst,Identify,我有一个脚本需要更新。目前,所有数据源都需要密码,但现在我们有一些多数据源以及通用数据源。我的要求是,只要数据源是一个多数据源,它就应该跳过它,并且不应该提示输入密码。我在下面列出了当前的脚本 def updateJDBCPasswords(): PARAMS_TEMPLATE = '/JDBCSystemResources/%s/JDBCResource/%s/JDBCDriverParams/%s' domainConfig() # Get JDBC DataSources cd("J

我有一个脚本需要更新。目前,所有数据源都需要密码,但现在我们有一些多数据源以及通用数据源。我的要求是,只要数据源是一个多数据源,它就应该跳过它,并且不应该提示输入密码。我在下面列出了当前的脚本

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()
    password=raw_input("Enter database password for "+ dsName +" : ")
    cd(PARAMS_TEMPLATE % (dsName, dsName, dsName) )
    cmo.setPassword(password)

到目前为止,我已经看到了我的线程/博客,但这些都与我的问题无关。有关于创建多数据源的帮助,但找不到任何提示如何识别它以满足我的场景

不太直观,但serverConfig树的根目录中有一个部署列表,其中包括jdbc数据源之类的内容,这是我唯一能找到允许您识别多个数据源的mbean的地方。因此,开始时的附加代码构建了一个要在代码中忽略的名称列表

serverConfig()

deployments=cmo.getDeployments()

multiDataSources = []

for deployment in deployments:
    if (deployment.getType()=="JDBCMultiPool"):
      multiDataSources.append(deployment.getName())

domainConfig()

# Get JDBC DataSources
cd("JDBCSystemResources")
dataSources = cmo.getJDBCSystemResources()

# For each DataSource update the password
for dataSource in dataSources :
    dsName = dataSource.getName()
    if dsName in multiDataSources:
        print("Skipping multidatasource %s" % dsName)
        continue

    print("Processing data source %s" % dsName)

类似下面的内容可以帮助您:

         cd(_dsDir + '/JDBCDriverParams/NO_NAME_0/Properties/NO_NAME_0/Property/user')
            _userprop = cmo.getValue()

            # Multi datasource wouldn't have user properties and hence skipping the updation of multi datasources
            if _userprop is None:
                continue
            else:
                # continue updating password 
                cmo.setValue(_userval)
                # Next set the password
                cd(_dsDir + '/JDBCDriverParams/NO_NAME_0')
                set('PasswordEncrypted', _dsPassword)