wsadmin jython script Aufrufmethode im Skript

Sep 25 2020

Gibt es eine Möglichkeit, bestimmte Funktionen in einem Jython-Skript über das Programm wsadmin aufzurufen?

# 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()

vom Server cmd Eingabeaufforderung:

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

Oder

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

Bisher konnte ich das Jython-Skript nur ausführen, indem ich einfach die AdminTasks ausgeschrieben habe.

Vielen Dank.

Antworten

1 covener Sep 25 2020 at 21:32

Es ist ein bisschen wie ein Hack, aber Sie können dies an Ihr Skript anhängen:

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

Eine Alternative besteht darin, Ihre Funktionen in dieser Datei zu belassen und ein zweites Python-Skript zu schreiben, das die Logik der aufzurufenden Funktionen ausführt:

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

Sie können auch die -profileund -cOptionen wie folgt kombinieren :

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

Es wird weiterhin das gesamte -profile-Skript durchlaufen, sodass Sie wahrscheinlich nur Funktionen darin haben möchten, keine "main".