Есть ли способ выполнения кода во время запуска Apache Tomcat 6.x для выполнения процедур инициализации и т.д.?
Я хочу инициализировать глобальный экземпляр класса, прежде чем мой сервер Tomcat завершит запуск и начнет предлагать мои сервлеты. Если эта служба каким-то образом завершит инициализацию, я хотел бы, чтобы вся последовательность запуска также завершилась неудачей (или как можно ближе к ней, было бы бессмысленно работать в противном случае). Каким образом я могу это сделать?
Ответы
Ответ 1
Каждое веб-приложение имеет связанный с ним ServletContext. Объект ServletContext создается при запуске приложения и уничтожается при закрытии приложения. ServletContext имеет глобальную область видимости и похож на глобальную переменную в приложении.
http://www.javabeat.net/tips/178-servletcontextlistener-example.html
полное объяснение здесь
http://onjava.com/pub/a/onjava/2001/04/12/listeners.html
Ответ 2
Одна вещь, которую вы можете сделать портативно, - это реализовать сервлет, который инициализирует все, что вам нужно, в его методе init() (и, возможно, вызывается System.exit(), если он не работает, я не знаю, имеете ли вы разрешение на это в Кот). Затем вы загрузите его с помощью <load-on-startup>
в web.xml
, чтобы указать порядок инициализации.