wsadmin méthode d'appel de script jython dans un script
Existe-t-il un moyen d'appeler des fonctions spécifiques dans un script jython via le programme 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()
à partir de l'invite cmd du serveur:
C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py devCreateBus
Ou alors
C: \ IBM \ WebSphere .... \ bin> wsadmin -conntype SOAP -user myUsername -password myPassword -lang jython -f BusAndBusMember.py [devCreateBus]
Jusqu'à présent, la seule façon dont j'ai pu exécuter le script jython est simplement de créer un script pour les AdminTasks.
Merci.
Réponses
C'est un peu un hack mais vous pouvez ajouter ceci à votre script:
globals()[sys.argv[0]]()
Une alternative est de conserver vos fonctions dans ce fichier et d'écrire un deuxième script python qui fait la logique des fonctions à appeler:
import sys
execfile("BusAndBusMemeber.py")
if sys.argv[0] == "devCreateBus":
devCreateBus();
else:
print("Unknown arg %s" % sys.argv[0])
Vous pouvez également combiner les options -profileet -ccomme:
.wsadmin.sh -profile "functions.py" -c "print devCreateBus ()"
Il fonctionnera toujours à travers tout le script -profile donc vous ne voulez probablement que des fonctions là-dedans et non un "main".