001    package org.granite.gravity.jetty8;
002    
003    import javax.servlet.ServletContextEvent;
004    import javax.servlet.ServletContextListener;
005    
006    public class EmbeddedJettyWebSocketServerListener implements ServletContextListener {
007            
008            private EmbeddedJettyWebSocketServer server = null;
009    
010            public void contextInitialized(ServletContextEvent sce) {
011                    server = new EmbeddedJettyWebSocketServer(sce.getServletContext());
012                    
013                    String serverPort = sce.getServletContext().getInitParameter("embedded-jetty-websocket-server-port");
014                    if (serverPort != null) {
015                            try {
016                                    server.setServerPort(Integer.parseInt(serverPort));
017                            }
018                            catch (NumberFormatException e) {
019                                    throw new RuntimeException("Incorrect port " + serverPort + " defined for embedded-jetty-websocket-server-port", e);
020                            }
021                    }
022                    
023                    try {
024                            server.start();
025                    }
026                    catch (Exception e) {
027                            throw new RuntimeException("Could not start embedded Jetty websocket server", e);
028                    }
029            }
030    
031            public void contextDestroyed(ServletContextEvent sce) {
032                    try {
033                            if (server != null)
034                                    server.stop();
035                    }
036                    catch (Exception e) {
037                            throw new RuntimeException("Could not stop embedded Jetty websocket server", e);
038                    }
039            }
040    
041    }