diff --git a/activemq-amqp/pom.xml b/activemq-amqp/pom.xml
index 4a181a35ae2..5a982d80b0b 100644
--- a/activemq-amqp/pom.xml
+++ b/activemq-amqp/pom.xml
@@ -114,7 +114,7 @@
org.eclipse.jetty.websocket
- websocket-jetty-server
+ jetty-websocket-jetty-server
test
diff --git a/activemq-http/pom.xml b/activemq-http/pom.xml
index 8f1e978b4bc..7a1c6adb3dd 100644
--- a/activemq-http/pom.xml
+++ b/activemq-http/pom.xml
@@ -65,8 +65,8 @@
jetty-xml
- org.eclipse.jetty
- jetty-webapp
+ org.eclipse.jetty.ee9
+ jetty-ee9-webapp
org.apache.httpcomponents
@@ -121,13 +121,31 @@
org.eclipse.jetty.websocket
- websocket-jetty-client
+ jetty-websocket-core-client
provided
true
+
+ org.eclipse.jetty.websocket
+ jetty-websocket-jetty-client
+ provided
+ true
+
org.eclipse.jetty.websocket
- websocket-jetty-server
+ jetty-websocket-jetty-api
+ provided
+ true
+
+
+ org.eclipse.jetty.ee9.websocket
+ jetty-ee9-websocket-jakarta-client
+ provided
+ true
+
+
+ org.eclipse.jetty.ee9.websocket
+ jetty-ee9-websocket-jetty-server
provided
true
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 3cfeda36acb..8ba1c5703e6 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.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 @@ private void setConnectorProperty(String name, Class type, T value) throw
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 @@ public URI bind() throws Exception {
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 786e3aac8d9..0c996292cf6 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 @@
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 5b21f0a9cce..4b354ceb76e 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.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 @@ private int getConnectorLocalPort() throws Exception {
}
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 8c0fccb1cc8..f052b7d966b 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 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 void onWebSocketClose(int statusCode, String reason) {
}
@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 a8242d4eddd..dde57bbaf36 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.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 void onWebSocketConnect(Session session) {
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 75cf1fd56cc..4c7357a711b 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.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 @@ protected void doStart() throws Exception {
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 @@ protected void doStart() throws Exception {
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 @@ protected void doStart() throws Exception {
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 853c201c346..6e14b9ec37e 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.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 5c718c8ab06..2a47a5156c2 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.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 607248e4dee..86183c8c4f4 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.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 0eb35f6cf59..b55d45bc485 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.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 e127d077d0c..845de35bdfb 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 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 @@
/**
* 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 void onWebSocketBinary(byte[] data, int offset, int length) {
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 void onWebSocketBinary(byte[] data, int offset, int length) {
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 void onWebSocketBinary(byte[] data, int offset, int length) {
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 @@ private void checkConnected() throws IOException {
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 46aa692b6a4..2afddf84fe2 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.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 671f77f64f8..41ebbe6a4cb 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.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;
@@ -85,7 +88,9 @@ public void setUp() throws Exception {
wsMQTTConnection = new MQTTWSConnection().setWritePartialFrames(partialFrames);
- wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ CompletableFuture 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");
}
@@ -110,7 +115,8 @@ public void testConnectCycles() throws Exception {
wsMQTTConnection = new MQTTWSConnection().setWritePartialFrames(partialFrames);
- wsClient.connect(wsMQTTConnection, wsConnectUri, request);
+ CompletableFuture 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 9f8d7abf406..a9998069e2c 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.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 76910dfee36..9f2aecfc84c 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 @@
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 void testStompSocketRemoteAddress() {
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 80a86c5d04b..b689cca453c 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 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 40e3290ac3f..9bc2f5431f2 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
@@ -29,7 +29,7 @@
import org.apache.activemq.transport.stomp.StompFrame;
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.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 9ea1cbbbfbb..6b89569ff32 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.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 c3f2599b1e7..aa766fd8040 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.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 cfc9c73e5a1..8553d555c21 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.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 void testMQTTNeedClientAuth() throws Exception {
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 5a5e6112989..90a5c850dde 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 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 1a65db43728..129ae77c8c3 100644
--- a/activemq-http/src/test/resources/spring-http.xml
+++ b/activemq-http/src/test/resources/spring-http.xml
@@ -44,7 +44,7 @@
-
+
diff --git a/activemq-web-console/pom.xml b/activemq-web-console/pom.xml
index 654f9af2f54..4670e53f969 100644
--- a/activemq-web-console/pom.xml
+++ b/activemq-web-console/pom.xml
@@ -248,6 +248,11 @@
+
+ org.eclipse.jetty.ee9
+ jetty-ee9-webapp
+ test
+
org.eclipse.jetty
jetty-server
@@ -330,8 +335,8 @@
- org.eclipse.jetty
- apache-jsp
+ org.eclipse.jetty.ee9
+ jetty-ee9-apache-jsp
provided
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 443f1022364..1f06c789adc 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 static void main(String[] args) throws Exception {
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 e9392161bd6..df4e53fa8c8 100644
--- a/activemq-web-demo/pom.xml
+++ b/activemq-web-demo/pom.xml
@@ -188,6 +188,11 @@
jetty-server
test
+
+ org.eclipse.jetty.ee9
+ jetty-ee9-webapp
+ test
+
org.eclipse.jetty
jetty-client
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 32bdca68153..dbd75416948 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 @@
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.StompFrame;
import org.apache.commons.lang3.StringUtils;
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 @@ protected void sendMessages(HttpClient httpClient, int port, byte[] content) thr
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 @@ protected String subscribe(HttpClient httpClient, int port, String content, Stri
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 @@ protected CountDownLatch asyncRequest(final HttpClient httpClient, final String
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 8069954adce..eb5602eb04b 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.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 static void main(String[] args) throws Exception {
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 59e957b5958..7fd016d15eb 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.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 void setUp() throws Exception {
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 61345eaa80c..87382c55c24 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.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 @@ private void postMessage(HttpClient httpClient, String url, String properties, S
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 @@ private void getMessage(HttpClient httpClient, String url, String selector, Stri
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 fe383d88d9c..fc57c1282dc 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
@@ -31,8 +31,8 @@
import org.apache.commons.lang3.RandomStringUtils;
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;
@@ -136,24 +136,26 @@ public void testSelector() throws Exception {
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 {
@@ -255,23 +257,25 @@ public void onComplete(Result result) {
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);
@@ -279,16 +283,19 @@ public void onComplete(Result result) {
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()));
@@ -303,25 +310,25 @@ public void onComplete(Result result) {
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 cec0c079d55..96a6090e0f2 100644
--- a/activemq-web/pom.xml
+++ b/activemq-web/pom.xml
@@ -83,12 +83,12 @@
provided
- org.eclipse.jetty
- jetty-webapp
+ org.eclipse.jetty.ee9
+ jetty-ee9-webapp
- org.eclipse.jetty.websocket
- websocket-jetty-server
+ org.eclipse.jetty.ee9.websocket
+ jetty-ee9-websocket-jetty-server
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 aecff8d59de..6fe6d53779d 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 @@
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 @@
*/
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 static void configureJetty(Server server, HandlerCollection collection) {
// 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 5d5e5a721ef..2ac5d49cc3f 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -379,13 +379,15 @@
jettison
- org.eclipse.jetty
- jetty-annotations
+ org.eclipse.jetty.ee9
+ jetty-ee9-annotations
+
org.eclipse.jetty
jetty-jndi
@@ -446,8 +448,8 @@
- org.eclipse.jetty
- apache-jsp
+ org.eclipse.jetty.ee9
+ jetty-ee9-apache-jsp
org.eclipse.jetty
diff --git a/assembly/src/release/conf/jetty.xml b/assembly/src/release/conf/jetty.xml
index e475e808107..f1b4d64bb4c 100644
--- a/assembly/src/release/conf/jetty.xml
+++ b/assembly/src/release/conf/jetty.xml
@@ -55,7 +55,7 @@
-
+
@@ -82,7 +82,7 @@
-
+
@@ -196,11 +196,11 @@
-
+
-
+
diff --git a/pom.xml b/pom.xml
index 91e11aeedd3..3324f40e1dc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,8 +70,8 @@
1.9.3
4.0.5
2.3.2_1
- 11.0.24
- [11,13)
+ 12.0.15
+ [12,13)
3.6.0
9.0.65
1.5.4
@@ -872,6 +872,14 @@
import
+
+ org.eclipse.jetty.ee9
+ jetty-ee9-bom
+ ${jetty-version}
+ pom
+ import
+
+
org.apache.httpcomponents
httpclient