我正在编写一个WLST脚本来部署一些WAR和一个EAR。但是,间歇性地,脚本将超时,因为它似乎无法获得编辑锁(此脚本是许多其他脚本链的一部分)。我想知道,有没有办法覆盖或停止服务器上的任何当前锁定?这只是一个临时解决方案,但为了时间的利益,它现在可以做到。
感谢。
答案 0 :(得分:2)
您可以尝试设置等待时间和超时时间:
startEdit([waitTimeInMillis], [timeoutInMillis], [exclusive]).
其他脚本是否出错,会话被锁定?您可以尝试在这些周围添加异常处理。此外,如果您在管理控制台中启用了“自动获取锁定”,并且您有时会使用管理控制台,如果您同时运行脚本,即使您没有进行“需要锁定”更改,也会导致问题。 / p>
另外,您是否对链式脚本使用相同的用户?
答案 1 :(得分:0)
在WLST中,您可以传递一个数字作为参数来获得独占锁定。这允许脚本获取与管理员从控制台锁定时使用的常规锁不同的锁。它还可以防止同一脚本的两个实例互相踩踏。
但是,这会创建最复杂的变更合并方案,最好避免(按流程)。
可以找到有关配置锁的Oracle文档here。
或者,如果您希望脚本临时解除任何现有锁定而不管挂起的更改,您也可以从控制台禁用更改管理,从而最大限度地减少由此带来的不便。
WLST还包含您可以在cancelEdit
之前运行的startEdit
命令。希望其中一个选项能够实现!
答案 2 :(得分:0)
只要您以管理用户身份运行WLST,您就应该可以使用edit()命令跳转到现有的编辑会话 - 我已经对两个管理员用户进行了快速测试,其中一个在管理员中控制台和一个使用WLST,它似乎工作正常 - 我可以在WLST解释器内看到管理控制台会话中的更改。
你可以在对startEdit
的调用周围放置一个非常简单的异常处理程序,它将记录异常的堆栈跟踪,但不执行任何其他操作。然后依靠edit
调用将您带入更改会话。
如果另一个脚本启动了一个编辑会话并且期望能够提交更改会话本身,那么依赖于它将会很棘手 - 您将在多个调用中获得异常和不可靠的行为。
答案 3 :(得分:0)
从另一位管理员处获取配置更改锁: 如果另一个管理员已具有配置锁定,则会显示以下消息:另一个用户已拥有该锁定。您需要等待释放锁定,或者锁定。