【问题标题】:Jython WLST using python threading module (Weblogic 10)使用 python 线程模块的 Jython WLST (Weblogic 10)
【发布时间】:2012-02-25 23:08:26
【问题描述】:

环境

  • Weblogic 10
  • Sun Java
  • 惠普用户体验

目标

以滚动重启方式重启所有集群的所有托管实例。希望不同的集群同时重启

问题

有没有办法使用 Jython 的线程模块同时执行多个 WLST 操作?

尝试的方法

在一个脚本中,我有集群和服务器实例的类。一个集群有一个服务器实例列表。集群对象上有一个方法可以循环遍历其服务器列表,如果集群健康,则一个一个地重新启动它们。我试过将此方法传递给这样的线程:

Thread(target=lambda: cluster.managedRestart()).start()

但是我收到一个错误 TypeError: can't set arbitrary attribute in java instance: target

想法

将托管重启代码分解成一个单独的文件,并使用execfile()从线程内调用它

还有其他人有什么想法/建议/经验吗?

【问题讨论】:

  • 您好 wmarbut,您解决了线程解决方案吗?如果是,您是如何解决的。您的解决方案可以节省我的重新发明轮子。请分享你在这方面的学习...
  • @PavanWLA 已经好几年了,但我相信我从来没有得到我满意的解决方案。 Jython API 肯定不是线程安全的。我忘记了我在下面的答案中遇到的问题。很抱歉不能提供更多帮助

标签: multithreading weblogic jython wlst


【解决方案1】:

我不认为要显式使用线程来并行启动托管服务器。以下代码将并行启动所有集群。 block='false'not block 控制启动命令,这意味着将发出启动命令,并立即执行下一个启动另一个集群的命令。因此,所有集群都可以并行启动。 shutdown command 也一样。

connect(username='weblogic', password='weblogic1', url='t3://localhost:7001')
clusterList = ls('/Clusters', returnMap='true')
for cluster in clusterList :
    start(cluster, 'Cluster', block='false')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多