Подтвердить что ты не робот

Инициализация базы данных на запуске Jersey Webapp

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

4b9b3361

Ответ 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 будет вызван, когда ваш контекст (веб-приложение) будет сначала создан и до запуска сервлета Джерси. Вы можете делать все, что вам нужно, в базу данных этого слушателя, и оно будет готово, когда вы начнете использовать Джерси.