Metode panggilan skrip wsadmin jython dalam skrip

Sep 25 2020

Apakah ada cara untuk memanggil fungsi tertentu dalam skrip jython melalui program 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()

dari prompt cmd server:

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

Atau

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

sejauh ini satu-satunya cara saya dapat mengeksekusi skrip jython adalah dengan membuat skrip AdminTasks.

Terima kasih.

Jawaban

1 covener Sep 25 2020 at 21:32

Ini sedikit hack, tetapi Anda dapat menambahkan ini ke skrip Anda:

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

Alternatifnya adalah menyimpan fungsi Anda di file ini dan menulis skrip python kedua yang melakukan logika yang berfungsi untuk memanggil:

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

Anda juga bisa menggabungkan opsi -profiledan -cseperti:

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

Ini masih akan berjalan melalui seluruh skrip -profil sehingga Anda mungkin hanya menginginkan fungsi di sana, bukan "main".