【问题标题】:How to target WorkManager to multiple clusters without hardcoding cluster name or specifying cluster names in property file如何在不硬编码集群名称或在属性文件中指定集群名称的情况下将 WorkManager 定位到多个集群
【发布时间】:2019-05-30 03:48:39
【问题描述】:

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

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

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

这是我正在使用的 wlst:

#
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 定位到域中的所有集群,而不对任何集群名称进行硬编码。请帮忙!

【问题讨论】:

  • 您的脚本中有一个小错误,您只显示一个集群,因为“print svr”指令没有缩进。因此,您只打印域的最后一个集群。
  • 您好科林,感谢您的快速回复。缩进“print svr”现在打印所有 3 个集群名称,但定位不适用于所有 3 个集群。脚本仍然只针对最后一个集群。请指教。提前致谢。

标签: weblogic wlst


【解决方案1】:

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

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()

【讨论】:

  • 非常感谢科林,工作就像一个魅力..!!谢谢你的解释..
  • 嘿科林,刚刚发现脚本没有针对其中包含连字符或下划线的集群名称。例如:“Cluster-1”“Cluster-2”Cluster_1”“Cluster_2”。请告知。
  • 我收到以下错误:“WLSTException:执行设置时出错:设置属性目标时出错:参数类型不匹配”
  • 我已经编辑了我的答案以简化一点源代码。你能试试吗? webLogic 版本是多少?
  • 感谢科林,它现在可以完美地用于带有连字符或下划线的集群,我之前做错了什么?请告诉我。非常感谢您的帮助!
【解决方案2】:

给你:(去掉那个 svr 变量)

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

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 2022-08-14
    • 2019-04-04
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多