X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.lib.jetty%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjetty%2FJettyHttpServer.java;h=74f0aaed3d8ddeb3154585386f15a5968d8c54eb;hb=1a65fa72abac6a458139240efa281138aac9ef2b;hp=a469a87c4ec8b22ca4b1f7a0dafc095502f613de;hpb=fe7e7e660266c125139d163f0366860768be6c4d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java index a469a87c4..74f0aaed3 100644 --- a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java +++ b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java @@ -2,11 +2,13 @@ package org.argeo.cms.jetty; import java.io.IOException; import java.net.InetSocketAddress; +import java.security.NoSuchAlgorithmException; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; +import javax.net.ssl.SSLContext; import javax.servlet.ServletException; import javax.websocket.server.ServerContainer; @@ -14,6 +16,7 @@ import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.CmsState; import org.argeo.cms.CmsDeployProperty; import org.argeo.cms.http.server.HttpServerUtils; +import org.eclipse.jetty.ee8.servlet.ServletContextHandler; import org.eclipse.jetty.http.UriCompliance; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; @@ -22,7 +25,6 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.ExecutorThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool; @@ -170,6 +172,16 @@ public class JettyHttpServer extends HttpsServer { } if (httpsEnabled) { + if (httpsConfigurator == null) { + // we make sure that an HttpSConfigurator is set, so that clients can detect + // whether this server is HTTP or HTTPS + try { + httpsConfigurator = new HttpsConfigurator(SSLContext.getDefault()); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("Cannot initalise SSL Context", e); + } + } + SslContextFactory.Server sslContextFactory = new SslContextFactory.Server(); // sslContextFactory.setKeyStore(KeyS) @@ -266,7 +278,11 @@ public class JettyHttpServer extends HttpsServer { JettyHttpContext httpContext = contexts.remove(path); if (httpContext instanceof ContextHandlerHttpContext contextHandlerHttpContext) { // TODO stop handler first? - contextHandlerCollection.removeHandler(contextHandlerHttpContext.getServletContextHandler()); + // FIXME understand compatibility with Jetty 12 + //contextHandlerCollection.removeHandler(contextHandlerHttpContext.getServletContextHandler()); + } else { + // FIXME apparently servlets cannot be removed in Jetty, we should replace the + // handler } }