Как вы избегаете черты в Jython / Websphere? - PullRequest
0 голосов
/ 24 января 2011

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 18 августа 2011

Вот решение, которое использует 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()
0 голосов
/ 16 мая 2015

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

Пример:

AdminTask.setVariable('-variableName JDK_PARAMS -variableValue "-Xlp -Xscm250M" -variableDescription "-Yes -I -can -now -use -dashes -everywhere :-)" -scope Cell=MyCell')
0 голосов
/ 04 февраля 2011

См. Управление Настройки консоли .Вы можете делать то, что вы пытаетесь сейчас, и вы должны увидеть Jython-эквивалент, который консоль управления создает для своего собственного использования.Тогда просто скопируйте его.

...