001package org.granite.gravity.glassfish; 002 003import javax.servlet.ServletConfig; 004import javax.servlet.ServletException; 005import javax.servlet.ServletRegistration; 006import javax.servlet.http.HttpServlet; 007 008import org.granite.gravity.Gravity; 009import org.granite.gravity.GravityManager; 010import org.granite.gravity.GravityServletUtil; 011import org.granite.logging.Logger; 012 013import com.sun.grizzly.websockets.WebSocketApplication; 014import com.sun.grizzly.websockets.WebSocketEngine; 015 016 017public 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}