我在WebSphere Application Server(WAS)中有近百個數據源,並且由於辦公室重新定位,數據庫服務器的IP已更改,我需要更新數據源IP地址我的WAS也是。修改WebSphere Application Server中的數據源IP地址
考慮到它易於通過管理控制檯更新數百個IP。
有沒有什麼辦法可以通過更新配置文件或運行腳本來進行更改?我的WAS版本是7.0。
我在WebSphere Application Server(WAS)中有近百個數據源,並且由於辦公室重新定位,數據庫服務器的IP已更改,我需要更新數據源IP地址我的WAS也是。修改WebSphere Application Server中的數據源IP地址
考慮到它易於通過管理控制檯更新數百個IP。
有沒有什麼辦法可以通過更新配置文件或運行腳本來進行更改?我的WAS版本是7.0。
您應該能夠使用WAS Admin Console的內置「命令幫助」來捕獲簡單的代碼片段,以便列出數據源並通過在UI中完成這些操作來更改它們。
取出這些片段並創建一個新的jython腳本來列出並更新所有這些腳本。在命令援助
更多信息:
http://www.ibm.com/developerworks/websphere/library/techarticles/0812_rhodes/0812_rhodes.html
wsadmin腳本庫:
你可以做到這一點使用wsadmin scriptin G。 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上的所有屬性,所以你可以在那裏得到它
一些有用的鏈接:
作爲改善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])
腳本應同樣援引上述情況,但沒有數據源參數,唯一的參數是新的主機名或IP地址:
$WAS_HOME/bin/wsadmin.sh -lang jython -f /path/to/script.py 127.0.0.1