Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is the main() method In a JSP/Servlet application? [duplicate]

The reason I'm asking this is that I want to write code that initializes the application once it starts and cleans up later on.

I dont want to use a servlet init() method since it is per servlet.

like image 240
Basil Musa Avatar asked Dec 18 '25 17:12

Basil Musa


2 Answers

There is no main() method in Servlet.

If

The reason I'm asking this is that I want to write code that initializes the application once it starts and cleans up later on.

You can use ServletContextListener implemented

public class MyServletContext implements ServletContextListener{
    ServletContext context;
    public void contextInitialized(ServletContextEvent contextEvent) {
        System.out.println("Context Created");

    }
    public void contextDestroyed(ServletContextEvent contextEvent) {

        System.out.println("Context Destroyed");
    }
}

web.xml

<listener>
    <listener-class>
        com.yourpackage.MyServletContext
    </listener-class>
  </listener>
like image 77
jmj Avatar answered Dec 21 '25 07:12

jmj


There is no main() method, because the components are managed and the container invokes other methods - like the init() on servlets and filters. The container itself is started through a main method, but even that's hidden from you.

For per-application and initialization you can use a ServletContextListener

You have to map it in web.xml using <listener><listener-class>...</listener-class></listener>. In contextInitialized(..) and contextDestroyed(..) you can do initialization and cleanup respectively.

like image 28
Bozho Avatar answered Dec 21 '25 07:12

Bozho