Archive
Performing action when web application is starting and shutting down
Examples of how to execute operations when the application starts up or shuts down using Servlets, CDI and EJB.
There are at least three ways to perform actions when a web application is starting and shutting down:
Using ServletContextListener from the Servlet API
#
Keeping things simple, you can implement ServletContextListener:
@WebListener
public class StartupListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
// Perform action during application's startup
}
@Override
public void contextDestroyed(ServletContextEvent event) {
// Perform action during application's shutdown
}
}Using @ApplicationScoped and @Observes from CDI
#
If you have CDI enabled, you can use an @ApplicationScoped-bean and @Observes for hooking your code to application events:
@ApplicationScoped
public class StartupListener {
public void init(@Observes
@Initialized(ApplicationScoped.class) ServletContext context) {
// Perform action during application's startup
}
public void destroy(@Observes
@Destroyed(ApplicationScoped.class) ServletContext context) {
// Perform action during application's shutdown
}
}Please bear in mind you must use @ApplicationScoped from the javax.enterprise.context package and not @ApplicationScoped from the javax.faces.bean package.
Using @Startup and @Singleton from EJB
#
If you rely on EJB, then you can use @Startup and @Singleton, as follows:
@Startup
@Singleton
public class StartupListener {
@PostConstruct
public void init() {
// Perform action during application's startup
}
@PreDestroy
public void destroy() {
// Perform action during application's shutdown
}
}