脚本中的wsadmin jython脚本调用方法

wsadmin jython script call method in script

有没有办法通过wsadmin程序调用jython脚本中的特定函数?

# 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 提示:

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 脚本。

谢谢。

这有点乱七八糟,但您可以将其附加到您的脚本中:

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

另一种方法是将您的函数保留在此文件中,并编写第二个 python 脚本来执行调用哪些函数的逻辑:

import sys
execfile("BusAndBusMemeber.py")
if sys.argv[0] == "devCreateBus":
  devCreateBus();
else:
  print("Unknown arg %s" % sys.argv[0])

您还可以组合 -profile-c 选项,例如:

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

它仍将 运行 贯穿整个 -profile 脚本,因此您可能只需要其中的函数而不是“main”。