You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cs...@apache.org on 2026/07/15 22:48:28 UTC
(activemq) 01/05: [AMQ-9359] Jetty-12 conversion
This is an automated email from the ASF dual-hosted git repository.
cshannon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git
commit d31d590f0bc29a7927399beffe10dd8279e40284
Author: Matt Pavlovich <ma...@apache.org>
AuthorDate: Thu May 30 08:16:02 2024 -0500
[AMQ-9359] Jetty-12 conversion
---
activemq-amqp/pom.xml | 2 +-
activemq-http/pom.xml | 32 +++++-
.../transport/WebTransportServerSupport.java | 26 +++--
.../discovery/http/EmbeddedJettyServer.java | 4 +-
.../transport/http/HttpTransportServer.java | 15 +--
.../activemq/transport/ws/StompWSConnection.java | 8 +-
.../activemq/transport/ws/WSTransportProxy.java | 8 +-
.../activemq/transport/ws/WSTransportServer.java | 17 ++--
.../ws/{jetty11 => jetty12}/MQTTSocket.java | 6 +-
.../ws/{jetty11 => jetty12}/StompSocket.java | 6 +-
.../ws/{jetty11 => jetty12}/WSServlet.java | 14 +--
.../transport/http/HttpTraceTestSupport.java | 8 +-
.../activemq/transport/ws/MQTTWSConnection.java | 37 ++++---
.../transport/ws/MQTTWSSubProtocolTest.java | 2 +-
.../activemq/transport/ws/MQTTWSTransportTest.java | 12 ++-
.../transport/ws/MQTTWSTransportWillTest.java | 2 +-
.../apache/activemq/transport/ws/SocketTest.java | 8 +-
.../transport/ws/StompWSSubProtocolTest.java | 2 +-
.../transport/ws/StompWSTransportTest.java | 2 +-
.../activemq/transport/ws/WSTransportTest.java | 10 +-
.../transport/wss/WSSTransportHttpTraceTest.java | 2 +-
.../wss/WSSTransportNeedClientAuthTest.java | 4 +-
.../transport/xstream/XStreamWireFormatTest.java | 1 -
activemq-http/src/test/resources/spring-http.xml | 2 +-
activemq-web-console/pom.xml | 9 +-
.../java/org/apache/activemq/web/tool/Main.java | 17 ++--
activemq-web-demo/pom.xml | 5 +
.../java/org/apache/activemq/web/AjaxTest.java | 51 +++++-----
.../java/org/apache/activemq/web/JettyServer.java | 6 +-
.../org/apache/activemq/web/JettyTestSupport.java | 6 +-
.../apache/activemq/web/RestPersistentTest.java | 28 +++--
.../java/org/apache/activemq/web/RestTest.java | 113 +++++++++++----------
activemq-web/pom.xml | 8 +-
.../apache/activemq/web/config/JspConfigurer.java | 9 +-
assembly/pom.xml | 87 ++++++++++++++--
assembly/src/main/descriptors/common-bin.xml | 28 +++--
assembly/src/release/conf/jetty.xml | 57 +++++------
pom.xml | 12 ++-
38 files changed, 412 insertions(+), 254 deletions(-)
diff --git a/activemq-amqp/pom.xml b/activemq-amqp/pom.xml
index 610b4ec80d..9d0ee6db49 100644
--- a/activemq-amqp/pom.xml
+++ b/activemq-amqp/pom.xml
@@ -118,7 +118,7 @@
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-jetty-server</artifactId>
+ <artifactId>jetty-websocket-jetty-server</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/activemq-http/pom.xml b/activemq-http/pom.xml
index 2bae67a3f1..2aa5f75619 100644
--- a/activemq-http/pom.xml
+++ b/activemq-http/pom.xml
@@ -65,8 +65,8 @@
<artifactId>jetty-xml</artifactId>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-webapp</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
@@ -115,13 +115,37 @@
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-jetty-client</artifactId>
+ <artifactId>jetty-websocket-core-client</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-core-server</artifactId>
<scope>provided</scope>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-jetty-client</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-jetty-server</artifactId>
+ <artifactId>jetty-websocket-jetty-api</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jakarta-client</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jetty-server</artifactId>
<scope>provided</scope>
<optional>true</optional>
</dependency>
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java b/activemq-http/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java
index f258e96854..21a7b4e6fd 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java
@@ -21,15 +21,14 @@ import java.net.InetAddress;
import java.net.URI;
import java.util.Map;
-import org.apache.activemq.transport.http.BlockingQueueTransport;
import org.apache.activemq.util.InetAddressUtil;
import org.apache.activemq.util.IntrospectionSupport;
-import org.eclipse.jetty.security.ConstraintMapping;
-import org.eclipse.jetty.security.ConstraintSecurityHandler;
+import org.eclipse.jetty.ee9.nested.ServletConstraint;
+import org.eclipse.jetty.ee9.security.ConstraintMapping;
+import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.util.resource.Resource;
-import org.eclipse.jetty.util.security.Constraint;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.eclipse.jetty.xml.XmlConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,13 +56,13 @@ abstract public class WebTransportServerSupport extends TransportServerSupport {
protected void createServer() {
LOG.info("Starting Jetty server");
if (jettyOptions.getConfig() != null) {
- try {
+ try (ResourceFactory.Closeable resourceFactory = ResourceFactory.closeable()) {
LOG.info("Configuring Jetty server using {}", jettyOptions.getConfig());
File file = new File(jettyOptions.getConfig());
if (!file.exists()) {
throw new IllegalArgumentException("Jetty XML not found: " + file.getAbsolutePath());
}
- XmlConfiguration xmlConfiguration = new XmlConfiguration(Resource.newResource(file));
+ XmlConfiguration xmlConfiguration = new XmlConfiguration(resourceFactory.newResource(file.getPath()));
server = (Server) xmlConfiguration.configure();
} catch (Throwable t) {
throw new IllegalStateException("Jetty configuration can't be loaded", t);
@@ -111,12 +110,17 @@ abstract public class WebTransportServerSupport extends TransportServerSupport {
protected void configureTraceMethod(ConstraintSecurityHandler securityHandler,
boolean enableTrace) {
- Constraint constraint = new Constraint();
- constraint.setName("trace-security");
+
+ ServletConstraint servletConstraint;
//If enableTrace is true, then we want to set authenticate to false to allow it
- constraint.setAuthenticate(!enableTrace);
+ if(enableTrace) {
+ servletConstraint = new ServletConstraint("trace-security", ServletConstraint.ANY_AUTH);
+ } else {
+ servletConstraint = new ServletConstraint("trace-security", ServletConstraint.ANY_ROLE);
+ }
+
ConstraintMapping mapping = new ConstraintMapping();
- mapping.setConstraint(constraint);
+ mapping.setConstraint(servletConstraint);
mapping.setMethod("TRACE");
mapping.setPathSpec("/");
securityHandler.addConstraintMapping(mapping);
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/discovery/http/EmbeddedJettyServer.java b/activemq-http/src/main/java/org/apache/activemq/transport/discovery/http/EmbeddedJettyServer.java
index 786e3aac8d..0c996292cf 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/discovery/http/EmbeddedJettyServer.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/discovery/http/EmbeddedJettyServer.java
@@ -19,8 +19,8 @@ package org.apache.activemq.transport.discovery.http;
import java.net.URI;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.ee9.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee9.servlet.ServletHolder;
public class EmbeddedJettyServer implements org.apache.activemq.Service {
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java b/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
index 5b21f0a9cc..4b354ceb76 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
@@ -27,14 +27,15 @@ import org.apache.activemq.transport.WebTransportServerSupport;
import org.apache.activemq.transport.util.TextWireFormat;
import org.apache.activemq.transport.xstream.XStreamWireFormat;
import org.apache.activemq.util.ServiceStopper;
-import org.eclipse.jetty.security.ConstraintSecurityHandler;
+import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.HandlerWrapper;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.server.Handler.Wrapper;
+import org.eclipse.jetty.ee9.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee9.servlet.ServletHolder;
public class HttpTransportServer extends WebTransportServerSupport {
@@ -135,11 +136,11 @@ public class HttpTransportServer extends WebTransportServerSupport {
}
private void addGzipHandler(ServletContextHandler contextHandler) throws Exception {
- HandlerWrapper handler = null;
+ Handler.Wrapper handler = null;
try {
- handler = (HandlerWrapper) forName("org.eclipse.jetty.servlets.gzip.GzipHandler").getConstructor().newInstance();
+ handler = (Handler.Wrapper) forName("org.eclipse.jetty.servlets.gzip.GzipHandler").getConstructor().newInstance();
} catch (Throwable t) {
- handler = (HandlerWrapper) forName("org.eclipse.jetty.server.handler.gzip.GzipHandler").getConstructor().newInstance();
+ handler = (Handler.Wrapper) forName("org.eclipse.jetty.server.handler.gzip.GzipHandler").getConstructor().newInstance();
}
contextHandler.insertHandler(handler);
}
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/StompWSConnection.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/StompWSConnection.java
index 8c0fccb1cc..f052b7d966 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/StompWSConnection.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/StompWSConnection.java
@@ -25,9 +25,9 @@ import java.util.concurrent.TimeUnit;
import org.apache.activemq.transport.stomp.StompFrame;
import org.apache.activemq.transport.stomp.StompWireFormat;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.WebSocketAdapter;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.Session;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketAdapter;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -142,7 +142,7 @@ public class StompWSConnection extends WebSocketAdapter implements WebSocketList
}
@Override
- public void onWebSocketConnect(org.eclipse.jetty.websocket.api.Session session) {
+ public void onWebSocketConnect(org.eclipse.jetty.ee9.websocket.api.Session session) {
this.connection = session;
this.connection.setIdleTimeout(Duration.ZERO);
this.connectLatch.countDown();
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportProxy.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportProxy.java
index a8242d4edd..dde57bbaf3 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportProxy.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportProxy.java
@@ -34,8 +34,8 @@ import org.apache.activemq.util.IOExceptionSupport;
import org.apache.activemq.util.IntrospectionSupport;
import org.apache.activemq.util.ServiceStopper;
import org.apache.activemq.wireformat.WireFormat;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.Session;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -222,8 +222,8 @@ public final class WSTransportProxy extends TransportSupport implements Transpor
this.session.setIdleTimeout(Duration.ZERO);
if (wsTransport.getMaxFrameSize() > 0) {
- this.session.getPolicy().setMaxBinaryMessageSize(wsTransport.getMaxFrameSize());
- this.session.getPolicy().setMaxTextMessageSize(wsTransport.getMaxFrameSize());
+ this.session.setMaxBinaryMessageSize(wsTransport.getMaxFrameSize());
+ this.session.setMaxTextMessageSize(wsTransport.getMaxFrameSize());
}
}
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java
index 75cf1fd56c..4c7357a711 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java
@@ -21,24 +21,22 @@ import java.net.InetSocketAddress;
import java.net.URI;
import java.util.Map;
-import jakarta.servlet.Servlet;
-
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.BrokerServiceAware;
import org.apache.activemq.command.BrokerInfo;
import org.apache.activemq.transport.SocketConnectorFactory;
import org.apache.activemq.transport.WebTransportServerSupport;
-import org.apache.activemq.transport.ws.jetty11.WSServlet;
+import org.apache.activemq.transport.ws.jetty12.WSServlet;
import org.apache.activemq.util.IntrospectionSupport;
import org.apache.activemq.util.ServiceStopper;
-import org.eclipse.jetty.security.ConstraintSecurityHandler;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
+import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler;
+import org.eclipse.jetty.ee9.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee9.servlet.ServletHolder;
+import org.eclipse.jetty.ee9.websocket.server.config.JettyWebSocketServletContainerInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -77,6 +75,7 @@ public class WSTransportServer extends WebTransportServerSupport implements Brok
ServletContextHandler contextHandler =
new ServletContextHandler(server, "/", ServletContextHandler.SECURITY);
+ // server.setHandler(contextHandler); Future: Jetty 12 EE10 API change
ServletHolder holder = new ServletHolder();
JettyWebSocketServletContainerInitializer.configure(contextHandler, null);
@@ -96,7 +95,7 @@ public class WSTransportServer extends WebTransportServerSupport implements Brok
contextHandler.addServlet(holder, "/");
contextHandler.setAttribute("acceptListener", getAcceptListener());
-
+
server.start();
// Update the Connect To URI with our actual location in case the configured port
@@ -118,7 +117,7 @@ public class WSTransportServer extends WebTransportServerSupport implements Brok
LOG.info("Listening for connections at {}", getConnectURI());
}
- private Servlet createWSServlet() throws Exception {
+ private WSServlet createWSServlet() throws Exception {
servlet = new WSServlet();
servlet.setTransportOptions(transportOptions);
servlet.setBrokerService(brokerService);
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/MQTTSocket.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/MQTTSocket.java
similarity index 96%
rename from activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/MQTTSocket.java
rename to activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/MQTTSocket.java
index 853c201c34..6e14b9ec37 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/MQTTSocket.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/MQTTSocket.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.activemq.transport.ws.jetty11;
+package org.apache.activemq.transport.ws.jetty12;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -26,8 +26,8 @@ import org.apache.activemq.transport.mqtt.MQTTCodec;
import org.apache.activemq.transport.ws.AbstractMQTTSocket;
import org.apache.activemq.util.ByteSequence;
import org.apache.activemq.util.IOExceptionSupport;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.Session;
import org.fusesource.hawtbuf.Buffer;
import org.fusesource.hawtbuf.DataByteArrayInputStream;
import org.fusesource.mqtt.codec.DISCONNECT;
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/StompSocket.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/StompSocket.java
similarity index 95%
rename from activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/StompSocket.java
rename to activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/StompSocket.java
index 5c718c8ab0..2a47a5156c 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/StompSocket.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/StompSocket.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.activemq.transport.ws.jetty11;
+package org.apache.activemq.transport.ws.jetty12;
import java.io.IOException;
import java.time.Duration;
@@ -24,8 +24,8 @@ import org.apache.activemq.transport.stomp.Stomp;
import org.apache.activemq.transport.stomp.StompFrame;
import org.apache.activemq.transport.ws.AbstractStompSocket;
import org.apache.activemq.util.IOExceptionSupport;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.Session;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/WSServlet.java b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/WSServlet.java
similarity index 94%
rename from activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/WSServlet.java
rename to activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/WSServlet.java
index 607248e4de..86183c8c4f 100644
--- a/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty11/WSServlet.java
+++ b/activemq-http/src/main/java/org/apache/activemq/transport/ws/jetty12/WSServlet.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.activemq.transport.ws.jetty11;
+package org.apache.activemq.transport.ws.jetty12;
import java.io.IOException;
import java.net.URI;
@@ -38,12 +38,12 @@ import org.apache.activemq.transport.TransportAcceptListener;
import org.apache.activemq.transport.TransportFactory;
import org.apache.activemq.transport.util.HttpTransportUtils;
import org.apache.activemq.transport.ws.WSTransportProxy;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
-import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
-import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
-import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
-import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
-import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.server.JettyServerUpgradeRequest;
+import org.eclipse.jetty.ee9.websocket.server.JettyServerUpgradeResponse;
+import org.eclipse.jetty.ee9.websocket.server.JettyWebSocketCreator;
+import org.eclipse.jetty.ee9.websocket.server.JettyWebSocketServlet;
+import org.eclipse.jetty.ee9.websocket.server.JettyWebSocketServletFactory;
/**
* Handle connection upgrade requests and creates web sockets
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTraceTestSupport.java b/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTraceTestSupport.java
index 0eb35f6cf5..b55d45bc48 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTraceTestSupport.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/http/HttpTraceTestSupport.java
@@ -24,10 +24,10 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
+import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.BufferingResponseListener;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.io.ClientConnector;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSConnection.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSConnection.java
index e127d077d0..845de35bdf 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSConnection.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSConnection.java
@@ -27,9 +27,9 @@ import java.util.concurrent.TimeUnit;
import org.apache.activemq.transport.mqtt.MQTTWireFormat;
import org.apache.activemq.util.ByteSequence;
-import org.eclipse.jetty.websocket.api.Session;
-import org.eclipse.jetty.websocket.api.WebSocketAdapter;
-import org.eclipse.jetty.websocket.api.WebSocketListener;
+import org.eclipse.jetty.ee9.websocket.api.Session;
+import org.eclipse.jetty.ee9.websocket.api.WebSocketAdapter;
+import org.eclipse.jetty.websocket.api.Session.Listener.AutoDemanding;
import org.fusesource.hawtbuf.UTF8Buffer;
import org.fusesource.mqtt.codec.CONNACK;
import org.fusesource.mqtt.codec.CONNECT;
@@ -49,13 +49,12 @@ import org.slf4j.LoggerFactory;
/**
* Implements a simple WebSocket based MQTT Client that can be used for unit testing.
*/
-public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListener {
+public class MQTTWSConnection extends WebSocketAdapter implements AutoDemanding {
private static final Logger LOG = LoggerFactory.getLogger(MQTTWSConnection.class);
private static final MQTTFrame PING_RESP_FRAME = new PINGRESP().encode();
- private Session connection;
private final CountDownLatch connectLatch = new CountDownLatch(1);
private final MQTTWireFormat wireFormat = new MQTTWireFormat();
@@ -67,17 +66,17 @@ public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListe
@Override
public boolean isConnected() {
- return connection != null ? connection.isOpen() : false;
+ return getSession() != null ? getSession().isOpen() : false;
}
public void close() {
- if (connection != null) {
- connection.close();
+ if (getSession() != null) {
+ getSession().close();
}
}
protected Session getConnection() {
- return connection;
+ return getSession();
}
//----- Connection and Disconnection methods -----------------------------//
@@ -193,7 +192,7 @@ public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListe
frame = (MQTTFrame)wireFormat.unmarshal(new ByteSequence(data, offset, length));
} catch (IOException e) {
LOG.error("Could not decode incoming MQTT Frame: {}", e.getMessage());
- connection.close();
+ getSession().close();
}
try {
@@ -243,11 +242,11 @@ public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListe
break;
default:
LOG.error("Unknown MQTT Frame received.");
- connection.close();
+ getSession().close();
}
} catch (Exception e) {
LOG.error("Could not decode incoming MQTT Frame: {}", e.getMessage());
- connection.close();
+ getSession().close();
}
}
@@ -255,11 +254,11 @@ public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListe
private void sendBytes(ByteSequence payload) throws IOException {
if (!isWritePartialFrames()) {
- connection.getRemote().sendBytes(ByteBuffer.wrap(payload.data, payload.offset, payload.length));
+ getRemote().sendBytes(ByteBuffer.wrap(payload.data, payload.offset, payload.length));
} else {
- connection.getRemote().sendBytes(ByteBuffer.wrap(
+ getRemote().sendBytes(ByteBuffer.wrap(
payload.data, payload.offset, payload.length / 2));
- connection.getRemote().sendBytes(ByteBuffer.wrap(
+ getRemote().sendBytes(ByteBuffer.wrap(
payload.data, payload.offset + payload.length / 2, payload.length / 2));
}
}
@@ -274,16 +273,16 @@ public class MQTTWSConnection extends WebSocketAdapter implements WebSocketListe
public void onWebSocketClose(int statusCode, String reason) {
LOG.trace("MQTT WS Connection closed, code:{} message:{}", statusCode, reason);
- this.connection = null;
+ getSession().close(statusCode, reason);
this.closeCode = statusCode;
this.closeMessage = reason;
}
@Override
- public void onWebSocketConnect(org.eclipse.jetty.websocket.api.Session session) {
- this.connection = session;
- this.connection.setIdleTimeout(Duration.ZERO);
+ public void onWebSocketConnect(org.eclipse.jetty.ee9.websocket.api.Session session) {
+ super.onWebSocketConnect(session);
+ getSession().setIdleTimeout(Duration.ZERO);
this.connectLatch.countDown();
}
}
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSubProtocolTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSubProtocolTest.java
index 46aa692b6a..2afddf84fe 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSubProtocolTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSSubProtocolTest.java
@@ -22,7 +22,7 @@ import java.io.IOException;
import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
index 9c524c4d3e..a92d7d7ff2 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.transport.ws;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -23,14 +24,16 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.util.Wait;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
import org.eclipse.jetty.websocket.client.WebSocketClient;
import org.fusesource.hawtbuf.UTF8Buffer;
@@ -86,7 +89,9 @@ public class MQTTWSTransportTest extends WSTransportTestSupport {
wsMQTTConnection = new MQTTWSConnection().setWritePartialFrames(partialFrames);
- wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ CompletableFuture<Session> webSocketFuture = wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ Session webSocketSession = webSocketFuture.get(30, TimeUnit.SECONDS);
+ assertNotNull(webSocketSession);
if (!wsMQTTConnection.awaitConnection(30, TimeUnit.SECONDS)) {
throw new IOException("Could not connect to MQTT WS endpoint");
}
@@ -114,7 +119,8 @@ public class MQTTWSTransportTest extends WSTransportTestSupport {
wsMQTTConnection = new MQTTWSConnection().setWritePartialFrames(partialFrames);
- wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ CompletableFuture<Session> wsClientFuture = wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ wsClientFuture.get(30, TimeUnit.SECONDS);
if (!wsMQTTConnection.awaitConnection(30, TimeUnit.SECONDS)) {
throw new IOException("Could not connect to MQTT WS endpoint");
}
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportWillTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportWillTest.java
index 9f8d7abf40..a9998069e2 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportWillTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/MQTTWSTransportWillTest.java
@@ -26,7 +26,7 @@ import java.util.Collection;
import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/SocketTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/SocketTest.java
index 76910dfee3..9f2aecfc84 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/SocketTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/SocketTest.java
@@ -18,8 +18,8 @@ package org.apache.activemq.transport.ws;
import static org.junit.Assert.assertEquals;
-import org.apache.activemq.transport.ws.jetty11.MQTTSocket;
-import org.apache.activemq.transport.ws.jetty11.StompSocket;
+import org.apache.activemq.transport.ws.jetty12.MQTTSocket;
+import org.apache.activemq.transport.ws.jetty12.StompSocket;
import org.junit.Test;
public class SocketTest {
@@ -31,8 +31,8 @@ public class SocketTest {
assertEquals("ws://localhost:8080", stompSocketJetty8.getRemoteAddress());
- org.apache.activemq.transport.ws.jetty11.StompSocket stompSocketJetty11 =
- new org.apache.activemq.transport.ws.jetty11.StompSocket("ws://localhost:8080");
+ org.apache.activemq.transport.ws.jetty12.StompSocket stompSocketJetty11 =
+ new org.apache.activemq.transport.ws.jetty12.StompSocket("ws://localhost:8080");
assertEquals("ws://localhost:8080", stompSocketJetty11.getRemoteAddress());
}
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSubProtocolTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSubProtocolTest.java
index 80a86c5d04..b689cca453 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSubProtocolTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSSubProtocolTest.java
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.activemq.transport.stomp.Stomp;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSTransportTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSTransportTest.java
index 83bb0e3aa5..10171510e4 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSTransportTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/StompWSTransportTest.java
@@ -30,7 +30,7 @@ import org.apache.activemq.transport.stomp.StompFrame;
import org.apache.activemq.util.Wait;
import org.apache.activemq.util.Wait.Condition;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
index d0e2d3bccc..870f35c930 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/ws/WSTransportTest.java
@@ -32,17 +32,17 @@ import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.transport.SocketConnectorFactory;
import org.apache.activemq.transport.stomp.StompConnection;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
+import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.BufferingResponseListener;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.ee9.webapp.WebAppContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
index e160047790..2e1faa727a 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportHttpTraceTest.java
@@ -25,7 +25,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-@Ignore
+
@RunWith(Parameterized.class)
public class WSSTransportHttpTraceTest extends WSTransportHttpTraceTest {
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportNeedClientAuthTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportNeedClientAuthTest.java
index cfc9c73e5a..8553d555c2 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportNeedClientAuthTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/wss/WSSTransportNeedClientAuthTest.java
@@ -23,7 +23,7 @@ import org.apache.activemq.transport.stomp.StompFrame;
import org.apache.activemq.transport.ws.MQTTWSConnection;
import org.apache.activemq.transport.ws.StompWSConnection;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic;
+import org.eclipse.jetty.client.transport.HttpClientTransportDynamic;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.api.Session;
@@ -145,12 +145,12 @@ public class WSSTransportNeedClientAuthTest {
MQTTWSConnection wsMQTTConnection = new MQTTWSConnection();
wsClient.connect(wsMQTTConnection, new URI("wss://localhost:61618"), request);
+
if (!wsMQTTConnection.awaitConnection(30, TimeUnit.SECONDS)) {
throw new IOException("Could not connect to MQTT WS endpoint");
}
wsMQTTConnection.connect();
-
assertTrue("Client not connected", wsMQTTConnection.isConnected());
wsMQTTConnection.disconnect();
diff --git a/activemq-http/src/test/java/org/apache/activemq/transport/xstream/XStreamWireFormatTest.java b/activemq-http/src/test/java/org/apache/activemq/transport/xstream/XStreamWireFormatTest.java
index 5a5e611298..90a5c850dd 100644
--- a/activemq-http/src/test/java/org/apache/activemq/transport/xstream/XStreamWireFormatTest.java
+++ b/activemq-http/src/test/java/org/apache/activemq/transport/xstream/XStreamWireFormatTest.java
@@ -20,7 +20,6 @@ import java.io.IOException;
import junit.framework.Test;
import org.apache.activemq.command.ActiveMQTextMessage;
-import org.apache.activemq.command.Command;
import org.apache.activemq.command.MessageTest;
import org.apache.activemq.wireformat.WireFormat;
import org.slf4j.Logger;
diff --git a/activemq-http/src/test/resources/spring-http.xml b/activemq-http/src/test/resources/spring-http.xml
index 1a65db4372..129ae77c8c 100644
--- a/activemq-http/src/test/resources/spring-http.xml
+++ b/activemq-http/src/test/resources/spring-http.xml
@@ -44,7 +44,7 @@
<!-- lets wrap in a pool to avoid creating a connection per send -->
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory">
- <ref local="jmsFactory" />
+ <ref bean="jmsFactory" />
</property>
</bean>
</property>
diff --git a/activemq-web-console/pom.xml b/activemq-web-console/pom.xml
index 9e90f6e89c..04f5c2f5a2 100644
--- a/activemq-web-console/pom.xml
+++ b/activemq-web-console/pom.xml
@@ -248,6 +248,11 @@
</dependency>
<!-- web container -->
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-webapp</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
@@ -330,8 +335,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>apache-jsp</artifactId>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-apache-jsp</artifactId>
<scope>provided</scope>
<exclusions>
<exclusion>
diff --git a/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java b/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java
index 443f102236..1f06c789ad 100644
--- a/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java
+++ b/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java
@@ -18,9 +18,11 @@
package org.apache.activemq.web.tool;
import org.apache.activemq.web.config.JspConfigurer;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.util.resource.ResourceFactory;
+import org.eclipse.jetty.ee9.webapp.WebAppContext;
/**
* A simple bootstrap class for starting Jetty in your IDE using the local web
@@ -50,22 +52,25 @@ public final class Main {
System.out.println("Starting Web Server on port: " + port);
System.setProperty("jetty.port", "" + port);
Server server = new Server(port);
+ Handler.Sequence rootHandler = new Handler.Sequence();
+ server.setHandler(rootHandler);
//System.setProperty("webconsole.type","properties");
//System.setProperty("webconsole.jms.url","tcp://localhost:61616");
//System.setProperty("webconsole.jmx.url","service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root");
WebAppContext context = new WebAppContext();
- ContextHandlerCollection handlers = new ContextHandlerCollection();
- handlers.setHandlers(new WebAppContext[] {context});
+ ResourceFactory resourceFactory = ResourceFactory.of(context);
+ context.setBaseResource(resourceFactory.newResource(WEBAPP_DIR));
- JspConfigurer.configureJetty(server, handlers);
+ ContextHandlerCollection contextHandlers = new ContextHandlerCollection();
+ contextHandlers.addHandler(contextHandlers);
+ contextHandlers.addBean(context);
+ JspConfigurer.configureJetty(server, contextHandlers);
- context.setResourceBase(WEBAPP_DIR);
context.setContextPath(WEBAPP_CTX);
context.setServer(server);
- server.setHandler(handlers);
server.start();
System.out.println();
diff --git a/activemq-web-demo/pom.xml b/activemq-web-demo/pom.xml
index ec0c380a4a..19769639dc 100644
--- a/activemq-web-demo/pom.xml
+++ b/activemq-web-demo/pom.xml
@@ -188,6 +188,11 @@
<artifactId>jetty-server</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-webapp</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
diff --git a/activemq-web-demo/src/test/java/org/apache/activemq/web/AjaxTest.java b/activemq-web-demo/src/test/java/org/apache/activemq/web/AjaxTest.java
index f3f88d8d2d..c0b77c0896 100644
--- a/activemq-web-demo/src/test/java/org/apache/activemq/web/AjaxTest.java
+++ b/activemq-web-demo/src/test/java/org/apache/activemq/web/AjaxTest.java
@@ -19,8 +19,8 @@ package org.apache.activemq.web;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import java.io.ByteArrayInputStream;
import java.net.SocketTimeoutException;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -34,10 +34,10 @@ import org.apache.activemq.transport.stomp.Stomp;
import org.apache.activemq.transport.stomp.StompConnection;
import org.apache.activemq.transport.stomp.StompFrame;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
-import org.eclipse.jetty.client.util.InputStreamContentProvider;
+import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.BufferingResponseListener;
+import org.eclipse.jetty.client.BytesRequestContent;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpMethod;
import org.junit.Test;
@@ -422,9 +422,9 @@ public class AjaxTest extends JettyTestSupport {
final StringBuffer buf = new StringBuffer();
httpClient
.newRequest("http://localhost:" + port + "/amq")
- .header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
- .content(
- new InputStreamContentProvider(new ByteArrayInputStream(content)))
+ .headers(headers -> headers
+ .put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"))
+ .body(new BytesRequestContent(content))
.method(HttpMethod.POST).send(new BufferingResponseListener() {
@Override
public void onComplete(Result result) {
@@ -445,24 +445,28 @@ public class AjaxTest extends JettyTestSupport {
final StringBuffer sessionId = new StringBuffer();
Request request = httpClient.newRequest("http://localhost:" + port + "/amq");
if (selector != null) {
- request.header("selector", selector);
+ request.headers(headers -> headers
+ .put("selector", selector));
}
if (session != null) {
- request.header(HttpHeader.COOKIE, session);
+ request.headers(headers -> headers
+ .put(HttpHeader.COOKIE, session));
}
- request.header("Content-Type","application/x-www-form-urlencoded; charset=UTF-8")
- .content(new InputStreamContentProvider(new ByteArrayInputStream(content.getBytes())))
- .method(HttpMethod.POST).send(new BufferingResponseListener() {
- @Override
- public void onComplete(Result result) {
- buf.append(getContentAsString());
- String cookie = result.getResponse().getHeaders().get(HttpHeader.SET_COOKIE);
- if (cookie != null) {
- String[] cookieParts = cookie.split(";");
- sessionId.append(cookieParts[0]);
+ request
+ .headers(headers -> headers
+ .put("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"))
+ .body(new BytesRequestContent(content.getBytes(StandardCharsets.UTF_8)))
+ .method(HttpMethod.POST).send(new BufferingResponseListener() {
+ @Override
+ public void onComplete(Result result) {
+ buf.append(getContentAsString());
+ String cookie = result.getResponse().getHeaders().get(HttpHeader.SET_COOKIE);
+ if (cookie != null) {
+ String[] cookieParts = cookie.split(";");
+ sessionId.append(cookieParts[0]);
+ }
+ latch.countDown();
}
- latch.countDown();
- }
});
latch.await();
@@ -474,7 +478,8 @@ public class AjaxTest extends JettyTestSupport {
final CountDownLatch latch = new CountDownLatch(1);
Request request = httpClient.newRequest(url);
if (sessionId != null) {
- request.header(HttpHeader.COOKIE, sessionId);
+ request.headers(headers -> headers
+ .put(HttpHeader.COOKIE, sessionId));
}
request.send(new BufferingResponseListener() {
@Override
diff --git a/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyServer.java b/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyServer.java
index 8069954adc..eb5602eb04 100644
--- a/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyServer.java
+++ b/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyServer.java
@@ -22,7 +22,8 @@ import org.apache.activemq.demo.DefaultQueueSender;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.util.resource.ResourceFactory;
+import org.eclipse.jetty.ee9.webapp.WebAppContext;
/**
* A simple bootstrap class for starting Jetty in your IDE using the local web
@@ -66,8 +67,9 @@ public final class JettyServer {
ServerConnector connector = new ServerConnector(server);
connector.setPort(port);
WebAppContext context = new WebAppContext();
+ ResourceFactory resourceFactory = ResourceFactory.of(context);
- context.setResourceBase(WEBAPP_DIR);
+ context.setBaseResource(resourceFactory.newResource(WEBAPP_DIR));
context.setContextPath(WEBAPP_CTX);
context.setServer(server);
server.setHandler(context);
diff --git a/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java b/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java
index 59e957b595..7fd016d15e 100644
--- a/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java
+++ b/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java
@@ -36,7 +36,8 @@ import org.apache.activemq.util.Wait;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.util.resource.ResourceFactory;
+import org.eclipse.jetty.ee9.webapp.WebAppContext;
import org.junit.After;
import org.junit.Before;
import org.slf4j.Logger;
@@ -77,8 +78,9 @@ public class JettyTestSupport {
ServerConnector connector = new ServerConnector(server);
connector.setPort(port);
WebAppContext context = new WebAppContext();
+ ResourceFactory resourceFactory = ResourceFactory.of(context);
- context.setResourceBase("src/main/webapp");
+ context.setBaseResource(resourceFactory.newResource("src/main/webapp"));
context.setContextPath("/");
context.setServer(server);
server.setHandler(context);
diff --git a/activemq-web-demo/src/test/java/org/apache/activemq/web/RestPersistentTest.java b/activemq-web-demo/src/test/java/org/apache/activemq/web/RestPersistentTest.java
index 61345eaa80..87382c55c2 100644
--- a/activemq-web-demo/src/test/java/org/apache/activemq/web/RestPersistentTest.java
+++ b/activemq-web-demo/src/test/java/org/apache/activemq/web/RestPersistentTest.java
@@ -25,10 +25,11 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
-import org.eclipse.jetty.client.util.InputStreamContentProvider;
+import org.eclipse.jetty.client.InputStreamRequestContent;
+import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.BufferingResponseListener;
+import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
import org.junit.Ignore;
@@ -79,9 +80,12 @@ public class RestPersistentTest extends JettyTestSupport {
final CountDownLatch latch = new CountDownLatch(1);
final StringBuffer buf = new StringBuffer();
final AtomicInteger status = new AtomicInteger();
+
+
httpClient.newRequest(url+"&"+properties)
- .header("Content-Type","text/xml")
- .content(new InputStreamContentProvider(new ByteArrayInputStream(message.getBytes("UTF-8"))))
+ .headers(headers -> headers
+ .put(HttpHeader.CONTENT_TYPE,"text/xml"))
+ .body(new InputStreamRequestContent(new ByteArrayInputStream(message.getBytes("UTF-8"))))
.method(HttpMethod.POST).send(new BufferingResponseListener() {
@Override
public void onComplete(Result result) {
@@ -101,13 +105,15 @@ public class RestPersistentTest extends JettyTestSupport {
final CountDownLatch latch = new CountDownLatch(1);
final StringBuffer buf = new StringBuffer();
final AtomicInteger status = new AtomicInteger();
+
Request request = httpClient.newRequest(url)
- .header("accept", "text/xml")
- .header("Content-Type","text/xml");
+ .headers(headers -> headers
+ .put("accept", "text/xml")
+ .put("Content-Type","text/xml"));
- if(selector!=null)
- {
- request.header("selector", selector);
+ if(selector != null) {
+ request.headers(headers -> headers
+ .put("selector", selector));
}
request.method(HttpMethod.GET).send(new BufferingResponseListener() {
diff --git a/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java b/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java
index 1c94219712..cfb7ca0312 100644
--- a/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java
+++ b/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java
@@ -34,8 +34,8 @@ import jakarta.jms.TextMessage;
import javax.management.ObjectName;
import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.BufferingResponseListener;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
@@ -149,24 +149,26 @@ public class RestTest extends JettyTestSupport {
producer.send(msg2);
LOG.info("message 2 sent");
- HttpClient httpClient = new HttpClient();
- httpClient.start();
-
final StringBuffer buf = new StringBuffer();
final CountDownLatch latch = new CountDownLatch(1);
- httpClient.newRequest("http://localhost:" + port + "/message/test?readTimeout=1000&type=queue")
- .header("selector", "test=2").send(new BufferingResponseListener() {
- @Override
- public void onComplete(Result result) {
- buf.append(getContentAsString());
- latch.countDown();
- }
- });
- latch.await();
+
+ try(HttpClient httpClient = new HttpClient()) {
+ httpClient.start();
+ httpClient.newRequest("http://localhost:" + port + "/message/test?readTimeout=1000&type=queue")
+ .headers(headers -> headers
+ .put("selector", "test=2"))
+ .send(new BufferingResponseListener() {
+ @Override
+ public void onComplete(Result result) {
+ buf.append(getContentAsString());
+ latch.countDown();
+ }
+ });
+ latch.await();
+ }
assertEquals("test2", buf.toString());
}
-
// test for https://issues.apache.org/activemq/browse/AMQ-2827
@Test(timeout = 15 * 1000)
public void testCorrelation() throws Exception {
@@ -270,23 +272,25 @@ public class RestTest extends JettyTestSupport {
public void testProperties() throws Exception {
int port = getPort();
- HttpClient httpClient = new HttpClient();
- httpClient.start();
-
final CountDownLatch latch = new CountDownLatch(1);
final StringBuffer buf = new StringBuffer();
final AtomicInteger status = new AtomicInteger();
- httpClient.newRequest("http://localhost:" + port + "/message/testPost?type=queue&property=value")
- .method(HttpMethod.POST).send(new BufferingResponseListener() {
- @Override
- public void onComplete(Result result) {
- status.getAndSet(result.getResponse().getStatus());
- buf.append(getContentAsString());
- latch.countDown();
- }
- });
- latch.await();
+ try(HttpClient httpClient = new HttpClient()) {
+ httpClient.start();
+
+ httpClient.newRequest("http://localhost:" + port + "/message/testPost?type=queue&property=value")
+ .method(HttpMethod.POST).send(new BufferingResponseListener() {
+ @Override
+ public void onComplete(Result result) {
+ status.getAndSet(result.getResponse().getStatus());
+ buf.append(getContentAsString());
+ latch.countDown();
+ }
+ });
+ latch.await();
+ }
+
assertTrue("success status", HttpStatus.isSuccess(status.get()));
final CountDownLatch latch2 = new CountDownLatch(1);
@@ -294,16 +298,19 @@ public class RestTest extends JettyTestSupport {
final AtomicInteger status2 = new AtomicInteger();
final HttpFields.Mutable responseFields = HttpFields.build();
- httpClient.newRequest("http://localhost:" + port + "/message/testPost?readTimeout=1000&type=Queue")
- .method(HttpMethod.GET).send(new BufferingResponseListener() {
- @Override
- public void onComplete(Result result) {
- responseFields.add(result.getResponse().getHeaders());
- status2.getAndSet(result.getResponse().getStatus());
- buf2.append(getContentAsString());
- latch2.countDown();
- }
- });
+ try(HttpClient httpClient = new HttpClient()) {
+ httpClient.start();
+ httpClient.newRequest("http://localhost:" + port + "/message/testPost?readTimeout=1000&type=Queue")
+ .method(HttpMethod.GET).send(new BufferingResponseListener() {
+ @Override
+ public void onComplete(Result result) {
+ responseFields.add(result.getResponse().getHeaders());
+ status2.getAndSet(result.getResponse().getStatus());
+ buf2.append(getContentAsString());
+ latch2.countDown();
+ }
+ });
+ }
latch2.await();
assertTrue("success status", HttpStatus.isSuccess(status2.get()));
@@ -318,25 +325,25 @@ public class RestTest extends JettyTestSupport {
public void testAuth() throws Exception {
int port = getPort();
- HttpClient httpClient = new HttpClient();
- httpClient.start();
-
final CountDownLatch latch = new CountDownLatch(1);
final StringBuffer buf = new StringBuffer();
final AtomicInteger status = new AtomicInteger();
- httpClient.newRequest("http://localhost:" + port + "/message/testPost?type=queue")
- .header("Authorization", "Basic YWRtaW46YWRtaW4=")
- .method(HttpMethod.POST).send(new BufferingResponseListener() {
- @Override
- public void onComplete(Result result) {
- status.getAndSet(result.getResponse().getStatus());
- buf.append(getContentAsString());
- latch.countDown();
- }
- });
-
- latch.await();
+ try(HttpClient httpClient = new HttpClient()) {
+ httpClient.start();
+ httpClient.newRequest("http://localhost:" + port + "/message/testPost?type=queue")
+ .headers(headers -> headers
+ .put("Authorization", "Basic YWRtaW46YWRtaW4="))
+ .method(HttpMethod.POST).send(new BufferingResponseListener() {
+ @Override
+ public void onComplete(Result result) {
+ status.getAndSet(result.getResponse().getStatus());
+ buf.append(getContentAsString());
+ latch.countDown();
+ }
+ });
+ latch.await();
+ }
assertTrue("success status", HttpStatus.isSuccess(status.get()));
}
diff --git a/activemq-web/pom.xml b/activemq-web/pom.xml
index 11f556b220..4f67b91687 100644
--- a/activemq-web/pom.xml
+++ b/activemq-web/pom.xml
@@ -79,12 +79,12 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-webapp</artifactId>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-jetty-server</artifactId>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jetty-server</artifactId>
</dependency>
<!-- Just used for testing -->
diff --git a/activemq-web/src/main/java/org/apache/activemq/web/config/JspConfigurer.java b/activemq-web/src/main/java/org/apache/activemq/web/config/JspConfigurer.java
index aecff8d59d..6fe6d53779 100644
--- a/activemq-web/src/main/java/org/apache/activemq/web/config/JspConfigurer.java
+++ b/activemq-web/src/main/java/org/apache/activemq/web/config/JspConfigurer.java
@@ -18,9 +18,8 @@ package org.apache.activemq.web.config;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.handler.HandlerCollection;
-import org.eclipse.jetty.webapp.Configuration;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.server.Handler.Sequence;
+import org.eclipse.jetty.ee9.webapp.WebAppContext;
/**
*
@@ -28,7 +27,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
*/
public class JspConfigurer {
- public static void configureJetty(Server server, HandlerCollection collection) {
+ public static void configureJetty(Server server, Sequence sequence) {
// Configuration.ClassList classlist = Configuration.ClassList
// .setServerDefault( server );
// classlist.addBefore(
@@ -39,7 +38,7 @@ public class JspConfigurer {
// container-path jars for tlds, web-fragments etc.
// If you omit the jar that contains the jstl .tlds, the jsp engine will
// scan for them instead.
- for (Handler handler: collection.getHandlers()) {
+ for (Handler handler: sequence.getHandlers()) {
if (handler instanceof WebAppContext){
((WebAppContext) handler).setAttribute(
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 424f0cccc2..135989e405 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -371,20 +371,45 @@
<optional>false</optional>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-oxm</artifactId>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-oxm</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-webapp</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-nested</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-security</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-servlet</artifactId>
+ </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-annotations</artifactId>
+ <artifactId>jetty-ee</artifactId>
+ <version>${jetty-version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-jaas</artifactId>
+ <artifactId>jetty-security</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-session</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
@@ -402,6 +427,56 @@
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-rewrite</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-core-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-core-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-core-server</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-jetty-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.websocket</groupId>
+ <artifactId>jetty-websocket-jetty-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jakarta-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jetty-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jetty-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-jetty-server</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9.websocket</groupId>
+ <artifactId>jetty-ee9-websocket-servlet</artifactId>
+ </dependency>
+<!--
+o 'org.eclipse.jetty.websocket:websocket-core-common'
+o 'org.eclipse.jetty.websocket:websocket-core-server'
+o 'org.eclipse.jetty.websocket:websocket-jetty-api'
+o 'org.eclipse.jetty.websocket:websocket-jetty-common'
+o 'org.eclipse.jetty.websocket:websocket-jetty-server'
+o 'org.eclipse.jetty.websocket:websocket-servlet'
+o 'org.eclipse.jetty.orbit:javax.security.auth.message'
+o 'org.eclipse.jetty:apache-jsp'
+-->
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
@@ -446,8 +521,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>apache-jsp</artifactId>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-apache-jsp</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
diff --git a/assembly/src/main/descriptors/common-bin.xml b/assembly/src/main/descriptors/common-bin.xml
index 833e3f7dc6..00dec896b0 100644
--- a/assembly/src/main/descriptors/common-bin.xml
+++ b/assembly/src/main/descriptors/common-bin.xml
@@ -257,34 +257,42 @@
<dependencySet>
<outputDirectory>lib/web</outputDirectory>
<unpack>false</unpack>
- <scope>runtime</scope>
+ <!-- scope>runtime</scope -->
<includes>
<include>org.springframework:spring-web</include>
<include>org.springframework:spring-webmvc</include>
- <include>org.eclipse.jetty:jetty-annotations</include>
+ <include>org.eclipse.jetty:jetty-ee</include>
<include>org.eclipse.jetty:jetty-server</include>
+ <include>org.eclipse.jetty:jetty-session</include>
<include>org.eclipse.jetty:jetty-xml</include>
- <include>org.eclipse.jetty:jetty-webapp</include>
<include>org.eclipse.jetty:jetty-util</include>
<include>org.eclipse.jetty:jetty-http</include>
<include>org.eclipse.jetty:jetty-io</include>
- <include>org.eclipse.jetty:jetty-jaas</include>
<include>org.eclipse.jetty:jetty-jndi</include>
<include>org.eclipse.jetty:jetty-plus</include>
- <include>org.eclipse.jetty:jetty-servlet</include>
<include>org.eclipse.jetty:jetty-security</include>
<include>org.eclipse.jetty:jetty-rewrite</include>
+ <include>org.eclipse.jetty.ee9:jetty-ee9-nested</include>
+ <include>org.eclipse.jetty.ee9:jetty-ee9-security</include>
+ <include>org.eclipse.jetty.ee9:jetty-ee9-servlet</include>
+ <include>org.eclipse.jetty.ee9:jetty-ee9-webapp</include>
+ <include>org.eclipse.jetty.ee9:jetty-ee9-apache-jsp</include>
<include>org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api</include>
- <include>org.eclipse.jetty.websocket:websocket-core-common</include>
- <include>org.eclipse.jetty.websocket:websocket-core-server</include>
- <include>org.eclipse.jetty.websocket:websocket-jetty-api</include>
+ <include>org.eclipse.jetty.websocket:jetty-websocket-core-client</include>
+ <include>org.eclipse.jetty.websocket:jetty-websocket-core-common</include>
+ <include>org.eclipse.jetty.websocket:jetty-websocket-core-server</include>
+ <include>org.eclipse.jetty.websocket:jetty-websocket-jetty-client</include>
+ <include>org.eclipse.jetty.websocket:jetty-websocket-jetty-api</include>
<include>org.eclipse.jetty.websocket:websocket-jetty-common</include>
<include>org.eclipse.jetty.websocket:websocket-jetty-server</include>
- <include>org.eclipse.jetty.websocket:websocket-servlet</include>
<include>org.eclipse.jetty.orbit:javax.security.auth.message</include>
+ <include>org.eclipse.jetty.ee9.websocket:jetty-ee9-websocket-jakarta-client</include>
+ <include>org.eclipse.jetty.ee9.websocket:jetty-ee9-websocket-jetty-api</include>
+ <include>org.eclipse.jetty.ee9.websocket:jetty-ee9-websocket-jetty-common</include>
+ <include>org.eclipse.jetty.ee9.websocket:jetty-ee9-websocket-jetty-server</include>
+ <include>org.eclipse.jetty.ee9.websocket:jetty-ee9-websocket-servlet</include>
<!-- include>jakarta.servlet:jakarta.servlet-api</include -->
<include>jakarta.websocket:jakarta.websocket-api</include>
-
<!-- JSP support -->
<!-- Jetty JSP api-->
<include>org.eclipse.jetty:apache-jsp</include>
diff --git a/assembly/src/release/conf/jetty.xml b/assembly/src/release/conf/jetty.xml
index fdc922c688..e53489ef94 100644
--- a/assembly/src/release/conf/jetty.xml
+++ b/assembly/src/release/conf/jetty.xml
@@ -11,8 +11,7 @@
implied. See the License for the specific language governing permissions and
limitations under the License.
-->
- <!--
- An embedded servlet engine for serving up the Admin consoles, REST and Ajax APIs and
+ <!-- An embedded servlet engine for serving up the Admin consoles, REST and Ajax APIs and
some demos Include this file in your configuration to enable ActiveMQ web components
e.g. <import resource="jetty.xml"/>
-->
@@ -50,7 +49,7 @@
-->
</bean>
- <bean id="jaasLoginService" class="org.eclipse.jetty.jaas.JAASLoginService">
+ <bean id="jaasLoginService" class="org.eclipse.jetty.security.jaas.JAASLoginService">
<property name="name" value="ActiveMQRealm"/>
<property name="loginModuleName" value="activemq"/>
<property name="roleClassNames">
@@ -62,13 +61,13 @@
<bean id="identityService" class="org.eclipse.jetty.security.DefaultIdentityService"/>
- <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
+ <bean id="securityConstraint" class="org.eclipse.jetty.ee9.nested.ServletConstraint">
<property name="name" value="BASIC" />
<property name="roles" value="users,admins" />
<!-- set authenticate=false to disable login -->
<property name="authenticate" value="true" />
</bean>
- <bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
+ <bean id="adminSecurityConstraint" class="org.eclipse.jetty.ee9.nested.ServletConstraint">
<property name="name" value="BASIC" />
<property name="roles" value="admins" />
<!-- set authenticate=false to disable login -->
@@ -78,7 +77,7 @@
Catch-all mapping: any request not matched by a more specific
constraint below requires authentication as a user or admin.
-->
- <bean id="securityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
+ <bean id="securityConstraintMapping" class="org.eclipse.jetty.ee9.security.ConstraintMapping">
<property name="constraint" ref="securityConstraint" />
<property name="pathSpec" value="/" />
</bean>
@@ -87,7 +86,7 @@
the full console UI, not just the *.action endpoints, so read-only
pages (queue listings, message browsing, etc.) also require admin.
-->
- <bean id="adminSecurityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
+ <bean id="adminSecurityConstraintMapping" class="org.eclipse.jetty.ee9.security.ConstraintMapping">
<property name="constraint" ref="adminSecurityConstraint" />
<property name="pathSpec" value="/admin/*" />
</bean>
@@ -95,33 +94,33 @@
Jolokia JMX bridge exposes broker management operations over HTTP;
restrict to the admins role to prevent privilege escalation via JMX.
-->
- <bean id="jolokiaSecurityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping">
+ <bean id="jolokiaSecurityConstraintMapping" class="org.eclipse.jetty.ee9.security.ConstraintMapping">
<property name="constraint" ref="adminSecurityConstraint" />
<property name="pathSpec" value="/api/jolokia/*" />
</bean>
-
+
<bean id="rewriteHandler" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<property name="rules">
<list>
<bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<property name="pattern" value="*"/>
- <property name="name" value="X-FRAME-OPTIONS"/>
- <property name="value" value="SAMEORIGIN"/>
+ <property name="headerName" value="X-FRAME-OPTIONS"/>
+ <property name="headerValue" value="SAMEORIGIN"/>
</bean>
<bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<property name="pattern" value="*"/>
- <property name="name" value="X-XSS-Protection"/>
- <property name="value" value="1; mode=block"/>
+ <property name="headerName" value="X-XSS-Protection"/>
+ <property name="headerValue" value="1; mode=block"/>
</bean>
<bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<property name="pattern" value="*"/>
- <property name="name" value="X-Content-Type-Options"/>
- <property name="value" value="nosniff"/>
+ <property name="headerName" value="X-Content-Type-Options"/>
+ <property name="headerValue" value="nosniff"/>
</bean>
<bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<property name="pattern" value="*"/>
- <property name="name" value="Cache-Control"/>
- <property name="value" value="no-store"/>
+ <property name="headerName" value="Cache-Control"/>
+ <property name="headerValue" value="no-store"/>
</bean>
<bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<property name="pattern" value="*"/>
@@ -165,37 +164,37 @@
</list>
</property>
</bean>
-
- <bean id="secHandlerCollection" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <property name="handlers">
+
+ <bean id="secHandlerCollection" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
+ <constructor-arg>
<list>
<ref bean="rewriteHandler"/>
- <bean class="org.eclipse.jetty.webapp.WebAppContext">
+ <bean class="org.eclipse.jetty.ee9.webapp.WebAppContext">
<property name="contextPath" value="/admin" />
<property name="resourceBase" value="${activemq.home}/webapps/admin" />
<property name="logUrlOnStart" value="true" />
</bean>
- <bean class="org.eclipse.jetty.webapp.WebAppContext">
+ <bean class="org.eclipse.jetty.ee9.webapp.WebAppContext">
<property name="contextPath" value="/api" />
<property name="resourceBase" value="${activemq.home}/webapps/api" />
<property name="logUrlOnStart" value="true" />
</bean>
<bean class="org.eclipse.jetty.server.handler.ResourceHandler">
- <property name="directoriesListed" value="false" />
+ <property name="dirAllowed" value="false" />
<property name="welcomeFiles">
<list>
<value>index.html</value>
</list>
</property>
- <property name="resourceBase" value="${activemq.home}/webapps/" />
+ <property name="baseResourceAsString" value="${activemq.home}/webapps/" />
</bean>
<bean id="defaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler">
- <property name="serveIcon" value="false" />
+ <property name="serveFavIcon" value="false" />
</bean>
</list>
- </property>
+ </constructor-arg>
</bean>
- <bean id="securityHandler" class="org.eclipse.jetty.security.ConstraintSecurityHandler">
+ <bean id="securityHandler" class="org.eclipse.jetty.ee9.security.ConstraintSecurityHandler">
<property name="identityService" ref="identityService" />
<property name="loginService" ref="jaasLoginService" />
<property name="authenticator">
@@ -220,7 +219,7 @@
<property name="port" value="8161"/>
</bean>
- <bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
+ <bean id="handlers" class="org.eclipse.jetty.server.Handler$Sequence">
<property name="handlers">
<list>
<ref bean="contexts" />
@@ -355,7 +354,7 @@
</list>
</property>
</bean>
-
+
<bean id="invokeStart" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
depends-on="broker, configureJetty, invokeConnectors, inetAccessIncludeLoopbackV6">
<property name="targetObject" ref="Server" />
diff --git a/pom.xml b/pom.xml
index a00e607232..56414e2d6d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,8 +71,8 @@
<jakarta-jms-api-version>3.1.0</jakarta-jms-api-version>
<jasypt-version>1.9.3</jasypt-version>
<jaxb-version>4.0.9</jaxb-version>
- <jetty-version>11.0.26</jetty-version>
- <jetty-version-range>[11,13)</jetty-version-range>
+ <jetty-version>12.0.21</jetty-version>
+ <jetty-version-range>[12,13)</jetty-version-range>
<jmdns-version>3.6.3</jmdns-version>
<javassist-version>3.32.0-GA</javassist-version>
<jettison-version>1.5.6</jettison-version>
@@ -830,6 +830,14 @@
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.ee9</groupId>
+ <artifactId>jetty-ee9-bom</artifactId>
+ <version>${jetty-version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@activemq.apache.org
For additional commands, e-mail: commits-help@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact