1 package org
.argeo
.cms
.jetty
;
3 import java
.io
.IOException
;
4 import java
.nio
.file
.Files
;
5 import java
.nio
.file
.Path
;
7 import javax
.servlet
.ServletException
;
9 import org
.eclipse
.jetty
.server
.session
.SessionHandler
;
10 import org
.eclipse
.jetty
.servlet
.ServletContextHandler
;
12 public class CmsJettyServer
extends JettyHttpServer
{
13 private static final String CONTEXT_TEMPDIR
= "javax.servlet.context.tempdir";
14 // Equinox compatibility
15 private static final String INTERNAL_CONTEXT_CLASSLOADER
= "org.eclipse.equinox.http.jetty.internal.ContextClassLoader";
16 // private static final CmsLog log = CmsLog.getLog(CmsJettyServer.class);
18 // private Server server;
19 // private Path tempDir;
21 // private ServerConnector httpConnector;
22 // private ServerConnector httpsConnector;
26 // private ServerContainer wsServerContainer;
27 // private ServerEndpointConfig.Configurator wsEndpointConfigurator;
29 // private Authenticator defaultAuthenticator;
31 protected void addServlets(ServletContextHandler servletContextHandler
) throws ServletException
{
37 tempDir
= Files
.createTempDirectory("jetty");
38 } catch (IOException e
) {
39 throw new IllegalStateException("Cannot create temp dir", e
);
44 protected ServletContextHandler
createRootContextHandler() {
45 ServletContextHandler servletContextHandler
= new ServletContextHandler();
46 servletContextHandler
.setAttribute(INTERNAL_CONTEXT_CLASSLOADER
,
47 Thread
.currentThread().getContextClassLoader());
48 servletContextHandler
.setClassLoader(this.getClass().getClassLoader());
49 servletContextHandler
.setContextPath("/");
51 servletContextHandler
.setAttribute(CONTEXT_TEMPDIR
, tempDir
.toAbsolutePath().toFile());
52 SessionHandler handler
= new SessionHandler();
53 handler
.setMaxInactiveInterval(-1);
54 servletContextHandler
.setSessionHandler(handler
);
56 return servletContextHandler
;
60 protected void configureRootContextHandler(ServletContextHandler servletContextHandler
) throws ServletException
{
61 addServlets(servletContextHandler
);
62 // enableWebSocket(servletContextHandler);
67 // public synchronized HttpContext createContext(String path) {
68 // HttpContext httpContext = super.createContext(path);
69 // httpContext.setAuthenticator(defaultAuthenticator);
70 // return httpContext;
73 // protected void enableWebSocket(ServletContextHandler servletContextHandler) {
74 // String webSocketEnabled = getDeployProperty(CmsDeployProperty.WEBSOCKET_ENABLED);
76 // if (webSocketEnabled != null && webSocketEnabled.equals(Boolean.toString(true))) {
77 //// JavaxWebSocketServletContainerInitializer.configure(servletContextHandler, new Configurator() {
80 //// public void accept(ServletContext servletContext, ServerContainer serverContainer)
81 //// throws DeploymentException {
82 ////// wsServerContainer = serverContainer;
84 //// CmsWebSocketConfigurator wsEndpointConfigurator = new CmsWebSocketConfigurator();
86 //// ServerEndpointConfig config = ServerEndpointConfig.Builder
87 //// .create(TestEndpoint.class, "/ws/test/events/{topic}").configurator(wsEndpointConfigurator)
90 //// serverContainer.addEndpoint(config);
91 //// } catch (DeploymentException e) {
92 //// throw new IllegalStateException("Cannot initalise the WebSocket server runtime.", e);
99 // public void setDefaultAuthenticator(Authenticator defaultAuthenticator) {
100 // this.defaultAuthenticator = defaultAuthenticator;