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

3
我正在编写一段代码来启动、停止、卸载和部署我的 WebLogic 应用程序。
我的组件需要部署在几个受控服务器上。
当我手动进行新的部署时,我可以同时启动和停止多个服务器,通过勾选多个框并从下拉菜单中选择“启动”和“停止”即可。如下图所示: enter image description here 但是,当我尝试使用 WLST(WebLogic Scripting Tool)时,我只能一次在一个服务器上进行这些操作。
例如:
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')

有没有一种方法可以用一个命令启动或停止多个服务器?
2个回答

3

与其直接启动和停止服务器,您可以创建任务,然后等待它们完成。

例如:

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)

1
感谢@Trent-bartlem。我很快就要尝试这个。如果有效,我会接受这个作为答案。 - Asanke

1

我知道这是一篇旧文章,今天我在阅读Martin Heinzl写的《高级WebLogic服务器自动化》这本书时,在第282页找到了以下内容。

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

我尝试了一下,它可以并行启动管理服务器。

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

也许对于您来说这并不有用,因为服务器应该在集群中,但我想分享一下 :)


1
谢谢您的回复。是的,这对于群集将会很有帮助。 - Asanke
1
这对于在同一集群中的服务器非常有用,但如果服务器位于不同的集群中,则无法使用。 - yaxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接