【问题标题】:How to override edit locks如何覆盖编辑锁
【发布时间】:2011-04-08 23:39:46
【问题描述】:

我正在编写一个 WLST 脚本来部署一些 WAR 和一个 EAR。但是,该脚本会间歇性地超时,因为它似乎无法获得编辑锁定(此脚本是许多其他脚本链的一部分)。我想知道,有没有办法覆盖或停止服务器上的任何当前锁?这只是一个临时解决方案,但考虑到时间,现在就可以了。

谢谢。

【问题讨论】:

    标签: weblogic wlst


    【解决方案1】:

    您可以尝试设置等待时间和超时时间:

    startEdit([waitTimeInMillis], [timeoutInMillis], [exclusive]).  
    

    其他脚本是否出错,导致会话锁定?您可以尝试围绕这些添加异常处理。此外,如果您在管理控制台中启用了“自动获取锁定”并且您使用管理控制台有时会在同时运行脚本时导致问题,即使您没有进行“需要锁定”的更改。

    另外,您是否对链式脚本使用相同的用户?

    【讨论】:

    • 没有其他脚本出错。肯定需要更多的异常处理,但我必须处理我在这个截止日期前所拥有的东西。我将不得不调查是否让管理控制台保持打开状态,我没有意识到它可能会自动锁定。这很可能是问题所在。它是所有脚本的同一用户。感谢您的帮助!
    【解决方案2】:

    在 WLST 中,您可以传递一个数字作为参数来获得排他锁。这允许脚本获取与管理员从控制台锁定时使用的常规锁定不同的锁定。它还可以防止同一脚本的两个实例相互踩踏。

    但是,这会产生复杂的变更合并场景,最好避免(通过流程)。

    可以在here找到Oracle关于配置锁的文档。

    或者,如果您希望脚本暂时解除任何现有的锁定,而不管挂起的更改如何,您也可以从控制台禁用更改管理,从而最大程度地减少造成的不便。

    WLST 还包含cancelEdit 命令,您可以在startEdit 之前运行该命令。希望这些选项之一成功!

    【讨论】:

      【解决方案3】:

      要从其他管理员那里获取配置更改锁定: 如果另一个管理员已经拥有配置锁,则会显示以下消息:另一个用户已经拥有该锁。您将需要等待锁被释放,或者获取锁。

      1. 找到更改中心在左上角 管理控制台。
      2. 单击“锁定并编辑”。
      3. 进行配置更改。
      4. 在更改中心,单击激活更改。并非所有更改都需要 立即生效。有些需要重新启动(请参阅使用更改 中心)。

      【讨论】:

        【解决方案4】:

        只要您以管理用户身份运行 WLST,您就应该能够使用 edit() 命令跳转到现有的编辑会话 - 我已经对两个管理员用户进行了快速测试,其中一个在 Admin控制台和一个使用 WLST 的控制台,它似乎工作正常 - 我可以在 WLST 解释器中看到管理控制台会话中的更改。

        您可以在对startEdit 的调用周围放置一个非常简单的异常处理程序,该处理程序将记录异常的堆栈跟踪,但什么也不做。然后依靠edit 调用将您弹出到更改会话中。

        如果另一个脚本已经启动了一个编辑会话并且期望能够自己提交该更改会话,那么依赖它将会很棘手 - 您将在多次调用中遇到异常和不可靠的行为。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-13
          • 2012-11-27
          • 2014-02-13
          相关资源
          最近更新 更多