使用wlst

时间:2016-04-15 14:32:36

标签: weblogic11g wlst

我正在编写一个脚本来自动配置Nodemanager,注册一台计算机并在其中启动de managed servers。我现在拥有的是(不完全是):

connect(...)
cd('/')
for m in cmo.getMachines():
    nombre_machine=m.getName()
    #Solo ejecutamos el NodeManager en el que estamos ejecutando el script.
    if nombre_machine in HOST:
        cd('/Machines/'+nombre_machine+'/NodeManager/'+nombre_machine)
        machine=cmo
        nm_srv_addrs[machine.getListenPort()] = machine.getListenAddress()

for nm_port, nm_addr in nm_srv_addrs.iteritems():
    printInStyle('Iniciando Nodemanager, favor tener paciencia la primera vez.')
    startNodeManager(verbose='false', NodeManagerHome=NM_HOME, ListenPort=str(nm_port), ListenAddress=nm_addr)
    print 'Generando nodemanager.properties ',
    while not os.path.exists(NM_PROP_FILE):
        systime.sleep(10)
        print '\b.',
        sys.stdout.flush()
    print 'Archivo creado!'  

cd('/')
servidores = cmo.getServers()
for s in servidores:
    nombre = s.getName()
    if nombre != 'AdminServer':
        start(nombre)

但是最后一个序列会失败,因为它会尝试启动所有服务器,并且我只想启动运行该脚本的那个服务器。 我相信我所期待的是一种过滤当前机器中服务器的方法。 我会感谢任何帮助或建议。我刚开始使用wlst脚本。 感谢

1 个答案:

答案 0 :(得分:1)

I figured it out thanks to this link

I'll just need to filter in a couple of loops like this:


import os
cd('/')
current_m=''
machines = cmo.getMachines()
for m in machines:
    hostname = os.environ['HOSTNAME']
    nm = m.getNodeManager()
    if nm.getListenAddress() in hostname:
        current_m=m

servers = cmo.getServers()
for s in servers:
    name = s.getName()
    if name != 'AdminServer':
        ref = getMBean('/Servers/'+name+'/Machine/'+current_m.getName())
        if ref != None:
            start(name)