Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jython重新启动WebSphereAppCluster_Websphere_Jython_Ibm Connections - Fatal编程技术网

使用Jython重新启动WebSphereAppCluster

使用Jython重新启动WebSphereAppCluster,websphere,jython,ibm-connections,Websphere,Jython,Ibm Connections,我想使用Jython重新启动WebSphere8.5中的AppCluster cluster = AdminControl.completeObjectName('name=ICXTCluster,*') AdminControl.invoke(cluster, 'restart') 这不起作用: 操作重启不在ModelMBeanInfo中 因此,我尝试通过停止然后启动群集来手动实现重启: cluster = AdminControl.completeObjectName('nam

我想使用Jython重新启动WebSphere8.5中的AppCluster

  cluster = AdminControl.completeObjectName('name=ICXTCluster,*')
  AdminControl.invoke(cluster, 'restart')
这不起作用:

操作重启不在ModelMBeanInfo中

因此,我尝试通过停止然后启动群集来手动实现重启:

  cluster = AdminControl.completeObjectName('name=ICXTCluster,*')
  AdminControl.invoke(cluster, 'stop')
  AdminControl.invoke(cluster, 'start')
它抛出另一个错误:

com.ibm.websphere.wlm.exception.ClusterException:Start操作失败,因为另一个管理操作:Stop已在进行中

停止似乎有效,ISC向我显示已停止的AppCluster。但它不会再开始了。我假设这些调用操作是异步的,因此在上一个停止完成之前执行了
AdminControl.invoke(集群,'start')


如何停止群集同步?或者有其他方法重新启动它吗?

因为内置Jython命令似乎不可能,所以我编写了一个脚本,每5秒轮询一次集群状态,并检查它是否等于所需的状态。因此,我们可以使用异步函数,并通过等待服务器停止和启动使其同步:

import time
def set_state_sync(invoke_state, target_state):
    print 'Check state for ' + cluster_name
    cluster = AdminControl.completeObjectName('name=' + cluster_name + ',*')
    state = AdminControl.getAttribute(cluster, 'state')
    print 'Initial state: ' + state
    if state == target_state:
        print 'State is already ' + target_state
        return

    print '[Changed]: Invoke state ' + invoke_state
    AdminControl.invoke(cluster, invoke_state)

    max_wait = 300
    interval = 5
    waited = 0
    while state != target_state:
        time.sleep(interval)
        state = AdminControl.getAttribute(cluster, 'state')
        print 'State poll: ' + state
        waited += interval
        if waited > max_wait:
            print 'Error: Timed out after ' + max_wait + ' seconds!'
            exit()
    return

cluster_name = '{{ cluster_name }}'
set_state_sync('stop', 'websphere.cluster.stopped')
set_state_sync('start', 'websphere.cluster.running')
print 'Finished Restarting'

您还可以使用as systemd启动appcluster,您可以从console/Ansible轻松地重新启动它。查看了吗?