使用wsadmin进行Jython:WASX7017E com.ibm.ws.scripting.ScriptingException:无效的对象名称

时间:2015-10-12 11:31:08

标签: wsadmin jython-2.7

我有一个调用wsadmin库的Jython脚本来配置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”打印:

  

Teradata JDBC Provider(cells / jsr-websphere-1Cell01 / nodes / jsr-websphere-1Node01 / servers / jsr-business | resources.xml#JDBCProvider_1444648929602)“

看起来像一个正确的对象ID

但是,当使用它来创建数据源时,我收到以下错误:

  

WASX7017E:exceptionreçuelorsde l'exécutiondufichier“/root/jsr_auto_deployment/jsr.py”; informations sur l'exception:com.ibm.ws.scripting.ScriptingException:无效的对象名:“Teradata JDBC Provider(cells / jsr-websphere-1Cell01 / nodes / jsr-websphere-1Node01 / servers / jsr-business | resources.xml #JDBCProvider_1444648929602)“

我通过瘦客户端使用Jython 2.7。重用AdminConfig.create()返回的对象与运行wsadmin.sh的Jython脚本运行良好

1 个答案:

答案 0 :(得分:0)

我的问题出在那条线上: was_path = AdminConfig.getid(was_path)

我大部分时间都在传递字符串,但这次我已经使用了ID。所以我删除了函数中的AdminConfig.getid,并在必要时将其添加到调用中。