Большинство контейнеров сервлетов имеют возможность развертывания без остановки сервера. Некоторые делают это путем удаления файла WAR в определенный каталог, который опрашивается веб-сервером (если он настроен правильно), в то время как другие предоставляют доступ к веб-API «загрузки».
JBoss обычно использует Tomcat в качестве контейнера сервлета. Хотя я не знаю, какую версию использует ваша версия JBoss, Tomcat уже давно поддерживает развертывание на работающем сервере. Возможно, документации для Tomcat 5.5 достаточно, чтобы вы могли определить, какие изменения (если они есть) нужно внести.
В случае, если вам действительно нужно остановить сервер, Tomcat имеет возможность остановить сервер от внешней программы (для этого требуется только отправка нужного типа сообщения); однако после остановки Tomcat не может получить сообщение о запуске, его нужно будет запустить вручную.
Лучшим решением было бы определить, когда приложение запущено, путем просмотра событий жизненного цикла сервлета, а затем «проверить» базу данных при событии «первого запуска». В случае если ваша база данных обнаружит, что база данных не соответствует ожидаемой версии, примените изменения. После того, как обнаружение базы данных покажет, что база данных обновлена, начните обычную обработку запроса. Это изолирует код в вашем веб-приложении таким образом, чтобы его можно было легко развертывать и обновлять, хотя это требует больше работы по настройке приложения для инкапсуляции его собственных обязанностей по обслуживанию базы данных.
В случае, если такая техника не подходит, вам придется полагаться на внешний инструмент для выполнения работы. Обычно такой инструмент требует интенсивной интеграции ресурсов (иногда на нескольких машинах). В таком случае для решения возникающих проблем обычно применяется Enterprise Job Scheduler или механизм рабочего процесса (с вашими собственными письменными адаптерами).