首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WebSphere应用程序服务器中修改数据源IP地址

在WebSphere应用程序服务器中修改数据源IP地址
EN

Stack Overflow用户
提问于 2016-03-08 09:31:45
回答 3查看 1.5K关注 0票数 0

我的WebSphere应用服务器( WAS )中有近百个数据源,由于办公室搬迁,数据库服务器的IP已更改,我也需要更新WAS中的数据源IP地址。

考虑到通过管理控制台更新数百个it很容易出错。

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

EN

回答 3

Stack Overflow用户

发布于 2016-03-08 10:05:33

您应该能够使用WAS Admin Console内置的“命令辅助”来捕获简单的代码片段,以列出数据源并只需在UI中完成一次这些操作即可更改它们。

获取这些代码片段,并创建一个新的jython脚本来列出和更新所有这些代码片段。

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

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

wsadmin脚本库:

https://github.com/wsadminlib/wsadminlib

票数 1
EN

Stack Overflow用户

发布于 2016-03-08 11:08:33

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

基本思想是,数据源下面嵌套了一组属性,其中之一是ip地址。因此,您希望编写一个脚本来查询数据源,找到它的嵌套属性集,并遍历属性集以查找要更新的“ipAddress”属性。

下面的函数将更新"ipAddress“属性的值。

代码语言:javascript
复制
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])

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

代码语言:javascript
复制
$WAS_HOME/bin/wsadmin.sh -lang jython -f /path/to/script.py myDataSource 127.0.0.1

**免责声明:未经测试的脚本。我不知道"ipAddress“属性的名字,但是如果你运行一次,它会打印出你的ds上的所有属性,所以你可以把它打印出来

一些有用的链接:

票数 0
EN

Stack Overflow用户

发布于 2016-03-08 23:44:48

作为对aguibert脚本的改进,为了避免必须提供所有100个数据源名称并更新它以纠正配置id的包含路径,请考虑这个脚本,它将更新所有数据源,而不管它们定义的范围是什么。像往常一样,在开始之前备份您的配置,一旦您对脚本的运行情况感到满意,就用AdminConfig.reset()替换save()。请注意,如果您在配置中使用连接URL,这些脚本可能无法正常工作。

代码语言:javascript
复制
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])

该脚本的调用方式应与上面类似,但不带数据源参数,唯一的参数是新的主机名或ip地址:

代码语言:javascript
复制
$WAS_HOME/bin/wsadmin.sh -lang jython -f /path/to/script.py 127.0.0.1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35857340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档