У меня есть webapp в военном архиве, который развернут на облачном уровне. Одна из библиотек («somelib.jar
»), используемая приложением, создается другим разработчиком.Как динамически обновлять (горячую замену) банки в веб-приложении?
Я хотел бы, чтобы он мог загрузить несколько различных версий somelib.jar
и проверить поведение приложения. Мне удалось загрузить банку в каталог WEB-INF/lib
развертывания. Мне также удалось распаковать банку на WEB-INF/classes
. Тем не менее, мне не удалось получить новую версию банки для использования. Я пробовал различные хаки, такие как описанные в this question и this question без всякой удачи.
Каждый раз, классы/баночки, которые загружаются в первый раз, будут использоваться после этого, даже если мы заменим файл .class
или .jar
в указанных выше каталогах.
Есть ли какой-либо простой способ достичь того, что я хочу?
Примечание: Поскольку у меня нет контроля над Tomcat (где он выполняется), я не могу настроить Tomcat или внести какие-либо изменения на сервер. Я просто контролирую свой файл войны, , поэтому все должно быть сделано программно.
EDIT: причина, по которой я хочу, это сократить время тестирования. В настоящее время кто-то дает мне новую версию somelib.jar
, я переупаковываю ее в свое приложение, загружаю в CF, отправляю ему уведомление, а затем тестирует поведение новой банки. Я бы предпочел, чтобы он загружал свою банку непосредственно в CF и проводил тестирование, когда у него была новая версия без ненужной промежуточной задержки.
вы можете удалить совершенно новый файл войны, потому что каталог webapp обычно выполняет горячее развертывание, если эта конфигурация не отключена в tomcat. Это позволяет вам одновременно запускать одну версию, но она «горячее развертывание» без перезагрузки.Есть проблемы с этим, и никто не всерьез подумает об этом в производственной среде. – Kevin
Не могу поверить, что нет простого решения. С появлением PaaS все больше и больше вероятность того, что клиентам не понравится беспокоить или контролировать конфигурацию сервера. – Jus12
У вас проблемы с процессом, а не с технологической проблемой. Если вы хотите простое решение, дайте каждому члену команды тестовую среду и возможность создавать свою собственную развернутую WAR. – parsifal