Я читал этот, но я не совсем понимаю, как это работает. Я хочу загрузить файл свойств и настроить пул подключений при запуске веб-приложения. Очевидно, я хочу сделать это только один раз и в одном месте, чтобы я мог изменить его, если это необходимо. С регулярными сервлетами я бы просто поместил свой код инициализации в метод init() сервлета, но у вас нет доступа к нему с сервлетом Джерси. Итак, где я могу это сделать? Как работают слушатели в ссылке выше?
Инициализация базы данных на запуске Jersey Webapp
Ответ 1
Все, что вам нужно сделать, это написать класс Java, который реализует интерфейс ServletContextListener. Этот класс должен реализовывать два метода contextInitialized, который вызывается при первом создании веб-приложения, и contextDestroyed, который вызывается при его разрушении. Ресурс, который вы хотите инициализировать, будет создан в методе contextInitialized, а ресурс освобожден в классе contextDestroyed. Приложение должно быть настроено на вызов этого класса при его развертывании, что делается в файле дескриптора web.xml.
public class ServletContextClass implements ServletContextListener
{
public static Connection con;
public void contextInitialized(ServletContextEvent arg0)
{
con.getInstance ();
}//end contextInitialized method
public void contextDestroyed(ServletContextEvent arg0)
{
con.close ();
}//end constextDestroyed method
}
Конфигурация web.xml
<listener>
<listener-class>com.nameofpackage.ServletContextClass</listener-class>
</listener>
Теперь это позволит приложению вызывать ServletContextClass при развертывании приложения и создавать экземпляр Connection или любого другого места ресурса в методе contextInitialized, что похоже на то, что делает метод init Servlet.
Ответ 2
Поскольку вам не нужно изменять сам Джерси во время запуска, вы, вероятно, не хотите использовать AbstractResourceModelListener. Вы хотите javax.servlet.ServletContextListener. Вы можете добавить listener в свой web.xml так же, как вы добавляете элементы сервлета. ServletContextListener будет вызван, когда ваш контекст (веб-приложение) будет сначала создан и до запуска сервлета Джерси. Вы можете делать все, что вам нужно, в базу данных этого слушателя, и оно будет готово, когда вы начнете использовать Джерси.