Обновление файла WAR на Tomcat с помощью задачи ANT updateApplicationServer, по-видимому, требует перезапуска сервера приложений?
Контекст: мы используем MFP v6.3 на Tomcat (v7.0.57), работающем в системе Linux. Мы пытаемся использовать задачи MFP ANT для автоматизации развертывания артефактов MFP (т. Е. Файла WAR, адаптеров и файлов wlapps). В частности, у нас есть сценарий использования, в котором мы хотели бы использовать задачу ANT updateApplicationServer для обновления файла WAR, который был первоначально развернут с использованием файла MFP configTool.sh.
Проблема: задача ANT updateApplicationServer выполняется без ошибок, и мы видим, что файл WAR на сервере Tomcat действительно был заменен новым. Однако новый и обновленный код Java внутри WAR не был загружен Tomcat/MFP. Мы заметили, что после выполнения задачи updateApplicationServer ANT содержимое файла WAR не было взорвано (даже если для флагов autodeploy и unpackWARs задано значение true). Только после перезапуска сервера Tomcat новый код в WAR может использоваться приложением. Из документации MFP в KnowledgeCenter у нас сложилось впечатление, что перезапуск сервера не потребуется для задачи ANT updateApplicationServer для обновления соответствующего файла WAR. Мы ожидали, что задача updateApplicationServer ANT обновит WAR и немедленно сделает его доступным для клиента мобильного приложения MFP.
Код: Мы используем Gradle для вызова задачи updateApplicationServer ANT:
ant.updateApplicationServer(contextroot: contextRoot) {
"project"(warfile: warFile)
"applicationserver"() {
"tomcat"(installdir: installDir)
}
}
1 ответ
Причина, по которой updateApplicationServer требует перезапуска сервера в целом (даже для серверов приложений, которые могут останавливать и запускать приложение во время работы), заключается в том, что он также обновляет worklight-jee-library.jar (это полезно для применения пакета Fix Pack).
Может быть, вы можете попробовать некоторые советы, перечисленные в разделе Как обновить веб-приложение Tomcat без перезапуска всей службы? (например, тег dit как
<Context reloadable="true">