WASX7129E:无法在类型“ DescriptiveProperty”的父级中创建“ Property”类型的对象

时间:2019-01-22 13:22:46

标签: websphere jython wsadmin

我正在使用wasdmin shell和jython lang在WAS9中设置属性。实际上,我已经使用几个shell和jython脚本创建了一个自动化过程,这有助于我的应用程序设置。 使用AdminConfig.create()时,它会为某些属性引发以下异常:

[1/17/19 17:06:20:032 CET] 00000001 AbstractShell E WASX7120E:来自文本为“ com.ibm.ws.scripting.ScriptingException”的异常的诊断信息:WASX7129E:无法创建类型为“ Property”的对象在“描述性属性”类型的父母中 “如下:

com.ibm.ws.scripting.ScriptingException:WASX7129E:无法在类型为“ DescriptiveProperty”的父级中创建“属性”为对象的对象

我的代码首先检查属性是否已经存在,如果存在,则将其删除并创建它,这是在查看IBM的jython文件以添加JVM属性后收到的。这是我的代码的当前流程。之前我曾经检查过属性是否已经存在,如果存在,则用它来修改它,否则创建它。我从Modify块中收到其他错误,这就是为什么我现在使用Delete然后创建逻辑的原因。

currentProps = getListArray(AdminConfig.list(property, parent))
for prop in currentProps:
    if property == AdminConfig.showAttribute(prop, "name"):
        logging.info('Removing existing property from Server')
        AdminConfig.remove(prop)

# create new property
logging.info('Creating new property %s', key)
if type:
    AdminConfig.create(
        property,
        parent,
        [
            [ 'type',  type ],
            [ 'name',  key ],
            [ 'value', value ],
        ]
    )
else:
    AdminConfig.create(
        property,
        parent,
        [
            [ 'name',  key ],
            [ 'value', value ],
        ]
    )

我愿意知道是否可以判断哪个属性是描述性的,因此我可以使用if else块进行转移。

1 个答案:

答案 0 :(得分:0)

发生的错误是正确的,必须通过检查父级属性的类型来处理。 如果不是属性,那么我正在使用AdminConfig.modify(),如果它是属性类型,那么我将使用AdminConfig.remove()和AdminConfig.create()。

if('#DescriptiveProperty_' in parent) or ('#StreamRedirect_' in parent):
  AdminConfig.modify(parent,[[ key, value ]]

这解决了问题,不再出现类似以下的错误:     com.ibm.ws.scripting.ScriptingException:WASX7129E:无法在“ DescriptiveProperty”类型的父级中创建“ Property”类型的对象