0

我有一个 Jython 脚本,用于在 Websphere 7.0 服务器上设置 JDBC 数据源。我需要在该数据源上设置几个属性。我正在使用这段代码,它有效,除非value'-'

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

我需要将dateSeparator我的数据源上的属性设置为 - 破折号。当我运行这个脚本时,setCustomProperty(ds, 'dateSeparator', '-')我得到一个异常,上面写着“无效的属性:”。我发现它认为破折号意味着需要另一个参数/参数对。

有没有办法让 AdminTask 接受破折号?

注意:我无法通过 AdminConfig 设置它,因为我找不到获取正确属性 id 的方法(我有多个数据源)。

4

3 回答 3

1

这是一个使用的解决方案,AdminConfig您可以将属性值设置为 dash -。该解决方案考虑了多个数据源,通过指定适当的范围(即服务器,但如果您的数据源存在于不同的范围内,则可以修改)找到正确的数据源,然后按名称查找数据源。该解决方案还考虑修改现有的“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()
于 2011-08-18T18:53:45.913 回答
0

请参阅管理控制台首选项设置。您可以执行您现在正在尝试的操作,并且您应该会看到管理控制台正在创建供自己使用的 Jython 等效项。然后只需复制它。

于 2011-02-04T17:28:26.300 回答
-1

尝试使用字符串而不是数组来传递参数,使用双引号来包围以破折号开头的值

例子:

AdminTask.setVariable('-variableName JDK_PARAMS -variableValue "-Xlp -Xscm250M" -variableDescription "-Yes -I -can -now -use -dashes -everywhere :-)" -scope Cell=MyCell')
于 2015-05-16T15:55:15.113 回答