วิธีการเรียกสคริปต์ wsadmin jython ในสคริปต์

Sep 25 2020

มีวิธีเรียกใช้ฟังก์ชันเฉพาะในสคริปต์ jython ผ่านโปรแกรม 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()

จากเซิร์ฟเวอร์ cmd prompt:

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

หรือ

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

จนถึงตอนนี้วิธีเดียวที่ฉันสามารถเรียกใช้สคริปต์ jython ได้คือเพียงแค่เขียนสคริปต์ AdminTasks

ขอบคุณ.

คำตอบ

1 covener Sep 25 2020 at 21:32

เป็นการแฮ็กเล็กน้อย แต่คุณสามารถต่อท้ายสคริปต์ของคุณได้:

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

อีกทางเลือกหนึ่งคือเก็บฟังก์ชันของคุณไว้ในไฟล์นี้และเขียนสคริปต์ python ตัวที่สองซึ่งใช้ตรรกะของฟังก์ชันที่จะเรียก:

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

คุณยังสามารถรวม-profileและ-cตัวเลือกต่างๆเช่น:

.wsadmin.sh -profile "functions.py" -c "พิมพ์ devCreateBus ()"

มันจะยังคงทำงานผ่านสคริปต์ - โปรไฟล์ทั้งหมดดังนั้นคุณอาจต้องการเพียงแค่ฟังก์ชันในนั้นไม่ใช่ "main"