Есть ли способы выполнения кода во время запуска Apache Tomcat 6.x для выполнения процедур инициализации и т. Д.? - PullRequest
11 голосов
/ 10 сентября 2010

Я хочу инициализировать глобальный экземпляр класса до того, как мой сервер Tomcat завершит запуск и начнет предлагать мои сервлеты. Если этот сервис каким-то образом не проходит инициализацию, я бы хотел, чтобы вся последовательность запуска также не работала (или как можно ближе к этому; иначе было бы бессмысленно запускать сервер). Как лучше всего это сделать?

Ответы [ 2 ]

18 голосов
/ 10 сентября 2010

Каждое веб-приложение имеет связанный с ним ServletContext.Объект ServletContext создается при запуске приложения и уничтожается при завершении работы приложения.ServletContext имеет глобальную область видимости и аналогичен глобальной переменной в приложении.

http://www.javabeat.net/tips/178-servletcontextlistener-example.html

полное описание здесь

http://onjava.com/pub/a/onjava/2001/04/12/listeners.html

2 голосов
/ 10 сентября 2010

Одна вещь, которую вы можете сделать переносимым, - это реализовать сервлет, который инициализирует все, что вам нужно, в его методе init () (и, возможно, вызвать System.exit () в случае сбоя, я не знаю, есть ли у вас разрешение на это Кот). Затем вы должны загрузить его, используя <load-on-startup> в вашем web.xml, чтобы указать порядок инициализации.

...