Skip to content

Commit ed5d16d

Browse files
committed
Upgrade to Jetty 12
Closes gh-36073
1 parent 02fd570 commit ed5d16d

File tree

57 files changed

+376
-694
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+376
-694
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

+1-3
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,7 @@ dependencies {
161161
testImplementation("org.assertj:assertj-core")
162162
testImplementation("org.awaitility:awaitility")
163163
testImplementation("org.cache2k:cache2k-api")
164-
testImplementation("org.eclipse.jetty:jetty-webapp") {
165-
exclude group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api"
166-
}
164+
testImplementation("org.eclipse.jetty.ee10:jetty-ee10-webapp")
167165
testImplementation("org.glassfish.jersey.ext:jersey-spring6")
168166
testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson")
169167
testImplementation("org.hamcrest:hamcrest")

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/jetty/JettyMetricsAutoConfigurationTests.java

-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.springframework.boot.context.event.ApplicationStartedEvent;
3232
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
3333
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
34-
import org.springframework.boot.testsupport.web.servlet.Servlet5ClassPathOverrides;
3534
import org.springframework.boot.web.embedded.jetty.JettyReactiveWebServerFactory;
3635
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
3736
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
@@ -50,7 +49,6 @@
5049
* @author Andy Wilkinson
5150
* @author Chris Bono
5251
*/
53-
@Servlet5ClassPathOverrides
5452
class JettyMetricsAutoConfigurationTests {
5553

5654
@Test

spring-boot-project/spring-boot-autoconfigure/build.gradle

+3-13
Original file line numberDiff line numberDiff line change
@@ -78,20 +78,10 @@ dependencies {
7878
optional("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")
7979
optional("org.aspectj:aspectjweaver")
8080
optional("org.cache2k:cache2k-spring")
81-
optional("org.eclipse.jetty:jetty-webapp") {
82-
exclude(group: "org.eclipse.jetty", module: "jetty-jndi")
83-
exclude(group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api")
84-
}
81+
optional("org.eclipse.jetty.ee10:jetty-ee10-webapp")
8582
optional("org.eclipse.jetty:jetty-reactive-httpclient")
86-
optional("org.eclipse.jetty.websocket:websocket-jakarta-server") {
87-
exclude(group: "org.eclipse.jetty", module: "jetty-jndi")
88-
exclude(group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api")
89-
exclude(group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-websocket-api")
90-
}
91-
optional("org.eclipse.jetty.websocket:websocket-jetty-server") {
92-
exclude(group: "org.eclipse.jetty", module: "jetty-jndi")
93-
exclude(group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api")
94-
}
83+
optional("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server")
84+
optional("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server")
9585
optional("org.ehcache:ehcache") {
9686
artifact {
9787
classifier = 'jakarta'

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import io.undertow.Undertow;
2020
import org.apache.catalina.startup.Tomcat;
2121
import org.apache.coyote.UpgradeProtocol;
22+
import org.eclipse.jetty.ee10.webapp.WebAppContext;
2223
import org.eclipse.jetty.server.Server;
2324
import org.eclipse.jetty.util.Loader;
24-
import org.eclipse.jetty.webapp.WebAppContext;
2525
import org.xnio.SslClientAuthMode;
2626
import reactor.netty.http.server.HttpServer;
2727

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/JettyWebServerFactoryCustomizer.java

+16-13
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,16 @@
1818

1919
import java.time.Duration;
2020
import java.util.Arrays;
21+
import java.util.List;
2122

23+
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
2224
import org.eclipse.jetty.server.AbstractConnector;
2325
import org.eclipse.jetty.server.ConnectionFactory;
2426
import org.eclipse.jetty.server.CustomRequestLog;
2527
import org.eclipse.jetty.server.Handler;
2628
import org.eclipse.jetty.server.HttpConfiguration;
2729
import org.eclipse.jetty.server.RequestLogWriter;
2830
import org.eclipse.jetty.server.Server;
29-
import org.eclipse.jetty.server.handler.ContextHandler;
30-
import org.eclipse.jetty.server.handler.HandlerCollection;
31-
import org.eclipse.jetty.server.handler.HandlerWrapper;
3231

3332
import org.springframework.boot.autoconfigure.web.ServerProperties;
3433
import org.springframework.boot.cloud.CloudPlatform;
@@ -131,17 +130,21 @@ public void customize(Server server) {
131130
setHandlerMaxHttpFormPostSize(server.getHandlers());
132131
}
133132

134-
private void setHandlerMaxHttpFormPostSize(Handler... handlers) {
133+
private void setHandlerMaxHttpFormPostSize(List<Handler> handlers) {
135134
for (Handler handler : handlers) {
136-
if (handler instanceof ContextHandler contextHandler) {
137-
contextHandler.setMaxFormContentSize(maxHttpFormPostSize);
138-
}
139-
else if (handler instanceof HandlerWrapper wrapper) {
140-
setHandlerMaxHttpFormPostSize(wrapper.getHandler());
141-
}
142-
else if (handler instanceof HandlerCollection collection) {
143-
setHandlerMaxHttpFormPostSize(collection.getHandlers());
144-
}
135+
setHandlerMaxHttpFormPostSize(handler);
136+
}
137+
}
138+
139+
private void setHandlerMaxHttpFormPostSize(Handler handler) {
140+
if (handler instanceof ServletContextHandler contextHandler) {
141+
contextHandler.setMaxFormContentSize(maxHttpFormPostSize);
142+
}
143+
else if (handler instanceof Handler.Wrapper wrapper) {
144+
setHandlerMaxHttpFormPostSize(wrapper.getHandler());
145+
}
146+
else if (handler instanceof Handler.Collection collection) {
147+
setHandlerMaxHttpFormPostSize(collection.getHandlers());
145148
}
146149
}
147150

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/ReactiveWebServerFactoryConfiguration.java

+2-10
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.springframework.boot.autoconfigure.web.reactive;
1818

1919
import io.undertow.Undertow;
20-
import org.eclipse.jetty.servlet.ServletHolder;
20+
import org.eclipse.jetty.ee10.servlet.ServletHolder;
2121
import reactor.netty.http.server.HttpServer;
2222

2323
import org.springframework.beans.factory.ObjectProvider;
@@ -39,7 +39,6 @@
3939
import org.springframework.context.annotation.Bean;
4040
import org.springframework.context.annotation.Configuration;
4141
import org.springframework.context.annotation.Import;
42-
import org.springframework.http.client.reactive.JettyResourceFactory;
4342
import org.springframework.http.client.reactive.ReactorResourceFactory;
4443

4544
/**
@@ -97,17 +96,10 @@ TomcatReactiveWebServerFactory tomcatReactiveWebServerFactory(
9796
static class EmbeddedJetty {
9897

9998
@Bean
100-
@ConditionalOnMissingBean
101-
JettyResourceFactory jettyServerResourceFactory() {
102-
return new JettyResourceFactory();
103-
}
104-
105-
@Bean
106-
JettyReactiveWebServerFactory jettyReactiveWebServerFactory(JettyResourceFactory resourceFactory,
99+
JettyReactiveWebServerFactory jettyReactiveWebServerFactory(
107100
ObjectProvider<JettyServerCustomizer> serverCustomizers) {
108101
JettyReactiveWebServerFactory serverFactory = new JettyReactiveWebServerFactory();
109102
serverFactory.getServerCustomizers().addAll(serverCustomizers.orderedStream().toList());
110-
serverFactory.setResourceFactory(resourceFactory);
111103
return serverFactory;
112104
}
113105

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorAutoConfiguration.java

-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
@ConditionalOnClass(WebClient.class)
4747
@AutoConfigureAfter(SslAutoConfiguration.class)
4848
@Import({ ClientHttpConnectorFactoryConfiguration.ReactorNetty.class,
49-
ClientHttpConnectorFactoryConfiguration.JettyClient.class,
5049
ClientHttpConnectorFactoryConfiguration.HttpClient5.class,
5150
ClientHttpConnectorFactoryConfiguration.JdkClient.class })
5251
public class ClientHttpConnectorAutoConfiguration {

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfiguration.java

-19
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.springframework.context.annotation.Bean;
2828
import org.springframework.context.annotation.Configuration;
2929
import org.springframework.context.annotation.Import;
30-
import org.springframework.http.client.reactive.JettyResourceFactory;
3130
import org.springframework.http.client.reactive.ReactorResourceFactory;
3231

3332
/**
@@ -55,24 +54,6 @@ ReactorClientHttpConnectorFactory reactorClientHttpConnectorFactory(
5554

5655
}
5756

58-
@Configuration(proxyBeanMethods = false)
59-
@ConditionalOnClass(org.eclipse.jetty.reactive.client.ReactiveRequest.class)
60-
@ConditionalOnMissingBean(ClientHttpConnectorFactory.class)
61-
static class JettyClient {
62-
63-
@Bean
64-
@ConditionalOnMissingBean
65-
JettyResourceFactory jettyClientResourceFactory() {
66-
return new JettyResourceFactory();
67-
}
68-
69-
@Bean
70-
JettyClientHttpConnectorFactory jettyClientHttpConnectorFactory(JettyResourceFactory jettyResourceFactory) {
71-
return new JettyClientHttpConnectorFactory(jettyResourceFactory);
72-
}
73-
74-
}
75-
7657
@Configuration(proxyBeanMethods = false)
7758
@ConditionalOnClass({ HttpAsyncClients.class, AsyncRequestProducer.class, ReactiveResponseConsumer.class })
7859
@ConditionalOnMissingBean(ClientHttpConnectorFactory.class)

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/function/client/JettyClientHttpConnectorFactory.java

-64
This file was deleted.

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
import jakarta.servlet.Servlet;
2121
import org.apache.catalina.startup.Tomcat;
2222
import org.apache.coyote.UpgradeProtocol;
23+
import org.eclipse.jetty.ee10.webapp.WebAppContext;
2324
import org.eclipse.jetty.server.Server;
2425
import org.eclipse.jetty.util.Loader;
25-
import org.eclipse.jetty.webapp.WebAppContext;
2626
import org.xnio.SslClientAuthMode;
2727

2828
import org.springframework.beans.factory.ObjectProvider;

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/websocket/reactive/JettyWebSocketReactiveWebServerCustomizer.java

+9-11
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717
package org.springframework.boot.autoconfigure.websocket.reactive;
1818

1919
import jakarta.servlet.ServletContext;
20+
import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
21+
import org.eclipse.jetty.ee10.websocket.jakarta.server.JakartaWebSocketServerContainer;
22+
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServerContainer;
23+
import org.eclipse.jetty.ee10.websocket.servlet.WebSocketUpgradeFilter;
2024
import org.eclipse.jetty.server.Handler;
21-
import org.eclipse.jetty.server.handler.HandlerCollection;
22-
import org.eclipse.jetty.server.handler.HandlerWrapper;
23-
import org.eclipse.jetty.servlet.ServletContextHandler;
2425
import org.eclipse.jetty.websocket.core.server.WebSocketMappings;
2526
import org.eclipse.jetty.websocket.core.server.WebSocketServerComponents;
26-
import org.eclipse.jetty.websocket.jakarta.server.internal.JakartaWebSocketServerContainer;
27-
import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
28-
import org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter;
2927

3028
import org.springframework.boot.web.embedded.jetty.JettyReactiveWebServerFactory;
3129
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
@@ -47,13 +45,13 @@ public void customize(JettyReactiveWebServerFactory factory) {
4745
if (servletContextHandler != null) {
4846
ServletContext servletContext = servletContextHandler.getServletContext();
4947
if (JettyWebSocketServerContainer.getContainer(servletContext) == null) {
50-
WebSocketServerComponents.ensureWebSocketComponents(server, servletContext);
48+
WebSocketServerComponents.ensureWebSocketComponents(server, servletContextHandler);
5149
JettyWebSocketServerContainer.ensureContainer(servletContext);
5250
}
5351
if (JakartaWebSocketServerContainer.getContainer(servletContext) == null) {
54-
WebSocketServerComponents.ensureWebSocketComponents(server, servletContext);
52+
WebSocketServerComponents.ensureWebSocketComponents(server, servletContextHandler);
5553
WebSocketUpgradeFilter.ensureFilter(servletContext);
56-
WebSocketMappings.ensureMappings(servletContext);
54+
WebSocketMappings.ensureMappings(servletContextHandler);
5755
JakartaWebSocketServerContainer.ensureContainer(servletContext);
5856
}
5957
}
@@ -64,10 +62,10 @@ private ServletContextHandler findServletContextHandler(Handler handler) {
6462
if (handler instanceof ServletContextHandler servletContextHandler) {
6563
return servletContextHandler;
6664
}
67-
if (handler instanceof HandlerWrapper handlerWrapper) {
65+
if (handler instanceof Handler.Wrapper handlerWrapper) {
6866
return findServletContextHandler(handlerWrapper.getHandler());
6967
}
70-
if (handler instanceof HandlerCollection handlerCollection) {
68+
if (handler instanceof Handler.Collection handlerCollection) {
7169
for (Handler contained : handlerCollection.getHandlers()) {
7270
ServletContextHandler servletContextHandler = findServletContextHandler(contained);
7371
if (servletContextHandler != null) {

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/websocket/reactive/WebSocketReactiveAutoConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import jakarta.websocket.server.ServerContainer;
2121
import org.apache.catalina.startup.Tomcat;
2222
import org.apache.tomcat.websocket.server.WsSci;
23-
import org.eclipse.jetty.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
23+
import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
2424

2525
import org.springframework.boot.autoconfigure.AutoConfiguration;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/websocket/servlet/JettyWebSocketServletWebServerCustomizer.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2021 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,13 +16,13 @@
1616

1717
package org.springframework.boot.autoconfigure.websocket.servlet;
1818

19-
import org.eclipse.jetty.webapp.AbstractConfiguration;
20-
import org.eclipse.jetty.webapp.WebAppContext;
19+
import org.eclipse.jetty.ee10.webapp.AbstractConfiguration;
20+
import org.eclipse.jetty.ee10.webapp.WebAppContext;
21+
import org.eclipse.jetty.ee10.websocket.jakarta.server.JakartaWebSocketServerContainer;
22+
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServerContainer;
23+
import org.eclipse.jetty.ee10.websocket.servlet.WebSocketUpgradeFilter;
2124
import org.eclipse.jetty.websocket.core.server.WebSocketMappings;
2225
import org.eclipse.jetty.websocket.core.server.WebSocketServerComponents;
23-
import org.eclipse.jetty.websocket.jakarta.server.internal.JakartaWebSocketServerContainer;
24-
import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
25-
import org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter;
2626

2727
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
2828
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
@@ -41,20 +41,20 @@ public class JettyWebSocketServletWebServerCustomizer
4141

4242
@Override
4343
public void customize(JettyServletWebServerFactory factory) {
44-
factory.addConfigurations(new AbstractConfiguration() {
44+
factory.addConfigurations(new AbstractConfiguration(new AbstractConfiguration.Builder()) {
4545

4646
@Override
4747
public void configure(WebAppContext context) throws Exception {
4848
if (JettyWebSocketServerContainer.getContainer(context.getServletContext()) == null) {
4949
WebSocketServerComponents.ensureWebSocketComponents(context.getServer(),
50-
context.getServletContext());
50+
context.getContext().getContextHandler());
5151
JettyWebSocketServerContainer.ensureContainer(context.getServletContext());
5252
}
5353
if (JakartaWebSocketServerContainer.getContainer(context.getServletContext()) == null) {
5454
WebSocketServerComponents.ensureWebSocketComponents(context.getServer(),
55-
context.getServletContext());
55+
context.getContext().getContextHandler());
5656
WebSocketUpgradeFilter.ensureFilter(context.getServletContext());
57-
WebSocketMappings.ensureMappings(context.getServletContext());
57+
WebSocketMappings.ensureMappings(context.getContext().getContextHandler());
5858
JakartaWebSocketServerContainer.ensureContainer(context.getServletContext());
5959
}
6060
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import jakarta.websocket.server.ServerContainer;
2424
import org.apache.catalina.startup.Tomcat;
2525
import org.apache.tomcat.websocket.server.WsSci;
26-
import org.eclipse.jetty.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
27-
import org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter;
26+
import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
27+
import org.eclipse.jetty.ee10.websocket.servlet.WebSocketUpgradeFilter;
2828

2929
import org.springframework.boot.autoconfigure.AutoConfiguration;
3030
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;

0 commit comments

Comments
 (0)