2016-03-08 197 views
0

我在WebSphere Application Server(WAS)中有近百個數據源,並且由於辦公室重新定位,數據庫服務器的IP已更改,我需要更新數據源IP地址我的WAS也是。修改WebSphere Application Server中的數據源IP地址

考慮到它易於通過管理控制檯更新數百個IP。

有沒有什麼辦法可以通過更新配置文件或運行腳本來進行更改?我的WAS版本是7.0。

回答

0

你可以做到這一點使用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上的所有屬性,所以你可以在那裏得到它

一些有用的鏈接:

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]) 

腳本應同樣援引上述情況,但沒有數據源參數,唯一的參數是新的主機名或IP地址:

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