2011-01-24 46 views
0

我有一个用于在Websphere 7.0服务器上设置JDBC数据源的Jython脚本。我需要在该数据源上设置多个属性。我正在使用此代码,其中工作,除非value'-'你如何逃避Jython/Websphere中的破折号?

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

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

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

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

回答

0

请参阅管理Console preferences settings。你可以做你现在正在尝试的东西,你应该看到管理控制台为自己使用而创建的Jython等价物。然后复制它。

+0

它使用的AdminConfig命令来设置。问题是我不能保证我能够跨多个平台进行getid()属性。我可以列出它们,但是在Linux上执行save()之前,我看不到已经创建的属性。你知道如何访问特定数据源的自定义属性吗? – 2011-02-04 18:27:14

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')