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