【问题标题】:WLST identify the Multi Datasource.WLST 识别多数据源。
【发布时间】:2014-08-19 09:09:23
【问题描述】:

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

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)

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

【问题讨论】:

    标签: passwords datasource wlst identify


    【解决方案1】:

    不是很直观,但是 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)
    

    【讨论】:

      【解决方案2】:

      以下内容可能会有所帮助:

               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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-30
        • 1970-01-01
        相关资源
        最近更新 更多