2011-01-24 5 views
0

У меня есть сценарий Jython, который используется для создания источника данных JDBC на сервере Websphere 7.0. Мне нужно установить несколько свойств этого источника данных. Я использую этот код, который работает, если value не является '-'.Как избежать тире в Jython/Websphere?

def setCustomProperty(datasource, name, value): 
    parms = ['-propertyName', name, '-propertyValue', value] 
    AdminTask.setResourceProperty(datasource, parms) 

Мне нужно установить dateSeparator собственность на моем источнике данных только что - прочерк. Когда я запускаю этот скрипт с setCustomProperty(ds, 'dateSeparator', '-'), я получаю исключение, в котором говорится: «Недопустимое свойство:». Я понял, что он считает, что тире означает, что ожидается еще пара параметров/аргументов.

Есть ли способ заставить AdminTask принять тире?

ПРИМЕЧАНИЕ: Я не могу установить его с помощью AdminConfig, потому что я не могу найти способ получить идентификатор правильного свойства (у меня есть несколько источников данных).

ответ

0

Обратитесь к руководству Console preferences settings. Вы можете делать то, что вы сейчас пытаетесь, и вы должны увидеть эквивалент Jython, который создает Консоль управления для собственного использования. Затем просто скопируйте его.

+0

Он использует команду AdminConfig, чтобы установить его. Проблема в том, что я не могу гарантировать, что я смогу getid() это свойство на нескольких платформах. Я могу их перечислить, но в Linux до тех пор, пока не будет выполнено сохранение(), я не могу увидеть уже созданные свойства. Вы знаете, как получить доступ к настраиваемому свойству для определенного источника данных? –

+0

Ах, как неутешительно. Честно говоря, я бы изменил файлы XML. Просто установите значение для некоторого фиктивного значения и выполните поиск и замените файлы конфигурации. Очень уродливый, но выполняет работу с помощью команд пары. – erloewe

1

Вот решение, которое использует AdminConfig, так что вы можете установить значение свойства в тире -. Решение учитывает несколько источников данных, нахождение правильного, задавая соответствующую область (то есть сервер, но это может быть изменено, если ваш источник данных существует в другой области), а затем поиск источника данных по имени. Решение также учитывает модификацию существующего свойства dateSeparator, если оно существует, или создает его, если это не так.

код не выглядит очень элегантно, но я думаю, что это должно решить проблему:

def setDataSourceProperty(cell, node, server, ds, propName, propVal) : 
    scopes = AdminConfig.getid("/Cell:%s/Node:%s/Server:%s/" % (cell, node, server)).splitlines() 
    datasources = AdminConfig.list("DataSource", scopes[0]).splitlines() 
    for datasource in datasources : 
    if AdminConfig.showAttribute(datasource, "name") == ds : 
     propertySet = AdminConfig.list("J2EEResourcePropertySet", datasource).splitlines() 
     customProp = [["name", propName], ["value", propVal]] 
     for property in AdminConfig.list("J2EEResourceProperty", propertySet[0]).splitlines() : 
     if AdminConfig.showAttribute(property, "name") == propName : 
      AdminConfig.modify(property, customProp) 
      return 
     AdminConfig.create("J2EEResourceProperty", propertySet[0], customProp) 

if (__name__ == "__main__"): 
    setDataSourceProperty("myCell01", "myNode01", "myServer", "myDataSource", "dateSeparator", "-") 
    AdminConfig.save() 
-1

Попробуйте использовать строку вместо массива, чтобы передать параметры, используя двойные кавычки, чтобы окружить значения, начиная с тире знак

Пример:

AdminTask.setVariable('-variableName JDK_PARAMS -variableValue "-Xlp -Xscm250M" -variableDescription "-Yes -I -can -now -use -dashes -everywhere :-)" -scope Cell=MyCell') 

 Смежные вопросы

  • Нет связанных вопросов^_^