UDDI 节点值集的管理
您可以使用 UDDI 注册中心管理接口来检查和管理 UDDI 应用程序的运行时配置。您可以管理关于 UDDI 节点的信息及其激活状态、更新属性和策略、设置发布层限制、注册 UDDI 发布者以及控制值集支持。
值集在 UDDI 注册中心中表示为值集 tModel 实体,具有值为 categorization 的 keyedReference UDDI 类型。此类值集以有效值集为支持。对于用户定义的值集,会使用 UddiNode MBean 操作将此数据装入到 UDDI 注册中心(虽然使用用户定义的值集工具来执行此操作更方便)。
可通过策略将每个值集控制为受支持或不受支持。当通过策略支持值集时,可在 UDDI 发布请求中对其进行引用。UddiNode MBean 提供以下操作来管理值集及其数据:
- getValueSets
- getValueSetDetail
- getValueSetProperty
- updateValueSet
- updateValueSets
- loadValueSet
- changeValueSetTModelKey
- unloadValueSet
- isExistingValueSet
在 WebSphere® Application Server 的样本中,UDDI 注册中心样本中的 ManageValueSetsSample 类演示这些操作。
- getValueSets
- 返回 ValueSetStatus 对象的集合。
- 调用 getValueSets 操作:
List valueSets = uddiNode.getValueSets();
- 将每个元素强制转换为 ValueSetStatus 并输出内容:
for (Iterator iter = valueSets.iterator(); iter.hasNext();) { ValueSetStatus valueSetStatus = (ValueSetStatus) iter.next(); System.out.println(valueSetStatus); }
- 调用 getValueSets 操作:
- getValueSetDetail
- 返回给定值集 tModel 键的 ValueSetStatus 对象。
- 调用 getValueSetDetail 操作:
uddiNode.getValueSetDetail("uddi:uddi.org:ubr:categorization:naics:2002");
- 检索并显示详细信息:
String name = valueSetStatus.getName(); String displayName = valueSetStatus.getDisplayName(); boolean supported = valueSetStatus.isSupported(); System.out.println("name: " + name); System.out.println("display name: " + displayName); System.out.println("supported: " + supported);
- 显示值集属性:
List properties = valueSetStatus.getProperties(); for (Iterator iter = properties.iterator(); iter.hasNext();) { ValueSetProperty property = (ValueSetProperty) iter.next(); System.out.println(property); }
- 调用 getValueSetDetail 操作:
- getValueSetProperty
- 将值集的属性作为 ValueSetProperty 对象返回。此操作主要供管理控制台用来将值集的属性呈现为表中的行。例如,此类属性之一是 keyedReference 属性,指示是否已检查值集。
- 调用 getValueSetProperty 操作:
uddiNode.getValueSetProperty("uddi:uddi.org:ubr:categorization:naics:2002", ValueSetPropertyConstants.VS_CHECKED);
- 读取并显示属性的布尔值:
boolean checked = valueSetProperty.getBooleanValue(); System.out.println("checked: " + checked);
- 调用 getValueSetProperty 操作:
- updateValueSet
- 更新值集状态。只能更新支持的属性。所有其他 setter 方法都可供 UDDI 应用程序使用。
- 通过指定 tModel 键和已更新的支持值创建 ValueSetStatus 对象:
ValueSetStatus updatedStatus = new ValueSetStatus(); updatedStatus.setTModelKey("uddi:uddi.org:ubr:categorization:naics:2002"); updatedStatus.setSupported(true);
- 调用 updateValueSet 操作:
uddiNode.updateValueSet(updatedStatus);
- 通过指定 tModel 键和已更新的支持值创建 ValueSetStatus 对象:
- updateValueSets
- 更新多个值集的值集状态。类似于 updateValueSet 操作,只更新支持的属性。
- 用已更新的 ValueSetStatus 对象填充列表:
List valueSets = new ArrayList(); ValueSetStatus valueSetStatus = new ValueSetStatus(); valueSetStatus.setTModelKey("uddi:uddi.org:ubr:categorization:naics:2002"); valueSetStatus.setSupported(false); valueSets.add(valueSetStatus); valueSetStatus = new ValueSetStatus(); valueSetStatus.setTModelKey("uddi:uddi.org:ubr:categorizationgroup:wgs84"); valueSetStatus.setSupported(false); valueSets.add(valueSetStatus); valueSetStatus = new ValueSetStatus(); valueSetStatus.setTModelKey("uddi:uddi.org:ubr:identifier:iso6523:icd"); valueSetStatus.setSupported(false); valueSets.add(valueSetStatus);
- 调用 updateValueSets 操作:
uddiNode.updateValueSets(valueSets);
- 用已更新的 ValueSetStatus 对象填充列表:
- loadValueSet
- 从本地文件系统上的 UDDI 注册中心 V3 或 V2 分类法数据文件中装入值集的值。注: 还存在获取 ValueSetData 对象的 loadValueSet 操作,但此操作仅供用户定义的值集工具使用。
- 调用 loadValueSet 操作:
uddiNode.loadValueSet("C:/valuesets/myvalueset.txt", "uddi:cell:node:server:myValueSet");
uddiNode.loadValueSet("/valuesets/myvalueset.txt", "uddi:cell:node:server:myValueSet");
- 调用 loadValueSet 操作:
- changeValueSetTModelKey
- 会将分配到某个值集 tModel 的任何值集值分配到新值集 tModel。
- 通过指定旧的和新的 tModel 键来调用 changeValueSetTModelKey 操作:
uddiNode.changeValueSetTModelKey( "uddi:cell:node:server:myValueSet", "uddi:cell:node:server:myNewValueSet");
- 通过指定旧的和新的 tModel 键来调用 changeValueSetTModelKey 操作:
- unloadValueSet
- 用给定的 tModel 键卸载值集的值。
- 调用 unloadValueSet 操作:
uddiNode.unloadValueSet("uddi:myValueSet");
- 调用 unloadValueSet 操作:
- isExistingValueSet
- 确定给定的 tModel 键是否存在值集数据。
- 调用 isExistingValueSet 操作并显示结果:
boolean exists = uddiNode.isExistingValueSet( "uddi:uddi.org:ubr:categorization:naics:2002"); System.out.println("NAICS 2002 is a value set: " + exists);
- 调用 isExistingValueSet 操作并显示结果: