Проблема, с которой мне пришлось столкнуться, когда я начал заниматься администрированием серверов приложений WebSphere Application Server, заключается в том, что интерфейс консоли администрирования WAS был написан java-программистами с учётом их особенных программистских потребностей, и его сложно использовать для повседневных задач администрирования.
Казалось бы, что стоит отображать в списке источников данных адрес подключения к базе данных? Например, в одной замечательной системе в одной большой организации, на сервере присутствовало 164 источника данных с примерно одинаковыми именами типа BackupDSxx – представляете, как легко было во всём этом разобраться?
Эту проблему можно частично компенсировать самописными скриптами, которые отображают данные в нужном формате, либо выполняют команды, которые нужно выполнить, не заставляя при этом переходить по десятку различных веб-страниц с формами и кнопками.
Данный скрипт был написан для инвентаризации JDBC-источников данных Oracle, прописанных на сервере приложений WebSphere Application Server. Он находит все источники данных в ячейке, и выводит такие их атрибуты, как имя, JNDI name, описание, алиас, используемый для подключения, и URL подключения к базе данных. Значения разделены табуляцией, чтобы можно было перенаправить вывод в файл, и вставить его содержимое в Excel-таблицу.
import java
lineSeparator = java.lang.System.getProperty('line.separator')
dsList = AdminConfig.list('DataSource')
# для более конкретного указания области, в которой нужно искать источники данных,
# можно использовать такую строчку - указать имя ячейки, ноды, сервера:
#dsList = AdminConfig.list('DataSource', AdminConfig.getid('/Cell:AdminCell/Node:/'))
dsArray = dsList.split(lineSeparator)
print 'Name\tJNDI Name\tDescription\tJDBC Provider\tAlias\tXA Alias\tURL\tScope'
for ds in dsArray:
url=''
provider = AdminConfig.showAttribute(ds, 'provider')
dsPropertySet = AdminConfig.showAttribute(ds, 'propertySet')
dsProperties = AdminConfig.showAttribute(dsPropertySet, 'resourceProperties')
dsPropsArray = dsProperties.split(' ')
for prop in dsPropsArray:
if prop[0:4] == 'URL(':
url = AdminConfig.showAttribute(prop, 'value')
col1 = str(AdminConfig.showAttribute(ds, 'name'))
col2 = str(AdminConfig.showAttribute(ds, 'jndiName'))
col3 = str(AdminConfig.showAttribute(ds, 'description')).replace('\n',' ')
col4 = str(AdminConfig.showAttribute(provider, 'name'))
col5 = str(AdminConfig.showAttribute(ds, 'authDataAlias'))
col6 = str(AdminConfig.showAttribute(ds, 'xaRecoveryAuthAlias'))
col7 = str(provider).split('/')[-1].split('|')[0]
print col1 + '\t' + col2 + '\t' + col3 + '\t' + col4 + '\t' + col5 + '\t' + col6 + '\t' + url + '\t' + col7