Método de chamada de script jython wsadmin no script

Sep 25 2020

Existe uma maneira de chamar funções específicas em um script jython por meio do programa wsadmin?

# BusAndBusMemeber.py

def devCreateBus:
    AdminTask.createSIBus('[-bus intjmsbus -description [SIBus intjmsbus] -busSecurity false]')
    AdminTask.addSIBusMember('[-bus intjmsbus -node ctgNode01 -server MXServer]')
    AdminConfig.save()

def devDeleteBus:
    AdminTask.deleteSIBus('[-bus intjmsbus]')
    AdminConfig.save()

do prompt de cmd do servidor:

C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py devCreateBus

Ou

C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py [devCreateBus]

até agora, a única maneira de executar o script jython é simplesmente criar um script de AdminTasks.

obrigado.

Respostas

1 covener Sep 25 2020 at 21:32

É um pouco hack, mas você pode anexar isso ao seu script:

globals()[sys.argv[0]]()

Uma alternativa é manter suas funções neste arquivo e escrever um segundo script Python que faz a lógica de quais funções chamar:

import sys
execfile("BusAndBusMemeber.py")
if sys.argv[0] == "devCreateBus":
  devCreateBus();
else:
  print("Unknown arg %s" % sys.argv[0])
1 ScottKurz Sep 25 2020 at 22:16

Você também pode combinar as opções -profilee -ccomo:

.wsadmin.sh -profile "functions.py" -c "print devCreateBus ()"

Ele ainda executará todo o script -profile, então você provavelmente só deseja funções lá, não um "principal".