X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.lib.jetty%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjetty%2FCmsJettyServer.java;h=b0b348d9ccfec48a514b93042cd20b2fc2f87757;hb=5b6b49fa655c7b3ae3dcc06d6c504e3d0225684f;hp=7f33beeb695d45110be5dd6550fe7a952ad02f7a;hpb=81d9084e2c9fd9d33ca1d864171d28f9564647d8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/CmsJettyServer.java b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/CmsJettyServer.java index 7f33beeb6..b0b348d9c 100644 --- a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/CmsJettyServer.java +++ b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/CmsJettyServer.java @@ -3,40 +3,26 @@ package org.argeo.cms.jetty; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.concurrent.CompletableFuture; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.websocket.DeploymentException; import javax.websocket.server.ServerContainer; -import javax.websocket.server.ServerEndpointConfig; -import org.argeo.api.cms.CmsState; -import org.argeo.cms.CmsDeployProperty; -import org.argeo.cms.websocket.javax.server.CmsWebSocketConfigurator; -import org.argeo.cms.websocket.javax.server.TestEndpoint; import org.eclipse.jetty.server.session.SessionHandler; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer; import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator; +/** A {@link JettyHttpServer} which is compatible with Equinox servlets. */ public class CmsJettyServer extends JettyHttpServer { private static final String CONTEXT_TEMPDIR = "javax.servlet.context.tempdir"; // Equinox compatibility private static final String INTERNAL_CONTEXT_CLASSLOADER = "org.eclipse.equinox.http.jetty.internal.ContextClassLoader"; -// private static final CmsLog log = CmsLog.getLog(CmsJettyServer.class); - -// private Server server; -// private Path tempDir; -// -// private ServerConnector httpConnector; -// private ServerConnector httpsConnector; private Path tempDir; - // WebSocket - private ServerContainer wsServerContainer; - private ServerEndpointConfig.Configurator wsEndpointConfigurator; - - private CmsState cmsState; + private CompletableFuture serverContainer = new CompletableFuture<>(); protected void addServlets(ServletContextHandler servletContextHandler) throws ServletException { } @@ -51,6 +37,7 @@ public class CmsJettyServer extends JettyHttpServer { super.start(); } + @Override protected ServletContextHandler createRootContextHandler() { ServletContextHandler servletContextHandler = new ServletContextHandler(); servletContextHandler.setAttribute(INTERNAL_CONTEXT_CLASSLOADER, @@ -63,48 +50,30 @@ public class CmsJettyServer extends JettyHttpServer { handler.setMaxInactiveInterval(-1); servletContextHandler.setSessionHandler(handler); - return servletContextHandler; - } + JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() { - @Override - protected void configureRootContextHandler(ServletContextHandler servletContextHandler) throws ServletException { - addServlets(servletContextHandler); - enableWebSocket(servletContextHandler); + @Override + public void accept(ServletContext servletContext, ServerContainer serverContainer) + throws DeploymentException { + CmsJettyServer.this.serverContainer.complete(serverContainer); + } + }); + return servletContextHandler; } - protected void enableWebSocket(ServletContextHandler servletContextHandler) { - String webSocketEnabled = getDeployProperty(CmsDeployProperty.WEBSOCKET_ENABLED); - // web socket - if (webSocketEnabled != null && webSocketEnabled.equals(Boolean.toString(true))) { - JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() { - - @Override - public void accept(ServletContext servletContext, ServerContainer serverContainer) - throws DeploymentException { - wsServerContainer = serverContainer; - - wsEndpointConfigurator = new CmsWebSocketConfigurator(); - - ServerEndpointConfig config = ServerEndpointConfig.Builder - .create(TestEndpoint.class, "/ws/test/events/").configurator(wsEndpointConfigurator) - .build(); - try { - wsServerContainer.addEndpoint(config); - } catch (DeploymentException e) { - throw new IllegalStateException("Cannot initalise the WebSocket server runtime.", e); - } - } - }); - } + @Override + protected ServerContainer getRootServerContainer() { + return serverContainer.join(); } - protected String getDeployProperty(CmsDeployProperty deployProperty) { - return cmsState.getDeployProperty(deployProperty.getProperty()); + @Override + protected void configureRootContextHandler(ServletContextHandler servletContextHandler) throws ServletException { + addServlets(servletContextHandler); } - public void setCmsState(CmsState cmsState) { - this.cmsState = cmsState; - } + /* + * WEB SOCKET + */ }