1 package com.atlassian.johnson.context;
2
3 import com.atlassian.johnson.Johnson;
4
5 import javax.servlet.ServletContextEvent;
6 import javax.servlet.ServletContextListener;
7
8 /**
9 * Initialises and terminates {@link Johnson} with the servlet container.
10 * <p/>
11 * In web environments, this is the preferred mechanism for managing Johnson's lifecycle, allowing it to be initialised
12 * and terminated in a thread-safe context. This listener should be registered before any others except, if applicable,
13 * those that setup logging.
14 * <p/>
15 * To use this listener, add the following to web.xml:
16 * <pre>
17 * <code><listener>
18 * <listener-class>com.atlassian.johnson.context.JohnsonContextListener</listener-class>
19 * </listener>
20 * </code>
21 * </pre>
22 *
23 * @since 2.0
24 */
25 public class JohnsonContextListener implements ServletContextListener
26 {
27 /**
28 * Terminates {@link Johnson}.
29 *
30 * @param event the context event
31 * @see Johnson#terminate(javax.servlet.ServletContext)
32 */
33 public void contextDestroyed(ServletContextEvent event)
34 {
35 Johnson.terminate(event.getServletContext());
36 }
37
38 /**
39 * Initialises {@link Johnson}.
40 *
41 * @param event the context event
42 * @see Johnson#initialize(javax.servlet.ServletContext)
43 */
44 public void contextInitialized(ServletContextEvent event)
45 {
46 Johnson.initialize(event.getServletContext());
47 }
48 }