This article discusses how to create a start up class for a Java Enterprise / Jakarta EE compliant application server such as WildFly.
There is no concept of start up class for an application server however you can deploy an application which contains a component bound to the deployment life cycle.
For example, the javax.servlet.ServletContextListener interface is used for receiving notification events about ServletContext life-cycle changes (initialization or disposal of the Web context). This listener will be triggered when the application is deployed or undeployed. Here is an example of it:
@WebListener
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
//Add here your start up code
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
//. . .
}
}
The other option is to use a Start up Singleton EJB:
@Singleton
@Startup
public class UserRegistry {
public ArrayList<String> listUsers;
@PostConstruct
public void init() {
listUsers = new ArrayList<String>();
listUsers.add("administrator");
}
public void addUser(String username) {
listUsers.add(username);
}
public void removeUser(String username) {
listUsers.remove(username);
}
public ArrayList<String> getListUsers() {
return listUsers;
}
}
As it is plainly evident from the code, besides the @Singleton annotation that we already discussed, the class contains a @Startup annotation too which can be used to activate the EJB as soon as it’s deployed. This will in turn execute the method annotated with @PostConstruct, which might contain some data initialization.