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=a18f4b495632f908c9be762ac1587c49af46b5b2;hpb=60aa2e64061a09e938d9f6cba35ee3fd66a19828;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 a18f4b495..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,45 +3,26 @@ package org.argeo.cms.jetty; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Map; +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 com.sun.net.httpserver.Authenticator; -import com.sun.net.httpserver.HttpContext; - -import org.argeo.api.cms.CmsState; -import org.argeo.cms.CmsDeployProperty; -import org.argeo.cms.websocket.server.CmsWebSocketConfigurator; -import org.argeo.cms.websocket.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 Authenticator defaultAuthenticator; + private CompletableFuture serverContainer = new CompletableFuture<>(); protected void addServlets(ServletContextHandler servletContextHandler) throws ServletException { } @@ -56,6 +37,7 @@ public class CmsJettyServer extends JettyHttpServer { super.start(); } + @Override protected ServletContextHandler createRootContextHandler() { ServletContextHandler servletContextHandler = new ServletContextHandler(); servletContextHandler.setAttribute(INTERNAL_CONTEXT_CLASSLOADER, @@ -68,59 +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; } @Override - public synchronized HttpContext createContext(String path) { - HttpContext httpContext = super.createContext(path); - httpContext.setAuthenticator(defaultAuthenticator); - return httpContext; - } - - 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; -// -// CmsWebSocketConfigurator wsEndpointConfigurator = new CmsWebSocketConfigurator(); -// -// ServerEndpointConfig config = ServerEndpointConfig.Builder -// .create(TestEndpoint.class, "/ws/test/events/{topic}").configurator(wsEndpointConfigurator) -// .build(); -// try { -// serverContainer.addEndpoint(config); -// } catch (DeploymentException e) { -// throw new IllegalStateException("Cannot initalise the WebSocket server runtime.", e); -// } -// } -// }); - } - } - - protected String getDeployProperty(CmsDeployProperty deployProperty) { - return cmsState.getDeployProperty(deployProperty.getProperty()); + protected ServerContainer getRootServerContainer() { + return serverContainer.join(); } - public void setCmsState(CmsState cmsState) { - this.cmsState = cmsState; + @Override + protected void configureRootContextHandler(ServletContextHandler servletContextHandler) throws ServletException { + addServlets(servletContextHandler); } - public void setDefaultAuthenticator(Authenticator defaultAuthenticator) { - this.defaultAuthenticator = defaultAuthenticator; - } + /* + * WEB SOCKET + */ }