X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.lib.jetty%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjetty%2FJettyHttpContext.java;h=5876d52e8ae72027c5a9deaa68e815affbf89ae9;hb=138e686fbf65683c3c94a52f1cfbaf8e02362e19;hp=7adb09be32911945fd9fb44f47c95006f5ef748e;hpb=1d7058b30bd990cda7d4efc1c029501f05a07113;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpContext.java b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpContext.java index 7adb09be3..5876d52e8 100644 --- a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpContext.java +++ b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpContext.java @@ -9,12 +9,17 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import javax.servlet.ServletContext; +import javax.websocket.DeploymentException; +import javax.websocket.server.ServerContainer; + import org.argeo.cms.servlet.httpserver.HttpContextServlet; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.handler.ContextHandler; +import org.argeo.cms.websocket.server.WebsocketEndpoints; import org.eclipse.jetty.server.session.SessionHandler; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; +import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator; import com.sun.net.httpserver.Authenticator; import com.sun.net.httpserver.Filter; @@ -26,7 +31,7 @@ import com.sun.net.httpserver.HttpServer; class JettyHttpContext extends HttpContext { private final JettyHttpServer httpServer; private final String path; - private final ContextHandler contextHandler; + private final ServletContextHandler contextHandler; private final ContextAttributes attributes; private final List filters = new ArrayList<>(); @@ -63,6 +68,25 @@ class JettyHttpContext extends HttpContext { Objects.requireNonNull(handler); this.handler = handler; + // web socket + if (handler instanceof WebsocketEndpoints) { + JavaxWebSocketServletContainerInitializer.configure(contextHandler, new Configurator() { + + @Override + public void accept(ServletContext servletContext, ServerContainer serverContainer) + throws DeploymentException { +// CmsWebSocketConfigurator wsEndpointConfigurator = new CmsWebSocketConfigurator(); + + for (Class clss : ((WebsocketEndpoints) handler).getEndPoints()) { +// Class clss = websocketEndpoints.get(path); +// ServerEndpointConfig config = ServerEndpointConfig.Builder.create(clss, path) +// .configurator(wsEndpointConfigurator).build(); + serverContainer.addEndpoint(clss); + } + } + }); + } + if (httpServer.isStarted()) try { contextHandler.start(); @@ -103,7 +127,7 @@ class JettyHttpContext extends HttpContext { return authenticator; } - public Handler getContextHandler() { + ServletContextHandler getContextHandler() { return contextHandler; }