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 org.eclipse.jetty.server.session.SessionHandler;
-import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee8.nested.SessionHandler;
+import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee8.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
+import org.eclipse.jetty.ee8.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 Authenticator defaultAuthenticator;
+ private CompletableFuture<ServerContainer> serverContainer = new CompletableFuture<>();
protected void addServlets(ServletContextHandler servletContextHandler) throws ServletException {
}
super.start();
}
+ @Override
protected ServletContextHandler createRootContextHandler() {
ServletContextHandler servletContextHandler = new ServletContextHandler();
servletContextHandler.setAttribute(INTERNAL_CONTEXT_CLASSLOADER,
handler.setMaxInactiveInterval(-1);
servletContextHandler.setSessionHandler(handler);
+ JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
+
+ @Override
+ public void accept(ServletContext servletContext, ServerContainer serverContainer)
+ throws DeploymentException {
+ CmsJettyServer.this.serverContainer.complete(serverContainer);
+ }
+ });
+
return servletContextHandler;
}
+ @Override
+ protected ServerContainer getRootServerContainer() {
+ return serverContainer.join();
+ }
+
@Override
protected void configureRootContextHandler(ServletContextHandler servletContextHandler) throws ServletException {
addServlets(servletContextHandler);
-// enableWebSocket(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);
-//// }
-//// }
-//// });
-// }
-// }
-
-// public void setDefaultAuthenticator(Authenticator defaultAuthenticator) {
-// this.defaultAuthenticator = defaultAuthenticator;
-// }
+ /*
+ * WEB SOCKET
+ */
}