修改WebSphere Application Server中的数据源IP地址

时间:2016-03-08 01:31:45

标签: ibm-was

我在WebSphere Application Server(WAS)中有将近一百个数据源,并且由于办公室重定位,数据库服务器的IP已经更改,我还需要更新WAS中的数据源IP地址。

考虑到它很容易通过管理控制台更新一百个IP。

有没有办法可以通过更新配置文件或运行脚本来进行更改?我的WAS版本是7.0。

3 个答案:

答案 0 :(得分:1)

您应该能够使用WAS管理员控制台的内置"命令帮助"捕获简单的代码片段以列出数据源并通过在UI中完成这些操作来更改它们。

获取这些片段并创建一个新的jython脚本以列出并更新所有这些脚本。

有关命令援助的更多信息:

  

http://www.ibm.com/developerworks/websphere/library/techarticles/0812_rhodes/0812_rhodes.html

wsadmin脚本库:

  

https://github.com/wsadminlib/wsadminlib

答案 1 :(得分:0)

您可以使用wsadmin脚本来实现此目的。 Covener有正确的想法,使用管理控制台的命令帮助手动执行更新(获取代码),然后将其转储到可以自动执行的脚本中。

基本思想是数据源在其下嵌套了一组属性,其中一个属性是ip地址。因此,您希望编写一个脚本,该脚本将查询数据源,查找其嵌套属性集,并迭代属性集以查找要更新的“ipAddress”属性。

这是一个更新“ipAddress”属性值的函数。

import sys

def updateDataSourceIP(dsName, newIP):
  ds = AdminConfig.getid('/Server:myServer/JDBCProvider:myProvider/DataSource:' + dsName + '/')
  propertySet = AdminConfig.showAttribute(ds, 'propertySet')
  propertyList = AdminConfig.list('J2EEResourceProperty', propertySet).splitlines()
  for prop in propertyList:
    print AdminConfig.showAttribute(prop, 'name')
    if (AdminConfig.showAttribute(prop, 'name') == 'ipAddress'):
      AdminConfig.modify(prop, '[[value '" + newIP + "']]')
  AdminConfig.save();

# Call the function using command line args
updateDataSourceIP(sys.argv[0], sys.argv[1])

要运行此脚本,您可以从命令行调用以下命令:

$WAS_HOME/bin/wsadmin.sh -lang jython -f /path/to/script.py myDataSource 127.0.0.1

**免责声明:未经测试的脚本。我不知道我的头顶上的“ipAddress”属性的名称,但如果你运行它一次它将打印出ds上的所有属性,所以你可以在那里得到它

一些有用的链接:

答案 2 :(得分:0)

作为对aguibert脚本的改进,为避免必须提供所有100个数据源名称并更新它以更正配置ID的包含路径,请考虑这个脚本,它将更新所有数据源,无论它们的范围如何。重新定义。与往常一样,在开始之前备份您的配置,一旦您满意,脚本按预期工作,请用save()替换AdminConfig.reset()。请注意,如果您在配置中使用连接URL,这些脚本可能无法正常运行。

import sys

def updateDataSourceIP(newIP):
  datasources = AdminConfig.getid('/DataSource:/').splitlines()
  for datasource in datasources:
    propertySet = AdminConfig.showAttribute(datasource, 'propertySet')
    propertyList = AdminConfig.list('J2EEResourceProperty', propertySet).splitlines()
    for prop in propertyList:
      if (AdminConfig.showAttribute(prop, 'name') == 'serverName'):
        oldip = AdminConfig.showAttribute(prop, 'value')
        print "Updating serverName attribute of datasource '" + datasource + "' from " + oldip + " to " + sys.argv[0]
        AdminConfig.modify(prop, '[[value ' + newIP + ']]')
        AdminConfig.reset();


# Call the function using command line arg
updateDataSourceIP(sys.argv[0])

应该像上面那样调用脚本,但没有datasource参数,唯一的参数是新的主机名或IP地址:

$WAS_HOME/bin/wsadmin.sh -lang jython -f /path/to/script.py 127.0.0.1