001 package org.granite.gravity.glassfish;
002
003 import javax.servlet.ServletConfig;
004 import javax.servlet.ServletException;
005 import javax.servlet.ServletRegistration;
006 import javax.servlet.http.HttpServlet;
007
008 import org.granite.gravity.Gravity;
009 import org.granite.gravity.GravityManager;
010 import org.granite.gravity.GravityServletUtil;
011 import org.granite.logging.Logger;
012
013 import com.sun.grizzly.websockets.WebSocketApplication;
014 import com.sun.grizzly.websockets.WebSocketEngine;
015
016
017 public class GlassFishWebSocketServlet extends HttpServlet {
018
019 @SuppressWarnings("unused")
020 private static final Logger log = Logger.getLogger(GlassFishWebSocketServlet.class);
021
022 private static final long serialVersionUID = 1L;
023
024 private WebSocketApplication app;
025
026 @Override
027 public void init(ServletConfig config) throws ServletException {
028 super.init(config);
029
030 GravityServletUtil.init(config);
031 Gravity gravity = GravityManager.getGravity(getServletContext());
032 String mapping = null;
033 for (ServletRegistration sr : getServletContext().getServletRegistrations().values()) {
034 if (!sr.getClassName().equals(getClass().getName()))
035 continue;
036 mapping = sr.getMappings().iterator().next();
037 }
038 app = new GlassFishWebSocketApplication(getServletContext(), gravity, mapping);
039 WebSocketEngine.getEngine().register(app);
040 }
041
042 @Override
043 public void destroy() {
044 WebSocketEngine.getEngine().unregister(app);
045 app = null;
046 }
047
048 }