如何在不对集群名称进行硬编码或在属性文件中指定集群名称的情况下将WorkManager定位到多个集群

时间:2019-01-03 14:26:54

标签: weblogic wlst

我有一个WLST脚本来设置WorkManager并将其定位到Weblogic域中的所有集群。问题是我在多个环境中有数百个域,因此不能有多个属性文件。有没有一种方法可以编写wlst脚本,以从域中提取群集详细信息并将其设置为创建的工作管理器的目标?

我尝试使用下面的方法获取群集详细信息,但它只列出了一个群集,该域中配置了3个群集。

cd ('/Clusters')
Clusters = cmo.getClusters()
for clusters in Clusters:
        svr = clusters.getName()
print svr

这是我正在使用的第一个:

import java.lang.Exception
# Connect to ADMIN
##################
userName=sys.argv[1]
userPW=sys.argv[2]
adminURL=sys.argv[3]
WL_DOMAIN=sys.argv[4]
exists = 'no';
connect(userName,userPW,adminURL)
edit()
startEdit()
cd ('/Clusters')
Clusters = cmo.getClusters()
for clusters in Clusters:
        svr = clusters.getName()
print svr
cd('/SelfTuning/' + domainName)
cmo.createWorkManager('workManager')
cd('/SelfTuning/' + domainName + '/WorkManagers/workManager')
set('Targets',jarray.array([ObjectName('com.bea:Name='+svr+',Type=Cluster')], ObjectName))
activate()

上面的脚本将创建的工作管理器仅定向到一个域本身具有3个群集的群集。我想将WM定位到域中的所有群集,而不用硬编码任何群集名称。请帮忙!

2 个答案:

答案 0 :(得分:0)

这是一个算法问题。您的代码不正确。

connect(userName,userPW,adminURL)
edit()
startEdit()
cd('/SelfTuning/' + domainName)
cmo.createWorkManager('workManager')

cd ('/Clusters')
Clusters = cmo.getClusters()

cd('/SelfTuning/' + domainName + '/WorkManagers/workManager')
set('Targets',Clusters)
save()
activate()

答案 1 :(得分:0)

在这里,您可以去:(只需删除该svr变量)

cd ('/Clusters')
Clusters = cmo.getClusters()
for clusters in Clusters:
    print  clusters.getName()