0

更新が必要なスクリプトがあります。現在、すべてのデータソースに対してパスワードが要求されていますが、現在では、汎用データソースとともにいくつかのマルチ データソースがあります。私の要件は、データソースがマルチ データソースである場合は常にそれをスキップし、パスワードの入力を求めないようにすることです。現在のスクリプトを以下にリストしました。

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)

これまでのところ、自分のスレッドやブログを見てきましたが、問題に関連するものはありません。マルチデータソースを作成するためのヘルプがありますが、私のシナリオを満たすためにそれを識別する方法のヒントが見つかりませんでした.

4

2 に答える 2

0

正確には直観的ではありませんが、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)
于 2014-10-13T21:52:30.820 に答える