Jython с wsadmin: WASX7017E com.ibm.ws.scripting.ScriptingException: неверное имя объекта
У меня есть сценарий Jython, вызывающий библиотеки wsadmin для настройки сервера WAS.
У меня есть эти функции:
def createWasObject(was_object_type, was_path, object_params):
if isinstance(was_path, basestring):
was_path = AdminConfig.getid(was_path)
str_params = '['
for k,v in object_params.items():
str_params = str_params + '[' + k + ' "' + v + '"] '
str_params = str_params + ']'
return AdminConfig.create(was_object_type, was_path, str_params)
def createJdbcProviders(was_path, jdbc_providers):
was_object_type = 'JDBCProvider'
for jdbc_provider in jdbc_providers:
jdbc = createWasObject(was_object_type, was_path, jdbc_provider['params'])
print jdbc
for datasource in jdbc_provider['datasources']:
ds = createWasObject('Datasource', jdbc, datasource['params'])
print
"Print jdbc" печатает:
Поставщик JDBC Teradata (ячейки /jsr-websphere-1Cell01/node /jsr-websphere-1Node01/ Servers/jsr-business|resources.xml#JDBCProvider_1444648929602)"
Который выглядит как правильный идентификатор объекта
Однако при использовании его для создания источника данных я получаю следующую ошибку:
WASX7017E: Исключительная ситуация для освобождения "/root/jsr_auto_deployment/jsr.py"; информация об исключении: com.ibm.ws.scripting.ScriptingException: недопустимое имя объекта: "поставщик JDBC Teradata (ячейки /jsr-websphere-1Cell01/node /jsr-websphere-1Node01/ серверы / jsr-business | resources.xml # JDBCProvider_1444648929602)"
Я использую Jython 2.7 через тонкий клиент. Повторное использование объекта, возвращенного AdminConfig.create(), работало хорошо с Jython-скриптом, запускаемым через wsadmin.sh
1 ответ
Моя проблема была в этой строке: was_path = AdminConfig.getid(was_path)
Большую часть времени я передавал строку, но на этот раз я уже использовал ID. Поэтому я удалил AdminConfig.getid в функции и добавил его в вызовы только при необходимости.