#weblogic #wlst
#weblogic #wlst
Вопрос:
Я пишу скрипт WLST для развертывания некоторых WAR и EAR. Однако периодически время ожидания скрипта истекает, поскольку, похоже, он не может получить блокировку редактирования (этот скрипт является частью цепочки многих других скриптов). Мне было интересно, есть ли способ переопределить или остановить любые текущие блокировки на сервере? Это лишь временное решение, но в интересах экономии времени, пока сойдет.
Спасибо.
Ответ №1:
Вы могли бы попробовать установить период ожидания и тайм-аут:
startEdit([waitTimeInMillis], [timeoutInMillis], [exclusive]).
Другие скрипты выдают ошибки, оставляя сеанс заблокированным? Вы могли бы попробовать добавить обработку исключений вокруг них. Кроме того, если у вас включена функция автоматического получения блокировки в консоли администратора и вы используете консоль администратора, иногда это может вызвать проблемы, если вы одновременно запускаете скрипты, даже если вы не вносите изменений, требующих блокировки.
Кроме того, используете ли вы одного и того же пользователя для связанных сценариев?
Комментарии:
1. Ни один из других сценариев не выдает ошибки. Определенно требуется больше обработки исключений, но я должен работать с тем, что у меня есть к этому крайнему сроку. Мне придется разобраться с тем, чтобы оставить консоль администратора открытой, я не понимал, что она может автоматически заблокироваться. Это вполне может быть проблемой. Это один и тот же пользователь для всех скриптов. Спасибо за помощь!
Ответ №2:
В WLST вы можете передать число в качестве параметра, чтобы получить эксклюзивную блокировку. Это позволяет скрипту перехватывать блокировку, отличную от обычной, которая используется всякий раз, когда администратор блокирует с консоли. Это также предотвращает наложение друг на друга двух экземпляров одного и того же скрипта.
Однако это создает сложные сценарии слияния изменений, которых лучше избегать (процессами).
Документацию Oracle по блокировкам конфигурации можно найти здесь.
В качестве альтернативы, если вы хотите, чтобы скрипт временно снимал любые существующие блокировки независимо от ожидающих изменений, вы также можете отключить управление изменениями с консоли, минимизируя причиняемые неудобства.
WLST также содержит cancelEdit
команду, которую вы могли бы выполнить перед собой startEdit
. Надеюсь, что один из этих вариантов сработает!
Ответ №3:
Как получить блокировку изменения конфигурации от другого администратора: Если у другого администратора уже есть блокировка конфигурации, появится следующее сообщение: блокировка уже принадлежит другому пользователю. Вам нужно будет либо дождаться снятия блокировки, либо принять блокировку.
- Найдите Центр изменений в верхнем левом углу консоли администрирования.
- Нажмите Снять блокировку и отредактировать.
- Внесите изменения в конфигурацию.
- В Центре изменений нажмите Активировать изменения. Не все изменения вступают в силу немедленно. Некоторые требуют перезапуска (см. раздел Использование центра изменений).
Ответ №4:
Пока вы используете WLST от имени администратора, вы должны иметь возможность перейти к существующему сеансу редактирования с помощью команды edit() — я провел быстрый тест с двумя пользователями-администраторами, одним в консоли администратора, а другим с помощью WLST, и, похоже, все работает нормально — я вижу изменения в сеансе консоли администратора внутри интерпретатора WLST.
Вы могли бы поместить очень простой обработчик исключений вокруг ваших вызовов startEdit
, который будет регистрировать трассировку стека исключения, но больше ничего не делать. А затем полагайтесь на edit
вызов, который приведет вас к сеансу изменения.
Полагаться на это будет сложно, хотя, если другой скрипт запустил сеанс редактирования и ожидает, что сможет зафиксировать сам этот сеанс изменения — вы будете получать исключения и ненадежное поведение при нескольких вызовах.