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;
public Object customizeContext(Object context, Dictionary<String, ?> 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);
- }
-
- }
}