package org.jboss.seam.rest;
import javax.inject.Inject;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpServlet;
import org.jboss.solder.logging.Logger;
/**
* We also extend HttpServlet so that Seam REST can be bootstrapped by eagerly-loaded Servlet on Tomcat 7, where
* weld-servlet does not support CDI injection into Servlet Listeners.
*
* @author <a href="http://community.jboss.org/people/jharting">Jozef Hartinger</a>
*
*/
@WebListener
public class SeamRestStartupListener extends HttpServlet implements ServletContextListener {
private static final Logger log = Logger.getLogger(SeamRestStartupListener.class);
private static final long serialVersionUID = -3618026329655575903L;
@Inject
private SeamRestStartup startup;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
startup.init(config.getServletContext());
}
@Override
public void contextInitialized(ServletContextEvent sce) {
if (startup == null) {
log.warn("Listener injection does not work. You are probably running within a Servlet container. Make sure to configure Seam REST to use Servlet bootstrap instead.");
return;
}
startup.init(sce.getServletContext());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}