1 package org
.argeo
.equinox
.jetty
;
3 import java
.util
.Dictionary
;
5 import javax
.servlet
.ServletException
;
7 import org
.eclipse
.equinox
.http
.jetty
.JettyCustomizer
;
8 import org
.eclipse
.jetty
.servlet
.ServletContextHandler
;
9 import org
.eclipse
.jetty
.websocket
.jsr356
.server
.ServerContainer
;
10 import org
.eclipse
.jetty
.websocket
.jsr356
.server
.deploy
.WebSocketServerContainerInitializer
;
11 import org
.osgi
.framework
.BundleContext
;
12 import org
.osgi
.framework
.FrameworkUtil
;
14 /** Customises the Jetty HTTP server. */
15 public class CmsJettyCustomizer
extends JettyCustomizer
{
16 private BundleContext bc
= FrameworkUtil
.getBundle(CmsJettyCustomizer
.class).getBundleContext();
19 public Object
customizeContext(Object context
, Dictionary
<String
, ?
> settings
) {
21 Object webSocketEnabled
= settings
.get("websocket.enabled");
22 if (webSocketEnabled
!= null && webSocketEnabled
.toString().equals("true")) {
23 ServletContextHandler servletContextHandler
= (ServletContextHandler
) context
;
24 new WebSocketInit(servletContextHandler
).start();
26 return super.customizeContext(context
, settings
);
30 /** Configure websocket container asynchronously as it may take some time */
31 private class WebSocketInit
extends Thread
{
32 ServletContextHandler servletContextHandler
;
34 public WebSocketInit(ServletContextHandler servletContextHandler
) {
35 super("WebSocket Init");
36 this.servletContextHandler
= servletContextHandler
;
41 ServerContainer serverContainer
;
43 serverContainer
= WebSocketServerContainerInitializer
.configureContext(servletContextHandler
);
44 } catch (ServletException e
) {
45 throw new IllegalStateException("Cannot configure web sockets", e
);
47 bc
.registerService(javax
.websocket
.server
.ServerContainer
.class, serverContainer
, null);