Skip to content

Commit a1ba2de

Browse files
committed
Merge branch '1.5.x'
2 parents c587549 + 145d8d2 commit a1ba2de

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatWebServer.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.apache.catalina.Container;
2828
import org.apache.catalina.Context;
2929
import org.apache.catalina.Engine;
30+
import org.apache.catalina.Lifecycle;
3031
import org.apache.catalina.LifecycleException;
3132
import org.apache.catalina.LifecycleState;
3233
import org.apache.catalina.Service;
@@ -92,16 +93,22 @@ private void initialize() throws WebServerException {
9293
try {
9394
addInstanceIdToEngineName();
9495

95-
// Remove service connectors so that protocol binding doesn't happen yet
96-
removeServiceConnectors();
96+
Context context = findContext();
97+
context.addLifecycleListener((event) -> {
98+
if (context.equals(event.getSource())
99+
&& Lifecycle.START_EVENT.equals(event.getType())) {
100+
// Remove service connectors so that protocol binding doesn't
101+
// happen when the service is started.
102+
removeServiceConnectors();
103+
}
104+
});
97105

98106
// Start the server to trigger initialization listeners
99107
this.tomcat.start();
100108

101109
// We can re-throw failure exception directly in the main thread
102110
rethrowDeferredStartupExceptions();
103111

104-
Context context = findContext();
105112
try {
106113
ContextBindings.bindClassLoader(context, context.getNamingToken(),
107114
getClass().getClassLoader());

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/AbstractServletWebServerFactoryTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,21 @@ public void sessionCookieConfiguration() {
801801
assertThat(sessionCookieConfig.getMaxAge()).isEqualTo(60);
802802
}
803803

804+
@Test
805+
public void sslSessionTracking() {
806+
AbstractServletWebServerFactory factory = getFactory();
807+
Ssl ssl = new Ssl();
808+
ssl.setEnabled(true);
809+
ssl.setKeyStore("src/test/resources/test.jks");
810+
ssl.setKeyPassword("password");
811+
factory.setSsl(ssl);
812+
factory.getSession().setTrackingModes(EnumSet.of(SessionTrackingMode.SSL));
813+
AtomicReference<ServletContext> contextReference = new AtomicReference<>();
814+
this.webServer = factory.getWebServer(contextReference::set);
815+
assertThat(contextReference.get().getEffectiveSessionTrackingModes())
816+
.isEqualTo(EnumSet.of(javax.servlet.SessionTrackingMode.SSL));
817+
}
818+
804819
@Test
805820
public void compressionOfResponseToGetRequest() throws Exception {
806821
assertThat(doTestCompression(10000, null, null)).isTrue();

0 commit comments

Comments
 (0)