У меня есть две версии (1.0 и 2.0) в karaf одного и того же военного пакета, содержащего сервлет, работающий по одному и тому же адресу. Я запускаю его с помощью этой команды:
комплект: установить -s
"Webbundle: Файл: ///home/marat/projects/webmodule/target/webmodule-1.0.war Bundle-Символический = Runner & Web-ContextPath = / образец?"
И оба военных пакета показаны активными в веб-консоли Karaf.
У меня есть приложение, которое проверяет адрес http://localhost:8181/sample/hello (сервлет) каждые 10 мс (приложение отправляет запросы GET). Во-первых, приложение получает ответы от сервлета, представленного war v1.0. Если я остановлю пакет, содержащий war v1.0, я ожидаю, что karaf автоматически переключит запросы, отправленные на адрес http://localhost:8181/sample/hello, на war v2.0, поскольку сервлет в этом пакете находится на том же адресе, что и war 1.0. Приложение получает этот ответ вместо:
java.io.IOException: сервер вернул код ответа HTTP: 401 для URL:
http://localhost:8181/sample/hello
Когда я перезапускаю приложение pinger, оно успешно подключается к war v2.0.
Что я могу сделать, чтобы Karaf автоматически переключался на war v2.0, когда я прекращал war версии 1.0?