View Javadoc
1   package org.argeo.equinox.jetty;
2   
3   import java.util.Dictionary;
4   
5   import javax.servlet.ServletContext;
6   import javax.websocket.DeploymentException;
7   
8   import org.eclipse.equinox.http.jetty.JettyCustomizer;
9   import org.eclipse.jetty.servlet.ServletContextHandler;
10  import org.eclipse.jetty.websocket.jsr356.server.ServerContainer;
11  import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;
12  import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.Configurator;
13  import org.osgi.framework.BundleContext;
14  import org.osgi.framework.FrameworkUtil;
15  
16  /** Customises the Jetty HTTP server. */
17  public class CmsJettyCustomizer extends JettyCustomizer {
18  	private BundleContext bc = FrameworkUtil.getBundle(CmsJettyCustomizer.class).getBundleContext();
19  
20  	public final static String WEBSOCKET_ENABLED = "websocket.enabled";
21  
22  	@Override
23  	public Object customizeContext(Object context, Dictionary<String, ?> settings) {
24  		// WebSocket
25  		Object webSocketEnabled = settings.get(WEBSOCKET_ENABLED);
26  		if (webSocketEnabled != null && webSocketEnabled.toString().equals("true")) {
27  			ServletContextHandler servletContextHandler = (ServletContextHandler) context;
28  			WebSocketServerContainerInitializer.configure(servletContextHandler, new Configurator() {
29  
30  				@Override
31  				public void accept(ServletContext servletContext, ServerContainer serverContainer)
32  						throws DeploymentException {
33  					bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null);
34  				}
35  			});
36  		}
37  		return super.customizeContext(context, settings);
38  
39  	}
40  }