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

时间:2012-11-26 19:51:32

标签: websphere jython wsadmin

我正在开发大量用于管理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/

2 个答案:

答案 0 :(得分:4)

IBM developerWorks有一个名为wsadminlib的非官方(以及不受支持的)库。我从stackoverflow上的另一个问题中发现了这个问题,由BradT回答:wsadmin-jython-restart-was-appserver。该库是由一些IBM开发人员创建的,他们对wsadmin jython语法的理解与您一样。

由于这个库只是另一个jython文件,您可以将其导入自己的脚本,并直接调用这些方法。以下是启动应用程序服务器的示例,取自wsadminlib-blog

execfile('/tmp/wsadminlib.py')

servername = 'server1'
nodename = 'node1'

startServer(nodename,servername)

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

答案 1 :(得分:0)

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

http://www-01.ibm.com/software/rational/products/framework/

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

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