人性化的WebSphere脚本工具/库?

人性化的WebSphere脚本工具/库?,websphere,jython,wsadmin,Websphere,Jython,Wsadmin,我正在开发大量用于管理WAS基础设施的脚本,我得到的印象是,IBM有人故意搞砸了wsadmin。这不可能是个意外 下面是一个“简单”的例子: AdminConfig.list('node').splitlines()中节点的: nodeName=AdminConfig.showAttribute(节点“名称”) 对于AdminConfig.list('Server',node.).splitlines()中的srv: 如果AdminConfig.showtattribute(srv,'serve

我正在开发大量用于管理WAS基础设施的脚本,我得到的印象是,IBM有人故意搞砸了
wsadmin
。这不可能是个意外

下面是一个“简单”的例子:

AdminConfig.list('node').splitlines()中节点的
:
nodeName=AdminConfig.showAttribute(节点“名称”)
对于AdminConfig.list('Server',node.).splitlines()中的srv:
如果AdminConfig.showtattribute(srv,'serverType')=='APPLICATION\u SERVER':
serverName=AdminConfig.showtattribute(srv,'name')
prop=AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/Property:java.awt.headless/'%(nodeName,serverName))
如果是道具:
AdminConfig.modify(prop,[['value','true']]
其他:
jvm=AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine://'%(nodeName,serverName))
create('Property',jvm,[['name',java.awt.headless'],['value','true']],'systemProperties')
上面的脚本不仅不可维护,而且不可读。
wsadmin
工具是一个只写工具!一个人写了一个脚本,第二天就无法理解它是如何工作的,甚至无法理解它是做什么的

这样不是更容易吗

列表中节点(“节点”)的
:
nodeName=node.name
对于node.list('Server')中的srv:
如果srv.serverType==“应用程序\服务器”:
jvm=srv.processDefinitions[0]。jvm条目[0]
createOrModify('Property',{'name':'java.awt.headless'},{'value':'true'})
。。。如果脚本编写更友好,那么不需要花费几分钟的时间来理解繁忙的API,就可以轻松地了解脚本的功能。更不用说易于维护了

是否有人见过/试图实现更友好的管理工具(或wsadmin库)

我这样问是因为我实际上计划开发一个友好的Jython库,我只是想避免重新发明轮子

我见过很多面向任务的Jython库。其中一些已在较新版本的WAS中提供,其他已在IBM developerWorks上发布,一些库已在web上提供。对我来说,它们是另一个需要学习的API,只对有限的任务有用。我正在寻找通用的WAS脚本工具/库


编辑:这个问题是大型WebSphere自动化项目之前研究的一部分。我问的那个图书馆当时并不存在,所以我开始开发WDR。您可以在这里找到:。

我所知道的唯一工具是Rational Automation Framework。它旨在帮助自动化许多不同中间件组件的部署、配置和管理

我没有直接使用这个工具,但我的理解是,您不需要编写任何脚本来管理服务器。实际上,您可以从一个环境(开发或测试)中“导出”WAS配置,并将其“导入”到另一个环境中。它甚至可以保存配置的版本历史记录


我很想知道您遇到的任何其他工具。

IBM developerWorks有一个名为
wsadminlib
的非官方(因此不受支持)库。我从stackoverflow上的另一个问题中发现了这一点,答案是BradT:。该库是由一些IBM开发人员创建的,他们对wsadmin jython语法的看法与您相同

因为这个库只是另一个jython文件,所以您可以将它导入到自己的脚本中,并直接调用这些方法。以下是启动应用程序服务器的示例,摘自:


你们可以在图书馆和图书馆里找到更多的信息。同样,这些链接在BradT对上述另一个问题的回答中。

谢谢Nick。我要找的工具必须有脚本。花哨的GUI根本不起作用。实际上,使用比2002年Jython 2.1版本(甚至更古老的Jacl)更新的东西会更好。没有机会用这种语言解析任何XML/YAML/JSON,通常所有Python项目在2.1年前就停止支持Python了。这是wsadmin中的另一个难题……嘿,你帮助我理解了wsadmin为何如此令人沮丧。这可能是有意的。谁会考虑购买皇家空军,如果WSADMIN更方便和建立?嗯,对于一些历史上的皇家空军,这不是最初开发的IBM。它最初是由另一家公司创建的,然后IBM购买了它以进一步开发。我现在很好奇为什么它必须是一个脚本化的解决方案。如果您希望将您的解决方案集成到构建或部署过程中,我相信RAF可以与它们集成,同时节省您编写wsadmin脚本的时间。对于后台,wsadmin只从Jacl开始,Jacl是一种基于字符串的语言。添加Jython支持时,AdminConfig等的绑定按原样重用,这意味着您必须与Jython中基于字符串的绑定交互。我同意这是非常不自然的。我从来没有想过这一点,这就是为什么我仍然用Jacl编写所有wsadmin脚本,尽管Jython本身是一种更好的语言……没错,现在有了Jacl遗产,我们必须进行所有splitline()调用和许多其他黑客操作来处理配置ID和MBean ID列表。事实上,非常有趣的是,Jacl在wsadmin中被弃用(从WAS 5.1开始),并且仍然是默认值。即使在最新和最伟大的WAS 8.5中,Jacl也曾被“弃用”,但在7.0中它被改为“稳定”,并且在8.5()时仍然稳定。“已弃用”意味着IBM可能会删除该功能,但在它被标记为已弃用后的两个主要版本之前。“稳定化”意味着IBM无意删除该功能,但他们也希望
execfile('/tmp/wsadminlib.py')

servername = 'server1'
nodename = 'node1'

startServer(nodename,servername)