]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.ext.equinox.jetty/src/org/argeo/equinox/jetty/CmsJettyCustomizer.java
Improve SSH client.
[lgpl/argeo-commons.git] / org.argeo.ext.equinox.jetty / src / org / argeo / equinox / jetty / CmsJettyCustomizer.java
1 package org.argeo.equinox.jetty;
2
3 import java.util.Dictionary;
4
5 import javax.servlet.ServletException;
6
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;
13
14 /** Customises the Jetty HTTP server. */
15 public class CmsJettyCustomizer extends JettyCustomizer {
16 private BundleContext bc = FrameworkUtil.getBundle(CmsJettyCustomizer.class).getBundleContext();
17
18 @Override
19 public Object customizeContext(Object context, Dictionary<String, ?> settings) {
20 // WebSocket
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();
25 }
26 return super.customizeContext(context, settings);
27
28 }
29
30 /** Configure websocket container asynchronously as it may take some time */
31 private class WebSocketInit extends Thread {
32 ServletContextHandler servletContextHandler;
33
34 public WebSocketInit(ServletContextHandler servletContextHandler) {
35 super("WebSocket Init");
36 this.servletContextHandler = servletContextHandler;
37 }
38
39 @Override
40 public void run() {
41 ServerContainer serverContainer;
42 try {
43 serverContainer = WebSocketServerContainerInitializer.configureContext(servletContextHandler);
44 } catch (ServletException e) {
45 throw new IllegalStateException("Cannot configure web sockets", e);
46 }
47 bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null);
48 }
49
50 }
51 }