Commit Graph

3563 Commits

Author SHA1 Message Date
Andy Wilkinson dbb24286ff Separate stopping and destruction so web server can be restarted
Previously, when a Servlet-based WebServer was stopped it would also
stop the ServletContext. This led to problems as Tomcat and Undertow
would then not allow a restart. Jetty would allow a restart but
duplicate servlet registrations would then be attempted.

This commit modifies the WebServer lifecycle to separate stopping
and destruction for both servlet and reactive web servers. This
allows a WebServer's stop() implementation to leave some components
running so that they can be restarted. To completely shut down a
WebServer destroy() must now be called.

Both Tomcat and Jetty WebServers have been updated to stop their
network connections when stop() is called but leave other components
running. This works with both servlet and reactive web servers.

Note that an Undertow-based Servlet web server does not support
stop and restart. Once stopped, a Servlet Deployment cannot be
restarted and it does not appear to be possible to separate the
lifecycle of its network connections and a Servlet deployment.

Reactor Netty and Undertow-based reactive web servers can now also
be stopped and then restarted. Calling stop() stops the whole server
but this does not cause a problem as there's no (application-exposed)
ServletContext involved. There may be room to optimize this in the
future if the need arises.

Closes gh-34955
2023-06-26 20:58:59 +01:00
Scott Frederick 493987fc1a Allow key password to be set for a PemSslStoreBundle
Closes gh-35983
2023-06-23 14:40:42 -06:00
Andy Wilkinson b645eb32ac Remove deprecated code that was to be removed in 3.2
Closes gh-36034
2023-06-23 18:14:22 +01:00
Andy Wilkinson 357c67a999 Merge branch '3.1.x' 2023-06-23 15:58:51 +01:00
Andy Wilkinson 3f7fe25cb9 Merge branch '3.0.x' into 3.1.x
Closes gh-36044
2023-06-23 15:58:36 +01:00
Andy Wilkinson 2fae5de245 Merge branch '2.7.x' into 3.0.x
Closes gh-36043
2023-06-23 15:50:02 +01:00
Andy Wilkinson d2966e1cbf Polish "Replace calls to verifyComplete() to avoid indefinite blocking"
See gh-35915
2023-06-23 12:38:12 +01:00
ThomazPassarelli f9da30faf1 Replace calls to verifyComplete() to avoid indefinite blocking
See gh-35915
2023-06-23 12:16:26 +01:00
Moritz Halbritter 8f7fdc507e Polish CorrelationIdFormatter 2023-06-23 08:26:32 +02:00
Phillip Webb 493777d3c9 Include the application name on each log line when it is available
Update Logback and Log4J2 so that they include the application name on
each log line. If `spring.application.name` had not been set, or if
`logging.include-application-name` is `false` then the name is not
logged.

Closes gh-35593
2023-06-22 00:40:51 -07:00
Jonatan Ivanov c1b295fd71 Log correlation IDs when Micrometer tracing is being used
Add support for logging correlation IDs with Logback or Log4J2 whenever
Micrometer tracing is being used.

The `LoggingSystemProperties` class now accepts a defualt value resolver
which will be used whenever a value isn't in the environment. The
`AbstractLoggingSystem` provides a resolver that supports the
`logging.pattern.correlation` property and will return a value whenever
`LoggingSystem.EXPECT_CORRELATION_ID_PROPERTY` is set.

Using `LoggingSystem.EXPECT_CORRELATION_ID_PROPERTY` allows us to
provide a consistent width for the correlation ID, even when it's
missing from the MDC.

The exact correlation pattern returned will depend on the `LoggingSytem`
implementation. Currently Logback and Log4J2 are supported and both
make use of a custom converter which delegates to a new
`CorrelationIdFormatter` class.

Closes gh-33280
2023-06-22 00:28:45 -07:00
Phillip Webb b6120d504a Replace LoggingSystemProperties constants with an Enum
Extract contants from `LoggingSystemProperty` and
`LogbackLoggingSystemProperties` in enum classes.

Closes gh-36015
2023-06-22 00:28:22 -07:00
Phillip Webb 3a796aedea Merge branch '3.1.x' 2023-06-22 00:28:01 -07:00
Phillip Webb 31f218c4e0 Merge branch '3.0.x' into 3.1.x 2023-06-22 00:27:51 -07:00
Phillip Webb 9db3c5a2f7 Polish 2023-06-22 00:24:39 -07:00
Andy Wilkinson 7f5351c7b0 Merge branch '3.1.x' 2023-06-21 19:06:32 +01:00
Andy Wilkinson b770ffc160 Fully prepare connection when using SSL bundle
Fixes gh-36007
2023-06-21 19:05:44 +01:00
Andy Wilkinson 1f9ce508f7 Upgrade to SnakeYAML 2.0
Closes gh-35982
2023-06-19 18:18:31 +01:00
Andy Wilkinson ca5bd37e81 Upgrade to Spring Framework 6.1.0-M1
Closes gh-35977
Closes gh-35980
2023-06-19 18:12:16 +01:00
Andy Wilkinson 1e17d8eeea Upgrade to Liquibase 4.22.0
Closes gh-35956
2023-06-19 16:30:52 +01:00
Phillip Webb 23eb7ec1f8 Merge branch '3.1.x' 2023-06-16 14:35:44 -07:00
Phillip Webb 5d6a507142 Merge branch '3.0.x' into 3.1.x 2023-06-16 14:35:23 -07:00
Phillip Webb 48e13af8c4 Merge branch '2.7.x' into 3.0.x 2023-06-16 14:34:54 -07:00
Phillip Webb b8d2c279ee Update copyright year of changed files 2023-06-16 14:32:43 -07:00
Phillip Webb 13f16da716 Merge branch '3.1.x' 2023-06-16 14:00:12 -07:00
Phillip Webb baddf4c857 Merge branch '3.0.x' into 3.1.x 2023-06-16 13:54:01 -07:00
Phillip Webb 0fd1c89889 Polish 2023-06-16 13:53:33 -07:00
Phillip Webb 691b549e36 Merge branch '2.7.x' into 3.0.x 2023-06-16 10:18:43 -07:00
Phillip Webb f3f8610539 Polish 2023-06-16 10:17:08 -07:00
Stephane Nicoll fe65806582 Merge branch '3.1.x' 2023-06-16 14:32:39 +02:00
Sébastien Deleuze db8dee5aac Refine SpringApplication.Augmented.with Kotlin extension
This commit allows to specify multiple Kotlin classes.

See gh-35784
2023-06-16 14:22:18 +02:00
Andy Wilkinson fb4b26a842 Merge branch '3.1.x' 2023-06-16 10:45:44 +01:00
Andy Wilkinson 1652c27b3c Apply additional sources once when using SpringApplication.from()
Previously, when using SpringApplication.from() any additional
sources configured using with() would be applied to every
SpringApplication that was created within the scope of the call to
run(). This caused problems with Spring Cloud's bootstrap context
where the additional sources would be applied to both the user's
application and to the boostrap context's application.

This commit updates the hook that's used to apply the additional
sources so that it's only applied once. This results in the
additional sources only being added to the first SpringApplication
that is run.

Closes gh-35873
2023-06-16 10:39:20 +01:00
Phillip Webb 0439b630d1 Merge branch '3.1.x'
Closes gh-35923
2023-06-15 14:27:11 -07:00
Phillip Webb c192fb85b2 Merge branch '3.0.x' into 3.1.x
Closes gh-35922
2023-06-15 14:26:55 -07:00
Phillip Webb 4c8b93b37d Merge branch '2.7.x' into 3.0.x
Closes gh-35920
2023-06-15 14:26:36 -07:00
Phillip Webb 137f4ee451 Support reporting of custom Log4J2 log levels from the LoggersEndpoint
Support custom Log4J2 log levels by changing `LoggerConfiguration` so
that it can now report levels using a `LevelConfiguration` object
rather than the limited `LogLevel` enum.

The `Log4J2LoggingSystem` class now uses `LevelConfiguration.ofCustom`
for custom logging levels, rather than throwing an exception.

The `LoggersEndpoint` has also been updated so that it can return the
custom logger name.

Fixes gh-35227
2023-06-15 14:03:22 -07:00
Andy Wilkinson c033484815 Merge branch '3.1.x' 2023-06-15 15:50:34 +01:00
Andy Wilkinson 3d9a308053 Merge branch '3.0.x' into 3.1.x
Closes gh-35913
2023-06-15 15:50:07 +01:00
Andy Wilkinson eeea065595 Merge branch '2.7.x' into 3.0.x
Closes gh-35912
2023-06-15 15:49:36 +01:00
Andy Wilkinson e779fb0bc4 Validate constructor bound config props that implement Validator
Closes gh-33669
2023-06-15 15:29:20 +01:00
Moritz Halbritter 3e4a9f5204 Add property to limit maximum connections for Jetty
Closes gh-35899
2023-06-15 09:42:51 +02:00
Moritz Halbritter fb64f6744e Add 21 to JavaVersion
See gh-35892
2023-06-15 08:30:08 +02:00
Scott Frederick 767ec4e22e Support encrypted PKCS8 private keys in SSL bundles
Properties `ssl.bundle.pem.mybundle.keystore.private-key-password`
and `ssl.bundle.pem.mybundle.truststore.private-key-password` have
been added for configuring the password required to decrypt an
encrypted private key.

Only PKCS8 private keys with encryption are supported. PKCS1 and EC
private keys with encryption are much more complex to decrypt, and
are not supported.

Fixes gh-35652
2023-06-09 11:52:36 -05:00
Moritz Halbritter 49597db77d Merge branch '3.0.x'
Closes gh-35764
2023-06-07 08:28:03 +02:00
Moritz Halbritter 9149fc3e77 Merge branch '2.7.x' into 3.0.x
Closes gh-35763
2023-06-07 08:27:19 +02:00
Moritz Halbritter 2927d50d18 Add JavaVersion.TWENTY
Closes gh-35758
2023-06-07 08:23:05 +02:00
Andy Wilkinson 036b982dd7 Start building against Spring Framework 6.0.10 snapshots
This reverts commit bc63c511 as Framework's previous behavior has
been restored.

See gh-35751
2023-06-06 07:36:37 +01:00
Phillip Webb 1669b81af7 Add 'fromApplication' and 'with' Kotlin extension functions
Update `SpringApplicationExtensions.kt` with `fromApplication` and
`with` functions that make `SpringApplication.from(...)` easier to use
with Kotlin.

Fixes gh-35756
2023-06-05 21:49:41 -07:00
Phillip Webb ff35ed4be1 Merge branch '3.0.x' 2023-06-05 17:18:18 -07:00