这是部署配置管理器代理(CMP)应用程序中大型任务中的一部分。
GregorianCalendar oldCCTime = b.getTimeOfLastCompletionCode(); b.setLongDescription(newDesc); GregorianCalendar newCCTime = oldCCTime; while ((newCCTime == null) || (newCCTime.equals(oldCCTime))) { newCCTime = b.getTimeOfLastCompletionCode()); Thread.sleep(1000); } CompletionCodeType ccType = b.getLastCompletionCode(); if (ccType == CompletionCodeType.success) { // etc. }
在本示例中,应用程序一开始使用 getTimeOfLastCompletionCode() 方法确定代理上的操作的最后一次完成时间。该方法返回拓扑最后一次接收到完成代码的时间;如果未接收到任何返回码,则返回 NULL 值。该应用程序尝试更新代理的 LongDescription,然后不断监视等待 setLongDescription() 命令的结果返回到 CMP 的拓扑。当发生这种情况时,控制中断跳出 while 循环,并确定是最后一次完成代码。
这种算法不但不适用于多线程的应用程序,而且在确定命令结果时效率很低,因为在配置管理器处理请求期间,它会使 CMP 应用程序等待。
执行该操作的更佳方法是使用受管对象通知;请参阅使用带有对象通知的配置管理器代理检查代理域管理的结果。