GuiceServletContextListener.java revision efd485281e69b997844450ac214e1feeed154991
1af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb/** 2af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * Copyright (C) 2007 Google Inc. 3af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * 4af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * Licensed under the Apache License, Version 2.0 (the "License"); 5af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * you may not use this file except in compliance with the License. 6af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * You may obtain a copy of the License at 7af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * 8af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * http://www.apache.org/licenses/LICENSE-2.0 9af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * 10af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * Unless required by applicable law or agreed to in writing, software 11af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * distributed under the License is distributed on an "AS IS" BASIS, 12af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * See the License for the specific language governing permissions and 14af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * limitations under the License. 15af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb */ 16af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 17af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbpackage com.google.inject.servlet; 18af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 19af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbimport com.google.inject.Injector; 20efd485281e69b997844450ac214e1feeed154991dhanjiimport java.lang.ref.WeakReference; 21af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbimport javax.servlet.ServletContext; 22af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbimport javax.servlet.ServletContextEvent; 23af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbimport javax.servlet.ServletContextListener; 24af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 25af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb/** 266634fe165d3729e2fcdf5309d815a8ea2906f6a8dhanji * As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener} 276634fe165d3729e2fcdf5309d815a8ea2906f6a8dhanji * class as a logical place to create and configure your injector. This will ensure the injector 286634fe165d3729e2fcdf5309d815a8ea2906f6a8dhanji * is created when the web application is deployed. 29af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * 30af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * @author Kevin Bourrillion (kevinb@google.com) 31b92a84ed99fd17a1b5d239431d9c6c670b5702e8limpbizkit * @since 2.0 32af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb */ 33af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinbpublic abstract class GuiceServletContextListener 34af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb implements ServletContextListener { 35af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 36af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb static final String INJECTOR_NAME = Injector.class.getName(); 37af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 38af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb public void contextInitialized(ServletContextEvent servletContextEvent) { 39af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb ServletContext servletContext = servletContextEvent.getServletContext(); 40af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb servletContext.setAttribute(INJECTOR_NAME, getInjector()); 41efd485281e69b997844450ac214e1feeed154991dhanji 42efd485281e69b997844450ac214e1feeed154991dhanji // Set the Servletcontext early for those people who are using this class. 43efd485281e69b997844450ac214e1feeed154991dhanji GuiceFilter.servletContext = new WeakReference<ServletContext>(servletContext); 44af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb } 45af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 46af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb public void contextDestroyed(ServletContextEvent servletContextEvent) { 47af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb ServletContext servletContext = servletContextEvent.getServletContext(); 48af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb servletContext.removeAttribute(INJECTOR_NAME); 49af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb } 50af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb 51af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb /** 52af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * Override this method to create (or otherwise obtain a reference to) your 53af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb * injector. 54af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb */ 55af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb protected abstract Injector getInjector(); 56af46529390705cbc41d51e68bbfccdc7fbb43ac9kevinb} 57