X-Git-Url: http://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=blobdiff_plain;f=org.argeo.ext.equinox.jetty%2Fsrc%2Forg%2Fargeo%2Fequinox%2Fjetty%2FCmsJettyCustomizer.java;h=e6d6c697074cd45909880d4fc8ce858d75726313;hp=60d23719edb107c3ca811f841f594e596005b421;hb=aa3eae8ed83ae3b8b3cc98826ee02d121795cb60;hpb=09d97fb1d28c9bbe4b2ec9fc511adf5127a256c1 diff --git a/org.argeo.ext.equinox.jetty/src/org/argeo/equinox/jetty/CmsJettyCustomizer.java b/org.argeo.ext.equinox.jetty/src/org/argeo/equinox/jetty/CmsJettyCustomizer.java index 60d23719e..e6d6c6970 100644 --- a/org.argeo.ext.equinox.jetty/src/org/argeo/equinox/jetty/CmsJettyCustomizer.java +++ b/org.argeo.ext.equinox.jetty/src/org/argeo/equinox/jetty/CmsJettyCustomizer.java @@ -2,12 +2,14 @@ package org.argeo.equinox.jetty; import java.util.Dictionary; -import javax.servlet.ServletException; +import javax.servlet.ServletContext; +import javax.websocket.DeploymentException; import org.eclipse.equinox.http.jetty.JettyCustomizer; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.websocket.jsr356.server.ServerContainer; import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer; +import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer.Configurator; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; @@ -19,33 +21,21 @@ public class CmsJettyCustomizer extends JettyCustomizer { public Object customizeContext(Object context, Dictionary settings) { // WebSocket Object webSocketEnabled = settings.get("websocket.enabled"); + if (webSocketEnabled == null) { + webSocketEnabled = bc.getProperty("org.eclipse.equinox.http.jetty.websocket.enabled"); + } if (webSocketEnabled != null && webSocketEnabled.toString().equals("true")) { ServletContextHandler servletContextHandler = (ServletContextHandler) context; - new WebSocketInit(servletContextHandler).start(); + WebSocketServerContainerInitializer.configure(servletContextHandler, new Configurator() { + + @Override + public void accept(ServletContext servletContext, ServerContainer serverContainer) + throws DeploymentException { + bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null); + } + }); } return super.customizeContext(context, settings); } - - /** Configure websocket container asynchronously as it may take some time */ - private class WebSocketInit extends Thread { - ServletContextHandler servletContextHandler; - - public WebSocketInit(ServletContextHandler servletContextHandler) { - super("WebSocket Init"); - this.servletContextHandler = servletContextHandler; - } - - @Override - public void run() { - ServerContainer serverContainer; - try { - serverContainer = WebSocketServerContainerInitializer.configureContext(servletContextHandler); - } catch (ServletException e) { - throw new IllegalStateException("Cannot configure web sockets", e); - } - bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null); - } - - } }