Guest User

Untitled

a guest
Jan 22nd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. package com.snaphop.spring;
  2.  
  3. import java.lang.reflect.InvocationTargetException;
  4.  
  5. import javax.servlet.ServletConfig;
  6.  
  7. import org.atmosphere.cpr.AtmosphereServlet;
  8. import org.atmosphere.cpr.Broadcaster;
  9. import org.atmosphere.cpr.BroadcasterFactory;
  10. import org.atmosphere.handler.ReflectorServletProcessor;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13.  
  14.  
  15. @SuppressWarnings("serial")
  16. public class SpringAtmosphereServlet extends AtmosphereServlet {
  17.  
  18. private static final Logger logger = LoggerFactory.getLogger(AtmosphereServlet.class);
  19. public final static String JERSEY_CONTAINER = "com.sun.jersey.spi.spring.container.servlet.SpringServlet";
  20.  
  21.  
  22. /**
  23. * Auto-detect Jersey when no atmosphere.xml file are specified.
  24. *
  25. * @param sc {@link ServletConfig}
  26. * @return true if Jersey classes are detected
  27. * @throws ClassNotFoundException
  28. */
  29. protected boolean detectSupportedFramework(ServletConfig sc) throws ClassNotFoundException, IllegalAccessException,
  30. InstantiationException, NoSuchMethodException, InvocationTargetException {
  31.  
  32. // If Primefaces is detected, never start Jersey.
  33. // TODO: Remove this hack once properly implemented in PrimeFaces
  34. ClassLoader cl = Thread.currentThread().getContextClassLoader();
  35. try {
  36. cl.loadClass(PRIMEFACES_SERVLET);
  37. return false;
  38. } catch (Throwable ignored) {
  39. }
  40.  
  41. try {
  42. cl.loadClass(JERSEY_CONTAINER);
  43. useStreamForFlushingComments = true;
  44. } catch (Throwable t) {
  45. return false;
  46. }
  47.  
  48. logger.warn("Missing META-INF/atmosphere.xml but found the Jersey runtime. Starting Jersey");
  49.  
  50. ReflectorServletProcessor rsp = new ReflectorServletProcessor();
  51. if (!isBroadcasterSpecified) broadcasterClassName = lookupDefaultBroadcasterType();
  52. rsp.setServletClassName(JERSEY_CONTAINER);
  53. sessionSupport(false);
  54. addInitParameter(DISABLE_ONSTATE_EVENT, "true");
  55.  
  56. String mapping = sc.getInitParameter(PROPERTY_SERVLET_MAPPING);
  57. if (mapping == null) {
  58. mapping = "/*";
  59. }
  60. @SuppressWarnings("unchecked")
  61. Class<? extends Broadcaster> bc = (Class<? extends Broadcaster>) cl.loadClass(broadcasterClassName);
  62.  
  63. Broadcaster b = BroadcasterFactory.getDefault().get(bc, mapping);
  64.  
  65. addAtmosphereHandler(mapping, rsp, b);
  66. return true;
  67. }
  68.  
  69.  
  70. }
Add Comment
Please, Sign In to add comment