Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.snaphop.spring;
- import java.lang.reflect.InvocationTargetException;
- import javax.servlet.ServletConfig;
- import org.atmosphere.cpr.AtmosphereServlet;
- import org.atmosphere.cpr.Broadcaster;
- import org.atmosphere.cpr.BroadcasterFactory;
- import org.atmosphere.handler.ReflectorServletProcessor;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- @SuppressWarnings("serial")
- public class SpringAtmosphereServlet extends AtmosphereServlet {
- private static final Logger logger = LoggerFactory.getLogger(AtmosphereServlet.class);
- public final static String JERSEY_CONTAINER = "com.sun.jersey.spi.spring.container.servlet.SpringServlet";
- /**
- * Auto-detect Jersey when no atmosphere.xml file are specified.
- *
- * @param sc {@link ServletConfig}
- * @return true if Jersey classes are detected
- * @throws ClassNotFoundException
- */
- protected boolean detectSupportedFramework(ServletConfig sc) throws ClassNotFoundException, IllegalAccessException,
- InstantiationException, NoSuchMethodException, InvocationTargetException {
- // If Primefaces is detected, never start Jersey.
- // TODO: Remove this hack once properly implemented in PrimeFaces
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- cl.loadClass(PRIMEFACES_SERVLET);
- return false;
- } catch (Throwable ignored) {
- }
- try {
- cl.loadClass(JERSEY_CONTAINER);
- useStreamForFlushingComments = true;
- } catch (Throwable t) {
- return false;
- }
- logger.warn("Missing META-INF/atmosphere.xml but found the Jersey runtime. Starting Jersey");
- ReflectorServletProcessor rsp = new ReflectorServletProcessor();
- if (!isBroadcasterSpecified) broadcasterClassName = lookupDefaultBroadcasterType();
- rsp.setServletClassName(JERSEY_CONTAINER);
- sessionSupport(false);
- addInitParameter(DISABLE_ONSTATE_EVENT, "true");
- String mapping = sc.getInitParameter(PROPERTY_SERVLET_MAPPING);
- if (mapping == null) {
- mapping = "/*";
- }
- @SuppressWarnings("unchecked")
- Class<? extends Broadcaster> bc = (Class<? extends Broadcaster>) cl.loadClass(broadcasterClassName);
- Broadcaster b = BroadcasterFactory.getDefault().get(bc, mapping);
- addAtmosphereHandler(mapping, rsp, b);
- return true;
- }
- }
Add Comment
Please, Sign In to add comment