如何通过 WLST 一次启动和停止多个 weblogic 托管服务器

How to start and stop multiple weblogic managed servers at one go through WLST

我正在编写代码以在 weblogc 上启动、停止、取消部署和部署我的应用程序。

我的组件需要部署在少数托管服务器上。

当我手动进行新部署时,我可以通过勾选多个框并从下拉菜单中选择启动和停止来并行启动和停止服务器。见下文。

但是当从 WLST 尝试时,我一次可以在一台服务器上进行。

例如:

start(name='ServerX',type='Server',block='true')
start(name='ServerY',type='Server',block='true')

shutdown(name='ServerX',entityType='Server',ignoreSessions='true',timeOut=600,force='true',block='true')
shutdown(name='ServerY',entityType='Server',ignoreSessions='true',timeOut=600,force='true',block='true')

有没有一种方法可以在一次命令中开始停止多个服务器?

create tasks 而不是直接启动和停止服务器,然后等待它们完成。

例如

tasks = []
for server in cmo.getServerLifeCycleRuntimes():
    # to shut down all servers
    if (server.getName() != ‘AdminServer’ and server.getState() != ‘RUNNING’ ):
        tasks.append(server.start())
    #or to start them up:
    #if (server.getName() != ‘AdminServer’ and server.getState() != ‘SHUTDOWN’ ):
    #   tasks.append(server.shutdown())


#wait for tasks to complete
while len(tasks) > 0:
    for task in tasks:
        if task.getStatus()  != ‘TASK IN PROGRESS’ :
            tasks.remove(task)

    java.lang.Thread.sleep(5000)

我知道这是一本老书 post,今天我在读 Martin Heinzl 写的这本书“Advanced WebLogic Server Automation”,所以在第 282 页我找到了这个。

def startCluster(clustername):
    try:
        start(clustername, 'Cluster')
    except Exception, e:
        print 'Error while starting cluster', e
        dumpStack()

我试过了,它并行启动了托管服务器。

请记住,必须先启动 AdminServer,并且您的脚本在尝试之前必须连接到 AdminServer。

也许这对你没有用,因为服务器应该在一个集群中,但我想分享这个:)