2013-11-25 6 views
0

У меня есть Java-программа EE для бэкэнд веб-приложения. Он работает на сервере tomcat. Хотя я могу создавать классы для настройки маршрутизации и т. Д., Как бы я создал класс, который не влияет на маршрутизацию, которая также запускается при запуске? Я хочу создать класс, который подключается к базе данных. Это должно произойти независимо от того, запрашивается ли веб-страница или нет. Я сделал класс для него с public static void main (String [] args), но как я могу запустить этот запуск при запуске приложения? Я не понимаю, какой класс вызывается при запуске. У меня есть web.xml и все классы, управляющие маршрутизацией, но есть ли основной класс, который я могу использовать для вызова этого? Если нет, как я могу вызвать запуск класса одновременно с запуском сервера?Java EE как запустить класс при запуске

ответ

0

(1) Подготовьте класс, который реализует javax.servlet.ServletContextListener.

(2) Введите начальный код в contextInitialized(ServletContextEvent event) способ класса.

(3) Зарегистрируйте класс в web.xml, как показано ниже.

<listener> 
    <listener-class>com.example.YourServletContextListener</listener-class> 
</listener> 

Это может инициализировать ваше приложение без вызова сервлета.

0

В вашем методе init() сервлета вы можете выполнять все свои задачи инициализации (то есть задачу, которую необходимо выполнить при загрузке приложения). Также обратите внимание, что в файле развертывания web.xml значение load-on-startup равно 1, чтобы указать контейнеру немедленно загрузить сервлет и вызвать его метод init().

0

Вы не должны использовать основной метод в веб-приложениях. Вместо этого вы можете переместить код из основного метода в конструктор этого класса или создать новый общедоступный метод в этом классе.

Затем выберите метод Init в своем сервлете, чтобы создать экземпляр класса и вызвать метод.

Servlet Init вызывается только один раз (обычно), когда сервлет получает доступ в первый раз или при загрузке сервера.

Это означает, что ваш класс вызывается только один раз во время загрузки сервлетов.

0

Как насчет запуска EJB Singleton?

import javax.annotation.PostConstruct; 
import javax.ejb.Singleton; 
import javax.ejb.Startup; 

@Startup 
@Singleton 
public class StartUpService { 

    @PostConstruct 
    public void start() { 
     // what you want to execute at startup 
    } 
} 
Смежные вопросы