你如何逃避Jython/Websphere中的破折号?
问题描述:
我有一个用于在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的方法。
答
这是一个使用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()
答
尝试使用字符串,而不是一个数组通过使用双引号包围的值开始与参数破折号签署
实施例:
AdminTask.setVariable('-variableName JDK_PARAMS -variableValue "-Xlp -Xscm250M" -variableDescription "-Yes -I -can -now -use -dashes -everywhere :-)" -scope Cell=MyCell')
它使用的AdminConfig命令来设置。问题是我不能保证我能够跨多个平台进行getid()属性。我可以列出它们,但是在Linux上执行save()之前,我看不到已经创建的属性。你知道如何访问特定数据源的自定义属性吗? – 2011-02-04 18:27:14