我正在开发许多用于管理 WAS 基础架构的脚本,并且我得到的印象是 IBM 有人wsadmin
故意搞砸了。这不可能是意外。
这是一个“简单”的例子:
for node in AdminConfig.list('Node').splitlines():
nodeName = AdminConfig.showAttribute(node, 'name')
for srv in AdminConfig.list('Server', node).splitlines():
if AdminConfig.showAttribute(srv, 'serverType') == 'APPLICATION_SERVER':
serverName = AdminConfig.showAttribute(srv, 'name')
prop = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/Property:java.awt.headless/' % (nodeName, serverName))
if prop:
AdminConfig.modify(prop, [ ['value','true'] ])
else:
jvm = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/' % (nodeName, serverName))
AdminConfig.create('Property', jvm, [ ['name', 'java.awt.headless'], ['value', 'true'] ], 'systemProperties')
上面的脚本不仅不可维护,而且不可读。该wsadmin
工具是只写工具!一个人写了一个脚本,第二天就无法理解它是如何工作的,甚至无法理解它的作用!
这样不是更容易吗?:
for node in list('Node'):
nodeName = node.name
for srv in node.list('Server'):
if srv.serverType == 'APPLICATION_SERVER':
jvm = srv.processDefinitions[0].jvmEntries[0]
jvm.createOrModify('Property', { 'name': 'java.awt.headless' }, { 'value': 'true' })
...如果 WAS 脚本更友好,人们可以很容易地弄清楚脚本的作用,而无需花费几分钟来尝试理解繁忙的 API。更不用说易于维护了。
有没有人见过/尝试过实现更友好的管理工具(或 wsadmin 库)?
我问是因为我实际上打算开发一个友好的 Jython 库,我只是想避免重新发明轮子。
我见过很多面向任务的 Jython 库。其中一些在较新版本的 WAS 中可用,另一些已在 IBM developerWorks 上发布,一些库在 Web 上可用。对我来说,它们是另一种需要学习的 API,它们仅对有限的一组任务有用。我宁愿寻找通用的 WAS 脚本工具/库。
编辑:这个问题是一个更大的 WebSphere 自动化项目之前的研究的一部分。当时我询问的图书馆不存在,因此我开始开发 WDR。你可以在这里找到它:http ://wdr.github.io/WDR/ 。