From 1c8ef4157f6c022fabbf0c289a50453eec193fb7 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 23 Sep 2024 10:44:24 +0200 Subject: [PATCH] Experiment around Eclipse RAP v4 --- .../org/argeo/cms/jetty/JettyHttpServer.java | 2 +- .../argeo/cms/jetty/ee10/CmsJettyServer.java | 1 + .../http/jetty/EquinoxJettyServer.java | 30 ++++++++++--------- .../src/org/argeo/cms/web/CmsWebApp.java | 1 + 4 files changed, 19 insertions(+), 15 deletions(-) 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 24cc7d306..ae647fa74 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 @@ -413,6 +413,7 @@ public class JettyHttpServer extends HttpsServer { public static void main(String... args) { JettyHttpServer httpServer = new JettyHttpServer(); System.setProperty("argeo.http.port", "8080"); + httpServer.start(); httpServer.createContext("/hello", (exchange) -> { exchange.getResponseBody().write("Hello World!".getBytes()); @@ -430,6 +431,5 @@ public class JettyHttpServer extends HttpsServer { sb.append(" relativePath=" + HttpServerUtils.relativize(exchange)); exchange.getResponseBody().write(sb.toString().getBytes()); }); - httpServer.start(); } } diff --git a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/ee10/CmsJettyServer.java b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/ee10/CmsJettyServer.java index ca8e5d8d0..5fb7ebdf6 100644 --- a/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/ee10/CmsJettyServer.java +++ b/org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/ee10/CmsJettyServer.java @@ -45,6 +45,7 @@ public class CmsJettyServer extends JettyHttpServer { Thread.currentThread().getContextClassLoader()); servletContextHandler.setClassLoader(this.getClass().getClassLoader()); servletContextHandler.setContextPath("/"); + //servletContextHandler.setContextPath("/cms/user"); servletContextHandler.setAttribute(CONTEXT_TEMPDIR, tempDir.toAbsolutePath().toFile()); SessionHandler handler = new SessionHandler(); diff --git a/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java b/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java index a1b4c4ece..036e6bea8 100644 --- a/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java +++ b/osgi/equinox/org.argeo.cms.lib.equinox/src/org/argeo/cms/equinox/http/jetty/EquinoxJettyServer.java @@ -4,6 +4,13 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.argeo.api.cms.CmsLog; +import org.argeo.cms.jetty.ee10.CmsJettyServer; +import org.eclipse.jetty.ee10.servlet.ServletContextHandler; +import org.eclipse.jetty.ee10.servlet.ServletHolder; +import org.eclipse.jetty.ee10.servlet.SessionHandler; +import org.eclipse.rap.http.servlet.HttpServiceServlet; + import jakarta.servlet.Servlet; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletContext; @@ -14,31 +21,26 @@ import jakarta.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionIdListener; import jakarta.servlet.http.HttpSessionListener; -import org.argeo.api.cms.CmsLog; -import org.argeo.cms.jetty.ee10.CmsJettyServer; -import org.eclipse.rap.http.servlet.HttpServiceServlet; -import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.ServletHolder; -import org.osgi.framework.Constants; - /** A {@link CmsJettyServer} integrating with Equinox HTTP framework. */ public class EquinoxJettyServer extends CmsJettyServer { private final static CmsLog log = CmsLog.getLog(EquinoxJettyServer.class); private static final String INTERNAL_CONTEXT_CLASSLOADER = "org.eclipse.equinox.http.jetty.internal.ContextClassLoader"; @Override - protected void addServlets(ServletContextHandler rootContextHandler) { + protected void addServlets(ServletContextHandler servletContextHandler) { try { - ServletHolder holder = new ServletHolder(new InternalHttpServiceServlet()); + // servletContextHandler.setContextPath("/"); + // ServletHolder holder = new ServletHolder(new InternalHttpServiceServlet()); + ServletHolder holder = new ServletHolder(new HttpServiceServlet()); holder.setInitOrder(0); - holder.setInitParameter(Constants.SERVICE_VENDOR, "Eclipse.org"); //$NON-NLS-1$ - holder.setInitParameter(Constants.SERVICE_DESCRIPTION, "Equinox Jetty-based Http Service"); //$NON-NLS-1$ +// holder.setInitParameter(Constants.SERVICE_VENDOR, "Eclipse.org"); //$NON-NLS-1$ +// holder.setInitParameter(Constants.SERVICE_DESCRIPTION, "Equinox Jetty-based Http Service"); //$NON-NLS-1$ - rootContextHandler.addServlet(holder, "/*"); + // holder.setInitParameter("osgi.http.endpoint","/cms/user"); + servletContextHandler.addServlet(holder, "/*"); // post-start - SessionHandler sessionManager = rootContextHandler.getSessionHandler(); + SessionHandler sessionManager = servletContextHandler.getSessionHandler(); sessionManager.addEventListener((HttpSessionIdListener) holder.getServlet()); } catch (ServletException e) { throw new RuntimeException("Cannot add servlets", e); diff --git a/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebApp.java b/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebApp.java index c4e9ca749..34afe757e 100644 --- a/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebApp.java +++ b/swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/CmsWebApp.java @@ -146,6 +146,7 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm protected void publishWebApp() { Dictionary regProps = LangUtils.dict(CONTEXT_NAME, contextName); + //regProps.put("httpService.target", "(osgi.http.endpoint=/cms/user)"); if (rwtAppReg != null) rwtAppReg.unregister(); if (bundleContext != null) { -- 2.39.5