2015-10-05 63 views
2

該任務是使用wsadmin(Jython)修改名稱空間綁定。 我有幾個範圍服務器的字符串綁定。我打算列出現有的綁定;添加/修改目標綁定。使用wsadmin修改名稱空間綁定Jython

我可以列出他們:

for ns in AdminConfig.list('NameSpaceBinding').splitlines() : 
    name = AdminConfig.showAttribute(ns, 'name') 
    stringToBind = AdminConfig.showAttribute(ns, 'stringToBind') 
    print '%s="%s"' % (name, stringToBind) 

我可以創造一個新的:

server1 = AdminConfig.list('Server') 
print AdminConfig.create('StringNameSpaceBinding', server1, [['name', 'binding2'], ['nameInNameSpace', 'myBindings/myString'], ['stringToBind', "This is the String value"]]) 
AdminConfig.save() 
  1. 如何修改現有的有一個的情況下,結合?
  2. 如何刪除綁定?

我想可以用AdminConfig.modify和AdminConfig.remove來完成。 鏈接:

  1. 文件從IBM:使用Jacl Configuring namespace bindings using the wsadmin scripting tool
  2. 修改綁定:Configuring namespace binding

回答

2

我設法做我自己。我沒有Jython的經驗,但它的工作原理。腳本需要4個參數:目標服務器範圍,綁定名稱,綁定值和名稱空間中的名稱:

server = sys.argv[0] 
bindingName = sys.argv[1] 
bindingValue = sys.argv[2] 
bindingNameSpace = sys.argv[3] 

# Obtain the "simple" server name 
def getServerName(s): 
    return AdminConfig.showAttribute(s, 'name') 

# Add binding 
def addBindingsToServer(s): 
    for ns in AdminConfig.list('NameSpaceBinding').splitlines() : 
     if bindingName == AdminConfig.showAttribute(ns, 'name'): 
      print "Removing existing binding from Server %s" % getServerName(s) 
      AdminConfig.remove(ns) 

    # Create binding 
    print "Adding binding to Server %s" % getServerName(s) 
    print AdminConfig.create('StringNameSpaceBinding', s, [['name', bindingName], ['nameInNameSpace', bindingNameSpace], ['stringToBind', bindingValue]]) 

# Set server and call function 
server = AdminConfig.getid('/Server:'+server+'/') 
addBindingsToServer(server) 

# Save changes 
if (AdminConfig.hasChanges()): 
    AdminConfig.save()