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

问题描述

是否可以通过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。

谢谢。

解决方法

这有点hack,但是您可以将其附加到脚本中:

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”函数。