Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
070f9a80dd | ||
![]() |
5d0009cdd2 | ||
![]() |
4cbbc1a46c | ||
![]() |
abc3f13a90 | ||
![]() |
739b16d7ce | ||
![]() |
3cc95cffc0 | ||
![]() |
690c1868d8 | ||
![]() |
cf6f3627b3 | ||
![]() |
39de88de8b | ||
![]() |
29aa1bf4ac | ||
![]() |
150acbf804 | ||
![]() |
7164dc391e |
2
.github/actions/build/action.yml
vendored
2
.github/actions/build/action.yml
vendored
@ -35,7 +35,7 @@ inputs:
|
|||||||
java-version:
|
java-version:
|
||||||
description: 'Java version to compile and test with'
|
description: 'Java version to compile and test with'
|
||||||
required: false
|
required: false
|
||||||
default: '17'
|
default: '23'
|
||||||
publish:
|
publish:
|
||||||
description: 'Whether to publish artifacts ready for deployment to Artifactory'
|
description: 'Whether to publish artifacts ready for deployment to Artifactory'
|
||||||
required: false
|
required: false
|
||||||
|
@ -23,7 +23,7 @@ inputs:
|
|||||||
java-version:
|
java-version:
|
||||||
description: 'Java version to use for the build'
|
description: 'Java version to use for the build'
|
||||||
required: false
|
required: false
|
||||||
default: '17'
|
default: '23'
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
@ -39,7 +39,7 @@ runs:
|
|||||||
distribution: ${{ inputs.java-early-access == 'true' && 'temurin' || (inputs.java-distribution || 'liberica') }}
|
distribution: ${{ inputs.java-early-access == 'true' && 'temurin' || (inputs.java-distribution || 'liberica') }}
|
||||||
java-version: |
|
java-version: |
|
||||||
${{ inputs.java-early-access == 'true' && format('{0}-ea', inputs.java-version) || inputs.java-version }}
|
${{ inputs.java-early-access == 'true' && format('{0}-ea', inputs.java-version) || inputs.java-version }}
|
||||||
${{ inputs.java-toolchain == 'true' && '17' || '' }}
|
${{ inputs.java-toolchain == 'true' && '23' || '' }}
|
||||||
- name: Set Up Gradle With Read/Write Cache
|
- name: Set Up Gradle With Read/Write Cache
|
||||||
if: ${{ inputs.cache-read-only == 'false' }}
|
if: ${{ inputs.cache-read-only == 'false' }}
|
||||||
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
|
||||||
|
15
.github/workflows/build-and-deploy-snapshot.yml
vendored
15
.github/workflows/build-and-deploy-snapshot.yml
vendored
@ -2,7 +2,7 @@ name: Build and Deploy Snapshot
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- 4.0.x
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
jobs:
|
jobs:
|
||||||
@ -27,7 +27,7 @@ jobs:
|
|||||||
- name: Deploy
|
- name: Deploy
|
||||||
uses: spring-io/artifactory-deploy-action@dc1913008c0599f0c4b1fdafb6ff3c502b3565ea # v0.0.2
|
uses: spring-io/artifactory-deploy-action@dc1913008c0599f0c4b1fdafb6ff3c502b3565ea # v0.0.2
|
||||||
with:
|
with:
|
||||||
build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', '3.5.x') || format('spring-boot-{0}', '3.5.x') }}
|
build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', '4.0.x') || format('spring-boot-{0}', '4.0.x') }}
|
||||||
folder: 'deployment-repository'
|
folder: 'deployment-repository'
|
||||||
password: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_PASSWORD || secrets.ARTIFACTORY_PASSWORD }}
|
password: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_PASSWORD || secrets.ARTIFACTORY_PASSWORD }}
|
||||||
project: ${{ vars.COMMERCIAL && 'spring' }}
|
project: ${{ vars.COMMERCIAL && 'spring' }}
|
||||||
@ -46,17 +46,6 @@ jobs:
|
|||||||
webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
|
webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
|
||||||
outputs:
|
outputs:
|
||||||
version: ${{ steps.build-and-publish.outputs.version }}
|
version: ${{ steps.build-and-publish.outputs.version }}
|
||||||
trigger-docs-build:
|
|
||||||
name: Trigger Docs Build
|
|
||||||
needs: build-and-deploy-snapshot
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
|
|
||||||
steps:
|
|
||||||
- name: Run Deploy Docs Workflow
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: gh workflow run deploy-docs.yml --repo spring-projects/spring-boot -r docs-build -f build-refname=${{ github.ref_name }} -f build-version=${{ needs.build-and-deploy-snapshot.outputs.version }}
|
|
||||||
verify:
|
verify:
|
||||||
name: Verify
|
name: Verify
|
||||||
needs: build-and-deploy-snapshot
|
needs: build-and-deploy-snapshot
|
||||||
|
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
@ -2,7 +2,7 @@ name: CI
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- 4.0.x
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: '${{ matrix.os.name}} | Java ${{ matrix.java.version}}'
|
name: '${{ matrix.os.name}} | Java ${{ matrix.java.version}}'
|
||||||
@ -18,13 +18,13 @@ jobs:
|
|||||||
name: Windows
|
name: Windows
|
||||||
java:
|
java:
|
||||||
- version: 17
|
- version: 17
|
||||||
toolchain: false
|
|
||||||
- version: 21
|
|
||||||
toolchain: false
|
|
||||||
- version: 22
|
|
||||||
toolchain: false
|
|
||||||
- version: 23
|
|
||||||
toolchain: true
|
toolchain: true
|
||||||
|
- version: 21
|
||||||
|
toolchain: true
|
||||||
|
- version: 22
|
||||||
|
toolchain: true
|
||||||
|
- version: 23
|
||||||
|
toolchain: false
|
||||||
- version: 24
|
- version: 24
|
||||||
early-access: true
|
early-access: true
|
||||||
toolchain: true
|
toolchain: true
|
||||||
@ -32,7 +32,7 @@ jobs:
|
|||||||
- os:
|
- os:
|
||||||
name: Linux
|
name: Linux
|
||||||
java:
|
java:
|
||||||
version: 17
|
version: 23
|
||||||
- os:
|
- os:
|
||||||
name: ${{ github.repository == 'spring-projects/spring-boot-commercial' && 'Windows' }}
|
name: ${{ github.repository == 'spring-projects/spring-boot-commercial' && 'Windows' }}
|
||||||
steps:
|
steps:
|
||||||
|
2
.github/workflows/run-system-tests.yml
vendored
2
.github/workflows/run-system-tests.yml
vendored
@ -2,7 +2,7 @@ name: Run System Tests
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- 4.0.x
|
||||||
jobs:
|
jobs:
|
||||||
run-system-tests:
|
run-system-tests:
|
||||||
name: 'Java ${{ matrix.java.version}}'
|
name: 'Java ${{ matrix.java.version}}'
|
||||||
|
29
.github/workflows/trigger-docs-build.yml
vendored
29
.github/workflows/trigger-docs-build.yml
vendored
@ -1,29 +0,0 @@
|
|||||||
name: Trigger Docs Build
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: main
|
|
||||||
paths: [ 'antora/*' ]
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
build-refname:
|
|
||||||
description: 'Git refname to build (e.g., 1.0.x)'
|
|
||||||
required: false
|
|
||||||
build-version:
|
|
||||||
description: 'Version being build (e.g. 1.0.3-SNAPSHOT)'
|
|
||||||
required: false
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
jobs:
|
|
||||||
trigger-docs-build:
|
|
||||||
name: Trigger Docs Build
|
|
||||||
if: github.repository_owner == 'spring-projects'
|
|
||||||
runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
|
|
||||||
steps:
|
|
||||||
- name: Check Out
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: docs-build
|
|
||||||
- name: Trigger Workflow
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: gh workflow run deploy-docs.yml -r docs-build -f build-refname=${{ github.event.inputs.build-refname }} -f build-version=${{ github.event.inputs.build-version }}
|
|
@ -1,3 +1,3 @@
|
|||||||
# Enable auto-env through the sdkman_auto_env config
|
# Enable auto-env through the sdkman_auto_env config
|
||||||
# Add key=value pairs of SDKs to use below
|
# Add key=value pairs of SDKs to use below
|
||||||
java=17.0.14-librca
|
java=23.0.2-librca
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -50,6 +50,7 @@ public class ConventionsPlugin implements Plugin<Project> {
|
|||||||
new KotlinConventions().apply(project);
|
new KotlinConventions().apply(project);
|
||||||
new WarConventions().apply(project);
|
new WarConventions().apply(project);
|
||||||
new EclipseConventions().apply(project);
|
new EclipseConventions().apply(project);
|
||||||
|
new TestFixturesConventions().apply(project);
|
||||||
RepositoryTransformersExtension.apply(project);
|
RepositoryTransformersExtension.apply(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,28 +218,20 @@ class JavaConventions {
|
|||||||
if (!project.hasProperty("toolchainVersion")) {
|
if (!project.hasProperty("toolchainVersion")) {
|
||||||
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
|
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
|
||||||
javaPluginExtension.setSourceCompatibility(JavaVersion.toVersion(SOURCE_AND_TARGET_COMPATIBILITY));
|
javaPluginExtension.setSourceCompatibility(JavaVersion.toVersion(SOURCE_AND_TARGET_COMPATIBILITY));
|
||||||
|
javaPluginExtension.setTargetCompatibility(JavaVersion.toVersion(SOURCE_AND_TARGET_COMPATIBILITY));
|
||||||
}
|
}
|
||||||
project.getTasks().withType(JavaCompile.class, (compile) -> {
|
project.getTasks().withType(JavaCompile.class, (compile) -> {
|
||||||
compile.getOptions().setEncoding("UTF-8");
|
compile.getOptions().setEncoding("UTF-8");
|
||||||
|
compile.getOptions().getRelease().set(17);
|
||||||
List<String> args = compile.getOptions().getCompilerArgs();
|
List<String> args = compile.getOptions().getCompilerArgs();
|
||||||
if (!args.contains("-parameters")) {
|
if (!args.contains("-parameters")) {
|
||||||
args.add("-parameters");
|
args.add("-parameters");
|
||||||
}
|
}
|
||||||
if (project.hasProperty("toolchainVersion")) {
|
args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes",
|
||||||
compile.setSourceCompatibility(SOURCE_AND_TARGET_COMPATIBILITY);
|
"-Xlint:varargs"));
|
||||||
compile.setTargetCompatibility(SOURCE_AND_TARGET_COMPATIBILITY);
|
|
||||||
}
|
|
||||||
else if (buildingWithJava17(project)) {
|
|
||||||
args.addAll(Arrays.asList("-Werror", "-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:rawtypes",
|
|
||||||
"-Xlint:varargs"));
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean buildingWithJava17(Project project) {
|
|
||||||
return !project.hasProperty("toolchainVersion") && JavaVersion.current() == JavaVersion.VERSION_17;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void configureSpringJavaFormat(Project project) {
|
private void configureSpringJavaFormat(Project project) {
|
||||||
project.getPlugins().apply(SpringJavaFormatPlugin.class);
|
project.getPlugins().apply(SpringJavaFormatPlugin.class);
|
||||||
project.getTasks().withType(Format.class, (Format) -> Format.setEncoding("UTF-8"));
|
project.getTasks().withType(Format.class, (Format) -> Format.setEncoding("UTF-8"));
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.build;
|
||||||
|
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||||
|
import org.gradle.api.component.AdhocComponentWithVariants;
|
||||||
|
import org.gradle.api.plugins.JavaTestFixturesPlugin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conventions that are applied in the presence of the {@link JavaTestFixturesPlugin}.
|
||||||
|
* When the plugin is applied:
|
||||||
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li>Publishing of the test fixtures is disabled.
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class TestFixturesConventions {
|
||||||
|
|
||||||
|
void apply(Project project) {
|
||||||
|
project.getPlugins().withType(JavaTestFixturesPlugin.class, (testFixtures) -> disablePublishing(project));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void disablePublishing(Project project) {
|
||||||
|
ConfigurationContainer configurations = project.getConfigurations();
|
||||||
|
AdhocComponentWithVariants javaComponent = (AdhocComponentWithVariants) project.getComponents()
|
||||||
|
.getByName("java");
|
||||||
|
javaComponent.withVariantsFromConfiguration(configurations.getByName("testFixturesApiElements"),
|
||||||
|
(variant) -> variant.skip());
|
||||||
|
javaComponent.withVariantsFromConfiguration(configurations.getByName("testFixturesRuntimeElements"),
|
||||||
|
(variant) -> variant.skip());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -24,6 +24,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.tngtech.archunit.core.domain.JavaClass;
|
import com.tngtech.archunit.core.domain.JavaClass;
|
||||||
|
import com.tngtech.archunit.core.domain.JavaModifier;
|
||||||
import com.tngtech.archunit.lang.ArchCondition;
|
import com.tngtech.archunit.lang.ArchCondition;
|
||||||
import com.tngtech.archunit.lang.ArchRule;
|
import com.tngtech.archunit.lang.ArchRule;
|
||||||
import com.tngtech.archunit.lang.ConditionEvents;
|
import com.tngtech.archunit.lang.ConditionEvents;
|
||||||
@ -124,14 +125,16 @@ public class AutoConfigurationPlugin implements Plugin<Project> {
|
|||||||
.optional()
|
.optional()
|
||||||
.withPathSensitivity(PathSensitivity.RELATIVE);
|
.withPathSensitivity(PathSensitivity.RELATIVE);
|
||||||
architectureCheck.getRules()
|
architectureCheck.getRules()
|
||||||
.add(allClassesAnnotatedWithAutoConfigurationShouldBeListedInAutoConfigurationImports(
|
.add(allConcreteClassesAnnotatedWithAutoConfigurationShouldBeListedInAutoConfigurationImports(
|
||||||
autoConfigurationImports(project, resourcesDirectory)));
|
autoConfigurationImports(project, resourcesDirectory)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArchRule allClassesAnnotatedWithAutoConfigurationShouldBeListedInAutoConfigurationImports(
|
private ArchRule allConcreteClassesAnnotatedWithAutoConfigurationShouldBeListedInAutoConfigurationImports(
|
||||||
Provider<AutoConfigurationImports> imports) {
|
Provider<AutoConfigurationImports> imports) {
|
||||||
return ArchRuleDefinition.classes()
|
return ArchRuleDefinition.classes()
|
||||||
.that()
|
.that()
|
||||||
|
.doNotHaveModifier(JavaModifier.ABSTRACT)
|
||||||
|
.and()
|
||||||
.areAnnotatedWith("org.springframework.boot.autoconfigure.AutoConfiguration")
|
.areAnnotatedWith("org.springframework.boot.autoconfigure.AutoConfiguration")
|
||||||
.should(beListedInAutoConfigurationImports(imports))
|
.should(beListedInAutoConfigurationImports(imports))
|
||||||
.allowEmptyShould(true);
|
.allowEmptyShould(true);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,21 +16,17 @@
|
|||||||
|
|
||||||
package org.springframework.boot.build.toolchain;
|
package org.springframework.boot.build.toolchain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.gradle.api.Plugin;
|
import org.gradle.api.Plugin;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.plugins.JavaPluginExtension;
|
|
||||||
import org.gradle.api.tasks.testing.Test;
|
import org.gradle.api.tasks.testing.Test;
|
||||||
import org.gradle.jvm.toolchain.JavaLanguageVersion;
|
import org.gradle.jvm.toolchain.JavaLanguageVersion;
|
||||||
import org.gradle.jvm.toolchain.JavaToolchainSpec;
|
import org.gradle.jvm.toolchain.JavaToolchainService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Plugin} for customizing Gradle's toolchain support.
|
* {@link Plugin} for customizing Gradle's toolchain support.
|
||||||
*
|
*
|
||||||
* @author Christoph Dreis
|
* @author Christoph Dreis
|
||||||
|
* @author Andy Wilkinson
|
||||||
*/
|
*/
|
||||||
public class ToolchainPlugin implements Plugin<Project> {
|
public class ToolchainPlugin implements Plugin<Project> {
|
||||||
|
|
||||||
@ -52,11 +48,7 @@ public class ToolchainPlugin implements Plugin<Project> {
|
|||||||
disableToolchainTasks(project);
|
disableToolchainTasks(project);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
JavaToolchainSpec toolchainSpec = project.getExtensions()
|
configureTestToolchain(project, toolchain.getJavaVersion());
|
||||||
.getByType(JavaPluginExtension.class)
|
|
||||||
.getToolchain();
|
|
||||||
toolchainSpec.getLanguageVersion().set(toolchain.getJavaVersion());
|
|
||||||
configureTestToolchain(project, toolchain);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,9 +62,11 @@ public class ToolchainPlugin implements Plugin<Project> {
|
|||||||
project.getTasks().withType(Test.class, (task) -> task.setEnabled(false));
|
project.getTasks().withType(Test.class, (task) -> task.setEnabled(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configureTestToolchain(Project project, ToolchainExtension toolchain) {
|
private void configureTestToolchain(Project project, JavaLanguageVersion toolchainVersion) {
|
||||||
List<String> jvmArgs = new ArrayList<>(toolchain.getTestJvmArgs().getOrElse(Collections.emptyList()));
|
JavaToolchainService javaToolchains = project.getExtensions().getByType(JavaToolchainService.class);
|
||||||
project.getTasks().withType(Test.class, (test) -> test.jvmArgs(jvmArgs));
|
project.getTasks()
|
||||||
|
.withType(Test.class, (test) -> test.getJavaLauncher()
|
||||||
|
.set(javaToolchains.launcherFor((spec) -> spec.getLanguageVersion().set(toolchainVersion))));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
xmlns:setup.workingsets="http://www.eclipse.org/oomph/setup/workingsets/1.0"
|
xmlns:setup.workingsets="http://www.eclipse.org/oomph/setup/workingsets/1.0"
|
||||||
xmlns:workingsets="http://www.eclipse.org/oomph/workingsets/1.0"
|
xmlns:workingsets="http://www.eclipse.org/oomph/workingsets/1.0"
|
||||||
xsi:schemaLocation="http://www.eclipse.org/oomph/setup/jdt/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/JDT.ecore http://www.eclipse.org/buildship/oomph/1.0 https://raw.githubusercontent.com/eclipse/buildship/master/org.eclipse.buildship.oomph/model/GradleImport-1.0.ecore http://www.eclipse.org/oomph/predicates/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/Predicates.ecore http://www.eclipse.org/oomph/setup/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/SetupWorkingSets.ecore http://www.eclipse.org/oomph/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/WorkingSets.ecore"
|
xsi:schemaLocation="http://www.eclipse.org/oomph/setup/jdt/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/JDT.ecore http://www.eclipse.org/buildship/oomph/1.0 https://raw.githubusercontent.com/eclipse/buildship/master/org.eclipse.buildship.oomph/model/GradleImport-1.0.ecore http://www.eclipse.org/oomph/predicates/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/Predicates.ecore http://www.eclipse.org/oomph/setup/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/SetupWorkingSets.ecore http://www.eclipse.org/oomph/workingsets/1.0 http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/models/WorkingSets.ecore"
|
||||||
name="spring.boot.3.5.x"
|
name="spring.boot.4.0.x"
|
||||||
label="Spring Boot 3.5.x">
|
label="Spring Boot 4.0.x">
|
||||||
<setupTask
|
<setupTask
|
||||||
xsi:type="setup:VariableTask"
|
xsi:type="setup:VariableTask"
|
||||||
type="FOLDER"
|
type="FOLDER"
|
||||||
@ -22,8 +22,8 @@
|
|||||||
label="Checkout Location"/>
|
label="Checkout Location"/>
|
||||||
<setupTask
|
<setupTask
|
||||||
xsi:type="jdt:JRETask"
|
xsi:type="jdt:JRETask"
|
||||||
version="JavaSE-17"
|
version="JavaSE-23"
|
||||||
location="${jre.location-17}">
|
location="${jre.location-23}">
|
||||||
<description>
|
<description>
|
||||||
Define the JRE needed to compile and run the Java
|
Define the JRE needed to compile and run the Java
|
||||||
projects of ${scope.project.label}
|
projects of ${scope.project.label}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
version=3.5.0-SNAPSHOT
|
version=4.0.0-SNAPSHOT
|
||||||
latestVersion=true
|
latestVersion=true
|
||||||
spring.build-type=oss
|
spring.build-type=oss
|
||||||
|
|
||||||
|
@ -58,14 +58,17 @@ include "spring-boot-project:spring-boot-tools:spring-boot-test-support"
|
|||||||
include "spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"
|
include "spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"
|
||||||
include "spring-boot-project:spring-boot"
|
include "spring-boot-project:spring-boot"
|
||||||
include "spring-boot-project:spring-boot-autoconfigure"
|
include "spring-boot-project:spring-boot-autoconfigure"
|
||||||
|
include "spring-boot-project:spring-boot-autoconfigure-all"
|
||||||
include "spring-boot-project:spring-boot-actuator"
|
include "spring-boot-project:spring-boot-actuator"
|
||||||
include "spring-boot-project:spring-boot-actuator-autoconfigure"
|
include "spring-boot-project:spring-boot-actuator-autoconfigure"
|
||||||
|
include "spring-boot-project:spring-boot-all"
|
||||||
include "spring-boot-project:spring-boot-docker-compose"
|
include "spring-boot-project:spring-boot-docker-compose"
|
||||||
include "spring-boot-project:spring-boot-devtools"
|
include "spring-boot-project:spring-boot-devtools"
|
||||||
include "spring-boot-project:spring-boot-docs"
|
include "spring-boot-project:spring-boot-docs"
|
||||||
include "spring-boot-project:spring-boot-test"
|
include "spring-boot-project:spring-boot-test"
|
||||||
include "spring-boot-project:spring-boot-testcontainers"
|
include "spring-boot-project:spring-boot-testcontainers"
|
||||||
include "spring-boot-project:spring-boot-test-autoconfigure"
|
include "spring-boot-project:spring-boot-test-autoconfigure"
|
||||||
|
include "spring-boot-project:spring-boot-tomcat"
|
||||||
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-configuration-processor-tests"
|
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-configuration-processor-tests"
|
||||||
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-launch-script-tests"
|
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-launch-script-tests"
|
||||||
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-loader-tests"
|
include "spring-boot-tests:spring-boot-integration-tests:spring-boot-loader-tests"
|
||||||
|
@ -11,12 +11,13 @@ description = "Spring Boot Actuator AutoConfigure"
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":spring-boot-project:spring-boot-actuator"))
|
api(project(":spring-boot-project:spring-boot-actuator"))
|
||||||
api(project(":spring-boot-project:spring-boot"))
|
api(project(":spring-boot-project:spring-boot-all"))
|
||||||
api(project(":spring-boot-project:spring-boot-autoconfigure"))
|
api(project(":spring-boot-project:spring-boot-autoconfigure-all"))
|
||||||
|
|
||||||
implementation("com.fasterxml.jackson.core:jackson-databind")
|
implementation("com.fasterxml.jackson.core:jackson-databind")
|
||||||
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
|
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
|
||||||
|
|
||||||
|
optional(project(":spring-boot-project:spring-boot-tomcat"))
|
||||||
optional("ch.qos.logback:logback-classic")
|
optional("ch.qos.logback:logback-classic")
|
||||||
optional("org.apache.cassandra:java-driver-core") {
|
optional("org.apache.cassandra:java-driver-core") {
|
||||||
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
||||||
@ -65,6 +66,7 @@ dependencies {
|
|||||||
optional("io.r2dbc:r2dbc-pool")
|
optional("io.r2dbc:r2dbc-pool")
|
||||||
optional("io.r2dbc:r2dbc-proxy")
|
optional("io.r2dbc:r2dbc-proxy")
|
||||||
optional("io.r2dbc:r2dbc-spi")
|
optional("io.r2dbc:r2dbc-spi")
|
||||||
|
optional("io.undertow:undertow-servlet")
|
||||||
optional("jakarta.jms:jakarta.jms-api")
|
optional("jakarta.jms:jakarta.jms-api")
|
||||||
optional("jakarta.persistence:jakarta.persistence-api")
|
optional("jakarta.persistence:jakarta.persistence-api")
|
||||||
optional("jakarta.servlet:jakarta.servlet-api")
|
optional("jakarta.servlet:jakarta.servlet-api")
|
||||||
|
@ -25,8 +25,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.servlet.DispatcherServlet;
|
import org.springframework.web.servlet.DispatcherServlet;
|
||||||
|
@ -44,10 +44,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.DefaultJerseyApplicationPath;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyProperties;
|
import org.springframework.boot.autoconfigure.jersey.JerseyProperties;
|
||||||
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DefaultJerseyApplicationPath;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2022 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -28,6 +28,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.tomcat.TomcatWebServer;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,7 +39,7 @@ import org.springframework.context.annotation.Bean;
|
|||||||
*/
|
*/
|
||||||
@AutoConfiguration(after = CompositeMeterRegistryAutoConfiguration.class)
|
@AutoConfiguration(after = CompositeMeterRegistryAutoConfiguration.class)
|
||||||
@ConditionalOnWebApplication
|
@ConditionalOnWebApplication
|
||||||
@ConditionalOnClass({ TomcatMetrics.class, Manager.class })
|
@ConditionalOnClass({ TomcatMetrics.class, Manager.class, TomcatWebServer.class })
|
||||||
public class TomcatMetricsAutoConfiguration {
|
public class TomcatMetricsAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ -24,8 +24,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.web.util.matcher.RequestMatcher;
|
import org.springframework.security.web.util.matcher.RequestMatcher;
|
||||||
|
@ -24,7 +24,7 @@ import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.web.jersey;
|
|||||||
import org.glassfish.jersey.server.ResourceConfig;
|
import org.glassfish.jersey.server.ResourceConfig;
|
||||||
import org.glassfish.jersey.servlet.ServletContainer;
|
import org.glassfish.jersey.servlet.ServletContainer;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -25,10 +25,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.DefaultJerseyApplicationPath;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyProperties;
|
import org.springframework.boot.autoconfigure.jersey.JerseyProperties;
|
||||||
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DefaultJerseyApplicationPath;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -16,33 +16,19 @@
|
|||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.reactive;
|
package org.springframework.boot.actuate.autoconfigure.web.reactive;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.catalina.Valve;
|
|
||||||
import org.apache.catalina.valves.AccessLogValve;
|
|
||||||
import org.eclipse.jetty.server.CustomRequestLog;
|
|
||||||
import org.eclipse.jetty.server.RequestLog;
|
|
||||||
import org.eclipse.jetty.server.RequestLogWriter;
|
|
||||||
import org.eclipse.jetty.server.Server;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.ListableBeanFactory;
|
import org.springframework.beans.factory.ListableBeanFactory;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementWebServerFactoryCustomizer;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementWebServerFactoryCustomizer;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyReactiveWebServerFactory;
|
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatReactiveWebServerFactory;
|
|
||||||
import org.springframework.boot.web.embedded.undertow.UndertowReactiveWebServerFactory;
|
|
||||||
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
|
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
|
||||||
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.http.server.reactive.ContextPathCompositeHandler;
|
import org.springframework.http.server.reactive.ContextPathCompositeHandler;
|
||||||
import org.springframework.http.server.reactive.HttpHandler;
|
import org.springframework.http.server.reactive.HttpHandler;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@ -80,127 +66,4 @@ public class ReactiveManagementChildContextConfiguration {
|
|||||||
return httpHandler;
|
return httpHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "io.undertow.Undertow")
|
|
||||||
UndertowAccessLogCustomizer undertowManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new UndertowAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "org.apache.catalina.valves.AccessLogValve")
|
|
||||||
TomcatAccessLogCustomizer tomcatManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new TomcatAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "org.eclipse.jetty.server.Server")
|
|
||||||
JettyAccessLogCustomizer jettyManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new JettyAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract static class AccessLogCustomizer implements Ordered {
|
|
||||||
|
|
||||||
private final String prefix;
|
|
||||||
|
|
||||||
AccessLogCustomizer(String prefix) {
|
|
||||||
this.prefix = prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String customizePrefix(String existingPrefix) {
|
|
||||||
if (this.prefix == null) {
|
|
||||||
return existingPrefix;
|
|
||||||
}
|
|
||||||
if (existingPrefix == null) {
|
|
||||||
return this.prefix;
|
|
||||||
}
|
|
||||||
if (existingPrefix.startsWith(this.prefix)) {
|
|
||||||
return existingPrefix;
|
|
||||||
}
|
|
||||||
return this.prefix + existingPrefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOrder() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class TomcatAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<TomcatReactiveWebServerFactory> {
|
|
||||||
|
|
||||||
TomcatAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getTomcat().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(TomcatReactiveWebServerFactory factory) {
|
|
||||||
AccessLogValve accessLogValve = findAccessLogValve(factory);
|
|
||||||
if (accessLogValve == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
accessLogValve.setPrefix(customizePrefix(accessLogValve.getPrefix()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private AccessLogValve findAccessLogValve(TomcatReactiveWebServerFactory factory) {
|
|
||||||
for (Valve engineValve : factory.getEngineValves()) {
|
|
||||||
if (engineValve instanceof AccessLogValve accessLogValve) {
|
|
||||||
return accessLogValve;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class UndertowAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<UndertowReactiveWebServerFactory> {
|
|
||||||
|
|
||||||
UndertowAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getUndertow().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(UndertowReactiveWebServerFactory factory) {
|
|
||||||
factory.setAccessLogPrefix(customizePrefix(factory.getAccessLogPrefix()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class JettyAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<JettyReactiveWebServerFactory> {
|
|
||||||
|
|
||||||
JettyAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getJetty().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(JettyReactiveWebServerFactory factory) {
|
|
||||||
factory.addServerCustomizers(this::customizeServer);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeServer(Server server) {
|
|
||||||
RequestLog requestLog = server.getRequestLog();
|
|
||||||
if (requestLog instanceof CustomRequestLog customRequestLog) {
|
|
||||||
customizeRequestLog(customRequestLog);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeRequestLog(CustomRequestLog requestLog) {
|
|
||||||
if (requestLog.getWriter() instanceof RequestLogWriter requestLogWriter) {
|
|
||||||
customizeRequestLogWriter(requestLogWriter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeRequestLogWriter(RequestLogWriter writer) {
|
|
||||||
String filename = writer.getFileName();
|
|
||||||
if (StringUtils.hasLength(filename)) {
|
|
||||||
File file = new File(filename);
|
|
||||||
file = new File(file.getParentFile(), customizePrefix(file.getName()));
|
|
||||||
writer.setFilename(file.getPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server;
|
||||||
|
|
||||||
|
import org.springframework.boot.web.server.WebServerFactory;
|
||||||
|
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
||||||
|
import org.springframework.core.Ordered;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for a {@link WebServerFactoryCustomizer} that customizes the web server's
|
||||||
|
* access log.
|
||||||
|
*
|
||||||
|
* @param <T> the {@link WebServerFactory} type that can be customized
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
public abstract class AccessLogCustomizer<T extends WebServerFactory>
|
||||||
|
implements WebServerFactoryCustomizer<T>, Ordered {
|
||||||
|
|
||||||
|
private final String prefix;
|
||||||
|
|
||||||
|
protected AccessLogCustomizer(String prefix) {
|
||||||
|
this.prefix = prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String customizePrefix(String existingPrefix) {
|
||||||
|
if (this.prefix == null) {
|
||||||
|
return existingPrefix;
|
||||||
|
}
|
||||||
|
if (existingPrefix == null) {
|
||||||
|
return this.prefix;
|
||||||
|
}
|
||||||
|
if (existingPrefix.startsWith(this.prefix)) {
|
||||||
|
return existingPrefix;
|
||||||
|
}
|
||||||
|
return this.prefix + existingPrefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -58,12 +58,6 @@ public class ManagementServerProperties {
|
|||||||
@NestedConfigurationProperty
|
@NestedConfigurationProperty
|
||||||
private Ssl ssl;
|
private Ssl ssl;
|
||||||
|
|
||||||
private final Jetty jetty = new Jetty();
|
|
||||||
|
|
||||||
private final Tomcat tomcat = new Tomcat();
|
|
||||||
|
|
||||||
private final Undertow undertow = new Undertow();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the management port or {@code null} if the
|
* Returns the management port or {@code null} if the
|
||||||
* {@link ServerProperties#getPort() server port} should be used.
|
* {@link ServerProperties#getPort() server port} should be used.
|
||||||
@ -108,18 +102,6 @@ public class ManagementServerProperties {
|
|||||||
this.ssl = ssl;
|
this.ssl = ssl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Jetty getJetty() {
|
|
||||||
return this.jetty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Tomcat getTomcat() {
|
|
||||||
return this.tomcat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Undertow getUndertow() {
|
|
||||||
return this.undertow;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String cleanBasePath(String basePath) {
|
private String cleanBasePath(String basePath) {
|
||||||
String candidate = null;
|
String candidate = null;
|
||||||
if (StringUtils.hasLength(basePath)) {
|
if (StringUtils.hasLength(basePath)) {
|
||||||
@ -136,51 +118,4 @@ public class ManagementServerProperties {
|
|||||||
return candidate;
|
return candidate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Jetty {
|
|
||||||
|
|
||||||
private final Accesslog accesslog = new Accesslog();
|
|
||||||
|
|
||||||
public Accesslog getAccesslog() {
|
|
||||||
return this.accesslog;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Tomcat {
|
|
||||||
|
|
||||||
private final Accesslog accesslog = new Accesslog();
|
|
||||||
|
|
||||||
public Accesslog getAccesslog() {
|
|
||||||
return this.accesslog;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Undertow {
|
|
||||||
|
|
||||||
private final Accesslog accesslog = new Accesslog();
|
|
||||||
|
|
||||||
public Accesslog getAccesslog() {
|
|
||||||
return this.accesslog;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Accesslog {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Management log file name prefix.
|
|
||||||
*/
|
|
||||||
private String prefix = "management_";
|
|
||||||
|
|
||||||
public String getPrefix() {
|
|
||||||
return this.prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrefix(String prefix) {
|
|
||||||
this.prefix = prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.server.CustomRequestLog;
|
||||||
|
import org.eclipse.jetty.server.RequestLog;
|
||||||
|
import org.eclipse.jetty.server.RequestLogWriter;
|
||||||
|
import org.eclipse.jetty.server.Server;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.AccessLogCustomizer;
|
||||||
|
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
||||||
|
import org.springframework.boot.web.server.jetty.ConfigurableJettyWebServerFactory;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link AccessLogCustomizer} for Jetty.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class JettyAccessLogCustomizer extends AccessLogCustomizer<ConfigurableJettyWebServerFactory>
|
||||||
|
implements WebServerFactoryCustomizer<ConfigurableJettyWebServerFactory> {
|
||||||
|
|
||||||
|
JettyAccessLogCustomizer(JettyManagementServerProperties properties) {
|
||||||
|
super(properties.getAccesslog().getPrefix());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customize(ConfigurableJettyWebServerFactory factory) {
|
||||||
|
factory.addServerCustomizers(this::customizeServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customizeServer(Server server) {
|
||||||
|
RequestLog requestLog = server.getRequestLog();
|
||||||
|
if (requestLog instanceof CustomRequestLog customRequestLog) {
|
||||||
|
customizeRequestLog(customRequestLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customizeRequestLog(CustomRequestLog requestLog) {
|
||||||
|
if (requestLog.getWriter() instanceof RequestLogWriter requestLogWriter) {
|
||||||
|
customizeRequestLogWriter(requestLogWriter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void customizeRequestLogWriter(RequestLogWriter writer) {
|
||||||
|
String filename = writer.getFileName();
|
||||||
|
if (StringUtils.hasLength(filename)) {
|
||||||
|
File file = new File(filename);
|
||||||
|
file = new File(file.getParentFile(), customizePrefix(file.getName()));
|
||||||
|
writer.setFilename(file.getPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Properties for a Jetty-based management server.
|
||||||
|
*
|
||||||
|
* @author Moritz Halbritter
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties("management.server.jetty")
|
||||||
|
public class JettyManagementServerProperties {
|
||||||
|
|
||||||
|
private final Accesslog accesslog = new Accesslog();
|
||||||
|
|
||||||
|
public Accesslog getAccesslog() {
|
||||||
|
return this.accesslog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Accesslog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Management log file name prefix.
|
||||||
|
*/
|
||||||
|
private String prefix = "management_";
|
||||||
|
|
||||||
|
public String getPrefix() {
|
||||||
|
return this.prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrefix(String prefix) {
|
||||||
|
this.prefix = prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.server.Server;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Jetty-based
|
||||||
|
* reactive web endpoint infrastructure when a separate management context running on a
|
||||||
|
* different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Server.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@EnableConfigurationProperties(JettyManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class JettyReactiveManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
JettyAccessLogCustomizer jettyManagementAccessLogCustomizer(JettyManagementServerProperties properties) {
|
||||||
|
return new JettyAccessLogCustomizer(properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -14,39 +14,38 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.reactive;
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
import reactor.core.publisher.Flux;
|
import org.eclipse.jetty.server.Server;
|
||||||
|
|
||||||
import org.springframework.boot.WebApplicationType;
|
import org.springframework.boot.WebApplicationType;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
import org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.reactive.jetty.JettyReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
import org.springframework.boot.web.reactive.server.ReactiveWebServerFactory;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link EnableAutoConfiguration Auto-configuration} for Reactive-specific management
|
* Auto-configuration for a Jetty-based reactive management context.
|
||||||
* context concerns.
|
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Andy Wilkinson
|
||||||
* @since 2.0.0
|
* @since 4.0.0
|
||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
@ConditionalOnClass(Flux.class)
|
@ConditionalOnClass(Server.class)
|
||||||
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
public class ReactiveManagementContextAutoConfiguration {
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class JettyReactiveManagementContextAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public static ManagementContextFactory reactiveWebChildContextFactory() {
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class,
|
JettyReactiveWebServerAutoConfiguration.class);
|
||||||
EmbeddedWebServerFactoryCustomizerAutoConfiguration.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.server.Server;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Jetty-based
|
||||||
|
* servlet web endpoint infrastructure when a separate management context running on a
|
||||||
|
* different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Server.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@EnableConfigurationProperties(JettyManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class JettyServletManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
JettyAccessLogCustomizer jettyManagementAccessLogCustomizer(JettyManagementServerProperties properties) {
|
||||||
|
return new JettyAccessLogCustomizer(properties);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.server.Server;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.jetty.JettyServletWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.web.server.servlet.ServletWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for a Jetty-based servlet management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(Server.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class JettyServletManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory servletWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.SERVLET, ServletWebServerFactory.class,
|
||||||
|
JettyServletWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -15,6 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for embedded reactive and servlet web servers.
|
* Actuator Jetty web server support.
|
||||||
*/
|
*/
|
||||||
package org.springframework.boot.autoconfigure.web.embedded;
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.netty;
|
||||||
|
|
||||||
|
import reactor.netty.http.server.HttpServer;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Netty-based
|
||||||
|
* reactive web endpoint infrastructure when a separate management context running on a
|
||||||
|
* different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(HttpServer.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@EnableConfigurationProperties(ManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class NettyReactiveManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
|
NettyReactiveWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.netty;
|
||||||
|
|
||||||
|
import reactor.netty.http.server.HttpServer;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for a Netty-based reactive management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(HttpServer.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class NettyReactiveManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
|
NettyReactiveWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -15,6 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reactive web server abstractions.
|
* Actuator Netty web server support.
|
||||||
*/
|
*/
|
||||||
package org.springframework.boot.web.reactive.server;
|
package org.springframework.boot.actuate.autoconfigure.web.server.netty;
|
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import org.apache.catalina.Valve;
|
||||||
|
import org.apache.catalina.valves.AccessLogValve;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.AccessLogCustomizer;
|
||||||
|
import org.springframework.boot.tomcat.ConfigurableTomcatWebServerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link AccessLogCustomizer} for Tomcat.
|
||||||
|
*
|
||||||
|
* @param <T> the type of factory that can be customized
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class TomcatAccessLogCustomizer<T extends ConfigurableTomcatWebServerFactory> extends AccessLogCustomizer<T> {
|
||||||
|
|
||||||
|
private final Function<T, Collection<Valve>> engineValvesExtractor;
|
||||||
|
|
||||||
|
TomcatAccessLogCustomizer(TomcatManagementServerProperties properties,
|
||||||
|
Function<T, Collection<Valve>> engineValvesExtractor) {
|
||||||
|
super(properties.getAccesslog().getPrefix());
|
||||||
|
this.engineValvesExtractor = engineValvesExtractor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customize(T factory) {
|
||||||
|
AccessLogValve accessLogValve = findAccessLogValve(factory);
|
||||||
|
if (accessLogValve == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
accessLogValve.setPrefix(customizePrefix(accessLogValve.getPrefix()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccessLogValve findAccessLogValve(T factory) {
|
||||||
|
for (Valve engineValve : this.engineValvesExtractor.apply(factory)) {
|
||||||
|
if (engineValve instanceof AccessLogValve accessLogValve) {
|
||||||
|
return accessLogValve;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Properties for a Tomcat-based management server.
|
||||||
|
*
|
||||||
|
* @author Moritz Halbritter
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties("management.server.tomcat")
|
||||||
|
public class TomcatManagementServerProperties {
|
||||||
|
|
||||||
|
private final Accesslog accesslog = new Accesslog();
|
||||||
|
|
||||||
|
public Accesslog getAccesslog() {
|
||||||
|
return this.accesslog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Accesslog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Management log file name prefix.
|
||||||
|
*/
|
||||||
|
private String prefix = "management_";
|
||||||
|
|
||||||
|
public String getPrefix() {
|
||||||
|
return this.prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrefix(String prefix) {
|
||||||
|
this.prefix = prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.apache.catalina.startup.Tomcat;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.boot.tomcat.reactive.TomcatReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Tomcat-based
|
||||||
|
* reactive web endpoint infrastructure when a separate management context running on a
|
||||||
|
* different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Tomcat.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@EnableConfigurationProperties(TomcatManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class TomcatReactiveManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
TomcatAccessLogCustomizer<TomcatReactiveWebServerFactory> tomcatManagementAccessLogCustomizer(
|
||||||
|
TomcatManagementServerProperties properties) {
|
||||||
|
return new TomcatAccessLogCustomizer<>(properties, TomcatReactiveWebServerFactory::getEngineValves);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.apache.catalina.startup.Tomcat;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.tomcat.TomcatReactiveWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.tomcat.TomcatWebServerConfiguration;
|
||||||
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for a Tomcat-based reactive management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(Tomcat.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class TomcatReactiveManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
|
TomcatReactiveWebServerAutoConfiguration.class, TomcatWebServerConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.apache.catalina.startup.Tomcat;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Tomcat-based
|
||||||
|
* servlet web endpoint infrastructure when a separate management context running on a
|
||||||
|
* different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Tomcat.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@EnableConfigurationProperties(TomcatManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class TomcatServletManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
TomcatAccessLogCustomizer<TomcatServletWebServerFactory> tomcatManagementAccessLogCustomizer(
|
||||||
|
TomcatManagementServerProperties properties) {
|
||||||
|
return new TomcatAccessLogCustomizer<>(properties, TomcatServletWebServerFactory::getEngineValves);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.apache.catalina.startup.Tomcat;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.tomcat.TomcatWebServerConfiguration;
|
||||||
|
import org.springframework.boot.web.server.servlet.ServletWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for a Tomcat-based servlet management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(Tomcat.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class TomcatServletManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory servletWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.SERVLET, ServletWebServerFactory.class,
|
||||||
|
TomcatWebServerConfiguration.class, TomcatServletWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -15,6 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Auto-configuration for WebSocket support in reactive web servers.
|
* Actuator Tomcat web server support.
|
||||||
*/
|
*/
|
||||||
package org.springframework.boot.autoconfigure.websocket.reactive;
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.AccessLogCustomizer;
|
||||||
|
import org.springframework.boot.web.server.undertow.ConfigurableUndertowWebServerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link AccessLogCustomizer} for Undertow.
|
||||||
|
*
|
||||||
|
* @param <T> the type of factory that can be customized
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class UndertowAccessLogCustomizer<T extends ConfigurableUndertowWebServerFactory> extends AccessLogCustomizer<T> {
|
||||||
|
|
||||||
|
private final Function<T, String> accessLogPrefixExtractor;
|
||||||
|
|
||||||
|
UndertowAccessLogCustomizer(UndertowManagementServerProperties properties,
|
||||||
|
Function<T, String> accessLogPrefixExtractor) {
|
||||||
|
super(properties.getAccesslog().getPrefix());
|
||||||
|
this.accessLogPrefixExtractor = accessLogPrefixExtractor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customize(T factory) {
|
||||||
|
factory.setAccessLogPrefix(customizePrefix(this.accessLogPrefixExtractor.apply(factory)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Properties for an Undertow-based management server.
|
||||||
|
*
|
||||||
|
* @author Moritz Halbritter
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@ConfigurationProperties("management.server.undertow")
|
||||||
|
public class UndertowManagementServerProperties {
|
||||||
|
|
||||||
|
private final Accesslog accesslog = new Accesslog();
|
||||||
|
|
||||||
|
public Accesslog getAccesslog() {
|
||||||
|
return this.accesslog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Accesslog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Management log file name prefix.
|
||||||
|
*/
|
||||||
|
private String prefix = "management_";
|
||||||
|
|
||||||
|
public String getPrefix() {
|
||||||
|
return this.prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrefix(String prefix) {
|
||||||
|
this.prefix = prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import io.undertow.Undertow;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.undertow.UndertowReactiveWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
|
import org.springframework.boot.web.server.reactive.undertow.UndertowReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for
|
||||||
|
* Undertow-based reactive web endpoint infrastructure when a separate management context
|
||||||
|
* running on a different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Undertow.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@EnableConfigurationProperties(UndertowManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class UndertowReactiveManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
|
UndertowReactiveWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
UndertowAccessLogCustomizer<UndertowReactiveWebServerFactory> undertowManagementAccessLogCustomizer(
|
||||||
|
UndertowManagementServerProperties properties) {
|
||||||
|
return new UndertowAccessLogCustomizer<>(properties, UndertowReactiveWebServerFactory::getAccessLogPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import io.undertow.Undertow;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.undertow.UndertowReactiveWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for an Undertow-based reactive management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(Undertow.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.REACTIVE)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class UndertowReactiveManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory reactiveWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.REACTIVE, ReactiveWebServerFactory.class,
|
||||||
|
UndertowReactiveWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import io.undertow.Undertow;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.boot.web.server.servlet.undertow.UndertowServletWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for
|
||||||
|
* Undertow-based servlet web endpoint infrastructure when a separate management context
|
||||||
|
* running on a different port is required.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
@ConditionalOnClass(Undertow.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@EnableConfigurationProperties(UndertowManagementServerProperties.class)
|
||||||
|
@ManagementContextConfiguration(value = ManagementContextType.CHILD, proxyBeanMethods = false)
|
||||||
|
class UndertowServletManagementChildContextConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
UndertowAccessLogCustomizer<UndertowServletWebServerFactory> undertowManagementAccessLogCustomizer(
|
||||||
|
UndertowManagementServerProperties properties) {
|
||||||
|
return new UndertowAccessLogCustomizer<>(properties, UndertowServletWebServerFactory::getAccessLogPrefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import io.undertow.Undertow;
|
||||||
|
|
||||||
|
import org.springframework.boot.WebApplicationType;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.undertow.UndertowServletWebServerAutoConfiguration;
|
||||||
|
import org.springframework.boot.web.server.servlet.ServletWebServerFactory;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-configuration for an Undertow-based servlet management context.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
* @since 4.0.0
|
||||||
|
*/
|
||||||
|
@AutoConfiguration
|
||||||
|
@ConditionalOnClass(Undertow.class)
|
||||||
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
|
@ConditionalOnManagementPort(ManagementPortType.DIFFERENT)
|
||||||
|
public class UndertowServletManagementContextAutoConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
static ManagementContextFactory servletWebChildContextFactory() {
|
||||||
|
return new ManagementContextFactory(WebApplicationType.SERVLET, ServletWebServerFactory.class,
|
||||||
|
UndertowServletWebServerAutoConfiguration.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Actuator Undertow web server support.
|
||||||
|
*/
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
@ -16,15 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import jakarta.servlet.Filter;
|
import jakarta.servlet.Filter;
|
||||||
import org.apache.catalina.Valve;
|
|
||||||
import org.apache.catalina.valves.AccessLogValve;
|
|
||||||
import org.eclipse.jetty.server.CustomRequestLog;
|
|
||||||
import org.eclipse.jetty.server.RequestLog;
|
|
||||||
import org.eclipse.jetty.server.RequestLogWriter;
|
|
||||||
import org.eclipse.jetty.server.Server;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
import org.springframework.beans.factory.HierarchicalBeanFactory;
|
import org.springframework.beans.factory.HierarchicalBeanFactory;
|
||||||
@ -32,26 +24,17 @@ import org.springframework.beans.factory.ListableBeanFactory;
|
|||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextType;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementWebServerFactoryCustomizer;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
|
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
|
||||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
|
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
|
||||||
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
|
|
||||||
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
|
||||||
import org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean;
|
import org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean;
|
||||||
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.security.config.BeanIds;
|
import org.springframework.security.config.BeanIds;
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Servlet web
|
* {@link ManagementContextConfiguration @ManagementContextConfiguration} for Servlet web
|
||||||
@ -76,24 +59,6 @@ class ServletManagementChildContextConfiguration {
|
|||||||
return new ServletManagementWebServerFactoryCustomizer(beanFactory);
|
return new ServletManagementWebServerFactoryCustomizer(beanFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "io.undertow.Undertow")
|
|
||||||
UndertowAccessLogCustomizer undertowManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new UndertowAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "org.apache.catalina.valves.AccessLogValve")
|
|
||||||
TomcatAccessLogCustomizer tomcatManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new TomcatAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnClass(name = "org.eclipse.jetty.server.Server")
|
|
||||||
JettyAccessLogCustomizer jettyManagementAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
return new JettyAccessLogCustomizer(properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@ConditionalOnClass({ EnableWebSecurity.class, Filter.class })
|
@ConditionalOnClass({ EnableWebSecurity.class, Filter.class })
|
||||||
@ConditionalOnBean(name = BeanIds.SPRING_SECURITY_FILTER_CHAIN, search = SearchStrategy.ANCESTORS)
|
@ConditionalOnBean(name = BeanIds.SPRING_SECURITY_FILTER_CHAIN, search = SearchStrategy.ANCESTORS)
|
||||||
@ -114,130 +79,4 @@ class ServletManagementChildContextConfiguration {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ServletManagementWebServerFactoryCustomizer
|
|
||||||
extends ManagementWebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
|
|
||||||
|
|
||||||
ServletManagementWebServerFactoryCustomizer(ListableBeanFactory beanFactory) {
|
|
||||||
super(beanFactory);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void customize(ConfigurableServletWebServerFactory webServerFactory,
|
|
||||||
ManagementServerProperties managementServerProperties, ServerProperties serverProperties) {
|
|
||||||
super.customize(webServerFactory, managementServerProperties, serverProperties);
|
|
||||||
webServerFactory.setContextPath(getContextPath(managementServerProperties));
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getContextPath(ManagementServerProperties managementServerProperties) {
|
|
||||||
String basePath = managementServerProperties.getBasePath();
|
|
||||||
return StringUtils.hasText(basePath) ? basePath : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract static class AccessLogCustomizer implements Ordered {
|
|
||||||
|
|
||||||
private final String prefix;
|
|
||||||
|
|
||||||
AccessLogCustomizer(String prefix) {
|
|
||||||
this.prefix = prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String customizePrefix(String existingPrefix) {
|
|
||||||
if (this.prefix == null) {
|
|
||||||
return existingPrefix;
|
|
||||||
}
|
|
||||||
if (existingPrefix == null) {
|
|
||||||
return this.prefix;
|
|
||||||
}
|
|
||||||
if (existingPrefix.startsWith(this.prefix)) {
|
|
||||||
return existingPrefix;
|
|
||||||
}
|
|
||||||
return this.prefix + existingPrefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOrder() {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class TomcatAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
|
|
||||||
|
|
||||||
TomcatAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getTomcat().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(TomcatServletWebServerFactory factory) {
|
|
||||||
AccessLogValve accessLogValve = findAccessLogValve(factory);
|
|
||||||
if (accessLogValve == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
accessLogValve.setPrefix(customizePrefix(accessLogValve.getPrefix()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private AccessLogValve findAccessLogValve(TomcatServletWebServerFactory factory) {
|
|
||||||
for (Valve engineValve : factory.getEngineValves()) {
|
|
||||||
if (engineValve instanceof AccessLogValve accessLogValve) {
|
|
||||||
return accessLogValve;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class UndertowAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
|
|
||||||
|
|
||||||
UndertowAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getUndertow().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(UndertowServletWebServerFactory factory) {
|
|
||||||
factory.setAccessLogPrefix(customizePrefix(factory.getAccessLogPrefix()));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class JettyAccessLogCustomizer extends AccessLogCustomizer
|
|
||||||
implements WebServerFactoryCustomizer<JettyServletWebServerFactory> {
|
|
||||||
|
|
||||||
JettyAccessLogCustomizer(ManagementServerProperties properties) {
|
|
||||||
super(properties.getJetty().getAccesslog().getPrefix());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void customize(JettyServletWebServerFactory factory) {
|
|
||||||
factory.addServerCustomizers(this::customizeServer);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeServer(Server server) {
|
|
||||||
RequestLog requestLog = server.getRequestLog();
|
|
||||||
if (requestLog instanceof CustomRequestLog customRequestLog) {
|
|
||||||
customizeRequestLog(customRequestLog);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeRequestLog(CustomRequestLog requestLog) {
|
|
||||||
if (requestLog.getWriter() instanceof RequestLogWriter requestLogWriter) {
|
|
||||||
customizeRequestLogWriter(requestLogWriter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void customizeRequestLogWriter(RequestLogWriter writer) {
|
|
||||||
String filename = writer.getFileName();
|
|
||||||
if (StringUtils.hasLength(filename)) {
|
|
||||||
File file = new File(filename);
|
|
||||||
file = new File(file.getParentFile(), customizePrefix(file.getName()));
|
|
||||||
writer.setFilename(file.getPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,19 +18,14 @@ package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
|||||||
|
|
||||||
import jakarta.servlet.Servlet;
|
import jakarta.servlet.Servlet;
|
||||||
|
|
||||||
import org.springframework.boot.WebApplicationType;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.ManagementContextFactory;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
|
||||||
import org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.web.servlet.filter.ApplicationContextHeaderFilter;
|
import org.springframework.boot.web.servlet.filter.ApplicationContextHeaderFilter;
|
||||||
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@ -47,13 +42,6 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
@ConditionalOnWebApplication(type = Type.SERVLET)
|
@ConditionalOnWebApplication(type = Type.SERVLET)
|
||||||
public class ServletManagementContextAutoConfiguration {
|
public class ServletManagementContextAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
|
||||||
public static ManagementContextFactory servletWebChildContextFactory() {
|
|
||||||
return new ManagementContextFactory(WebApplicationType.SERVLET, ServletWebServerFactory.class,
|
|
||||||
ServletWebServerFactoryAutoConfiguration.class,
|
|
||||||
EmbeddedWebServerFactoryCustomizerAutoConfiguration.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ManagementServletContext managementServletContext(WebEndpointProperties properties) {
|
public ManagementServletContext managementServletContext(WebEndpointProperties properties) {
|
||||||
return properties::getBasePath;
|
return properties::getBasePath;
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.ListableBeanFactory;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementWebServerFactoryCustomizer;
|
||||||
|
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||||
|
import org.springframework.boot.web.server.servlet.ConfigurableServletWebServerFactory;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ManagementWebServerFactoryCustomizer} for a servlet web server.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class ServletManagementWebServerFactoryCustomizer
|
||||||
|
extends ManagementWebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
|
||||||
|
|
||||||
|
ServletManagementWebServerFactoryCustomizer(ListableBeanFactory beanFactory) {
|
||||||
|
super(beanFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void customize(ConfigurableServletWebServerFactory webServerFactory,
|
||||||
|
ManagementServerProperties managementServerProperties, ServerProperties serverProperties) {
|
||||||
|
super.customize(webServerFactory, managementServerProperties, serverProperties);
|
||||||
|
webServerFactory.setContextPath(getContextPath(managementServerProperties));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getContextPath(ManagementServerProperties managementServerProperties) {
|
||||||
|
String basePath = managementServerProperties.getBasePath();
|
||||||
|
return StringUtils.hasText(basePath) ? basePath : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2021 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -29,9 +29,9 @@ import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoC
|
|||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean;
|
||||||
import org.springframework.boot.web.server.ErrorPage;
|
import org.springframework.boot.web.server.ErrorPage;
|
||||||
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
|
||||||
|
import org.springframework.boot.web.server.servlet.ConfigurableServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.error.ErrorAttributes;
|
import org.springframework.boot.web.servlet.error.ErrorAttributes;
|
||||||
import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
|
import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
|
||||||
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.web.context.request.RequestContextListener;
|
import org.springframework.web.context.request.RequestContextListener;
|
||||||
|
@ -6,5 +6,11 @@ org.springframework.boot.actuate.autoconfigure.security.servlet.SecurityRequestM
|
|||||||
org.springframework.boot.actuate.autoconfigure.web.jersey.JerseySameManagementContextConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.jersey.JerseySameManagementContextConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.jersey.JerseyChildManagementContextConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.jersey.JerseyChildManagementContextConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementChildContextConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.jetty.JettyReactiveManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.jetty.JettyServletManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatReactiveManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.undertow.UndertowReactiveManagementChildContextConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.undertow.UndertowServletManagementChildContextConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementChildContextConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementChildContextConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.servlet.WebMvcEndpointChildContextConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.servlet.WebMvcEndpointChildContextConfiguration
|
||||||
|
@ -7,14 +7,18 @@ org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfigurat
|
|||||||
org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.cassandra.CassandraReactiveHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.cassandra.CassandraReactiveHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.cloudfoundry.servlet.CloudFoundryActuatorAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.cloudfoundry.reactive.ReactiveCloudFoundryActuatorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.cloudfoundry.reactive.ReactiveCloudFoundryActuatorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.cloudfoundry.servlet.CloudFoundryActuatorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.data.elasticsearch.ElasticsearchReactiveHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.data.elasticsearch.ElasticsearchReactiveHealthContributorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.data.mongo.MongoHealthContributorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.data.mongo.MongoReactiveHealthContributorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.data.redis.RedisHealthContributorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.data.redis.RedisReactiveHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticsearchRestHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticsearchRestHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration
|
||||||
@ -39,17 +43,9 @@ org.springframework.boot.actuate.autoconfigure.logging.otlp.OtlpLoggingAutoConfi
|
|||||||
org.springframework.boot.actuate.autoconfigure.mail.MailHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.mail.MailHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.KafkaMetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.Log4J2MetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration
|
||||||
@ -70,41 +66,45 @@ org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetri
|
|||||||
org.springframework.boot.actuate.autoconfigure.metrics.export.stackdriver.StackdriverMetricsExportAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.export.stackdriver.StackdriverMetricsExportAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront.WavefrontMetricsExportAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront.WavefrontMetricsExportAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.batch.BatchObservationAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.graphql.GraphQlObservationAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.integration.IntegrationMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.integration.IntegrationMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.jersey.JerseyServerMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.jersey.JerseyServerMetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.KafkaMetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.Log4J2MetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAspectsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.mongo.MongoMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.mongo.MongoMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.r2dbc.ConnectionPoolMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.r2dbc.ConnectionPoolMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.web.jetty.JettyMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.web.jetty.JettyMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.data.mongo.MongoHealthContributorAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.data.mongo.MongoReactiveHealthContributorAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.observation.batch.BatchObservationAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.observation.graphql.GraphQlObservationAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.opentelemetry.OpenTelemetryAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.opentelemetry.OpenTelemetryAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.quartz.QuartzEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.quartz.QuartzEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.r2dbc.ConnectionFactoryHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.r2dbc.ConnectionFactoryHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.r2dbc.R2dbcObservationAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.r2dbc.R2dbcObservationAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.data.redis.RedisHealthContributorAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.data.redis.RedisReactiveHealthContributorAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.security.reactive.ReactiveManagementWebSecurityAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.security.reactive.ReactiveManagementWebSecurityAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.session.SessionsEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.session.SessionsEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration
|
|
||||||
org.springframework.boot.actuate.autoconfigure.ssl.SslHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.ssl.SslHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.ssl.SslObservabilityAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.ssl.SslObservabilityAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration
|
||||||
@ -118,6 +118,12 @@ org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontAutoConfigurat
|
|||||||
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.server.jetty.JettyReactiveManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.jetty.JettyServletManagementContextAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.netty.NettyReactiveManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatReactiveManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.undertow.UndertowReactiveManagementContextAutoConfiguration
|
||||||
|
org.springframework.boot.actuate.autoconfigure.web.server.undertow.UndertowServletManagementContextAutoConfiguration
|
||||||
org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration
|
org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -45,8 +45,8 @@ import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
|
|||||||
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer;
|
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ContextConsumer;
|
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
@ -82,7 +82,7 @@ class CloudFoundryWebFluxEndpointIntegrationTests {
|
|||||||
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner(
|
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner(
|
||||||
AnnotationConfigReactiveWebServerApplicationContext::new)
|
AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class))
|
NettyReactiveWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(TestEndpointConfiguration.class)
|
.withUserConfiguration(TestEndpointConfiguration.class)
|
||||||
.withBean(ReactiveTokenValidator.class, () -> this.tokenValidator)
|
.withBean(ReactiveTokenValidator.class, () -> this.tokenValidator)
|
||||||
.withBean(ReactiveCloudFoundrySecurityService.class, () -> this.securityService)
|
.withBean(ReactiveCloudFoundrySecurityService.class, () -> this.securityService)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -44,7 +44,7 @@ import org.springframework.boot.actuate.endpoint.web.EndpointMediaTypes;
|
|||||||
import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
|
import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
|
||||||
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer;
|
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -22,7 +22,7 @@ import org.junit.jupiter.api.AfterEach;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.boot.testsupport.web.servlet.ExampleServlet;
|
import org.springframework.boot.testsupport.web.servlet.ExampleServlet;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.server.Ssl;
|
import org.springframework.boot.web.server.Ssl;
|
||||||
import org.springframework.boot.web.server.WebServer;
|
import org.springframework.boot.web.server.WebServer;
|
||||||
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
import org.springframework.boot.web.servlet.ServletRegistrationBean;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -324,6 +324,7 @@ class ConditionalOnAvailableEndpointTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({ "deprecation", "removal" })
|
||||||
@Endpoint(id = "disabledbutaccessible", enableByDefault = false)
|
@Endpoint(id = "disabledbutaccessible", enableByDefault = false)
|
||||||
static class DisabledButAccessibleEndpoint {
|
static class DisabledButAccessibleEndpoint {
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import org.springframework.boot.actuate.endpoint.Access;
|
|||||||
import org.springframework.boot.actuate.endpoint.EndpointAccessResolver;
|
import org.springframework.boot.actuate.endpoint.EndpointAccessResolver;
|
||||||
import org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar;
|
import org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar;
|
||||||
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
|
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -31,7 +31,7 @@ import org.springframework.boot.actuate.web.mappings.reactive.DispatcherHandlers
|
|||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
import org.springframework.boot.test.web.server.LocalServerPort;
|
import org.springframework.boot.test.web.server.LocalServerPort;
|
||||||
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
|
import org.springframework.boot.web.server.reactive.netty.NettyReactiveWebServerFactory;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -33,7 +33,7 @@ import org.springframework.boot.actuate.web.mappings.servlet.ServletsMappingDesc
|
|||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
import org.springframework.boot.test.web.server.LocalServerPort;
|
import org.springframework.boot.test.web.server.LocalServerPort;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -27,7 +27,7 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAu
|
|||||||
import org.springframework.boot.actuate.autoconfigure.web.jersey.JerseySameManagementContextConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.jersey.JerseySameManagementContextConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
@ -49,7 +49,7 @@ class JerseyWebEndpointIntegrationTests {
|
|||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(
|
.withConfiguration(
|
||||||
AutoConfigurations.of(JerseySameManagementContextConfiguration.class, JerseyAutoConfiguration.class,
|
AutoConfigurations.of(JerseySameManagementContextConfiguration.class, JerseyAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, EndpointAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, JerseyWebEndpointManagementContextConfiguration.class))
|
WebEndpointAutoConfiguration.class, JerseyWebEndpointManagementContextConfiguration.class))
|
||||||
.withUserConfiguration(ResourceConfigConfiguration.class)
|
.withUserConfiguration(ResourceConfigConfiguration.class)
|
||||||
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
||||||
|
@ -23,7 +23,6 @@ import org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfigurati
|
|||||||
import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpoint;
|
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpoint;
|
||||||
import org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint;
|
import org.springframework.boot.actuate.endpoint.web.annotation.RestControllerEndpoint;
|
||||||
@ -69,8 +68,7 @@ class ControllerEndpointWebFluxIntegrationTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ImportAutoConfiguration({ JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
@ImportAutoConfiguration({ JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class, AuditAutoConfiguration.class,
|
||||||
ReactiveManagementContextAutoConfiguration.class, AuditAutoConfiguration.class,
|
|
||||||
PropertyPlaceholderAutoConfiguration.class, WebFluxAutoConfiguration.class,
|
PropertyPlaceholderAutoConfiguration.class, WebFluxAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class })
|
ManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class })
|
||||||
static class DefaultConfiguration {
|
static class DefaultConfiguration {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -33,7 +33,7 @@ import org.springframework.boot.actuate.autoconfigure.web.server.ManagementConte
|
|||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
@ -58,7 +58,7 @@ class JerseyEndpointAccessIntegrationTests {
|
|||||||
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, JerseyAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, JerseyAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, ServletWebServerFactoryAutoConfiguration.class,
|
EndpointAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
BeansEndpointAutoConfiguration.class))
|
BeansEndpointAutoConfiguration.class))
|
||||||
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -34,7 +34,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations;
|
|||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
@ -152,7 +152,7 @@ class JerseyEndpointIntegrationTests {
|
|||||||
private Class<?>[] getAutoconfigurations(Class<?>... additional) {
|
private Class<?>[] getAutoconfigurations(Class<?>... additional) {
|
||||||
List<Class<?>> autoconfigurations = new ArrayList<>(Arrays.asList(JacksonAutoConfiguration.class,
|
List<Class<?>> autoconfigurations = new ArrayList<>(Arrays.asList(JacksonAutoConfiguration.class,
|
||||||
JerseyAutoConfiguration.class, EndpointAutoConfiguration.class,
|
JerseyAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class));
|
ManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class));
|
||||||
autoconfigurations.addAll(Arrays.asList(additional));
|
autoconfigurations.addAll(Arrays.asList(additional));
|
||||||
return autoconfigurations.toArray(new Class<?>[0]);
|
return autoconfigurations.toArray(new Class<?>[0]);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -21,11 +21,12 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAu
|
|||||||
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
@ -45,10 +46,11 @@ class JerseyHealthEndpointAdditionalPathIntegrationTests extends
|
|||||||
JerseyHealthEndpointAdditionalPathIntegrationTests() {
|
JerseyHealthEndpointAdditionalPathIntegrationTests() {
|
||||||
super(new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
super(new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, JerseyAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, JerseyAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, ServletWebServerFactoryAutoConfiguration.class,
|
EndpointAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, JerseyAutoConfiguration.class,
|
TomcatServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
JerseyAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class))
|
ServletManagementContextAutoConfiguration.class, HealthEndpointAutoConfiguration.class,
|
||||||
|
DiskSpaceHealthContributorAutoConfiguration.class))
|
||||||
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
||||||
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
.withClassLoader(new FilteredClassLoader(DispatcherServlet.class))
|
||||||
.withPropertyValues("server.port=0"));
|
.withPropertyValues("server.port=0"));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -22,14 +22,13 @@ import org.junit.jupiter.api.Test;
|
|||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
@ -53,10 +52,10 @@ class WebFluxEndpointAccessIntegrationTests {
|
|||||||
|
|
||||||
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner(
|
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner(
|
||||||
AnnotationConfigReactiveWebServerApplicationContext::new)
|
AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ReactiveWebServerFactoryAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(NettyReactiveWebServerAutoConfiguration.class,
|
||||||
HttpHandlerAutoConfiguration.class, JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
HttpHandlerAutoConfiguration.class, JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
||||||
WebFluxAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
WebFluxAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, ReactiveManagementContextAutoConfiguration.class))
|
ManagementContextAutoConfiguration.class))
|
||||||
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
||||||
.withUserConfiguration(CustomWebFluxEndpoint.class)
|
.withUserConfiguration(CustomWebFluxEndpoint.class)
|
||||||
.withPropertyValues("server.port:0");
|
.withPropertyValues("server.port:0");
|
||||||
|
@ -24,7 +24,6 @@ import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoCon
|
|||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
||||||
@ -50,7 +49,7 @@ class WebFluxEndpointCorsIntegrationTests {
|
|||||||
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
||||||
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
ReactiveManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class))
|
BeansEndpointAutoConfiguration.class))
|
||||||
.withPropertyValues("management.endpoints.web.exposure.include:*");
|
.withPropertyValues("management.endpoints.web.exposure.include:*");
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -23,7 +23,6 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
||||||
@ -49,7 +48,7 @@ class WebFluxEndpointIntegrationTests {
|
|||||||
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
|
||||||
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
ReactiveManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class))
|
BeansEndpointAutoConfiguration.class))
|
||||||
.withUserConfiguration(EndpointsConfiguration.class);
|
.withUserConfiguration(EndpointsConfiguration.class);
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -21,14 +21,14 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfi
|
|||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration;
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.netty.NettyReactiveManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;
|
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;
|
||||||
@ -49,8 +49,8 @@ class WebFluxHealthEndpointAdditionalPathIntegrationTests extends
|
|||||||
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class,
|
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class, ReactiveManagementContextAutoConfiguration.class,
|
NettyReactiveWebServerAutoConfiguration.class,
|
||||||
BeansEndpointAutoConfiguration.class))
|
NettyReactiveManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class))
|
||||||
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
||||||
.withPropertyValues("server.port=0"));
|
.withPropertyValues("server.port=0"));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -34,8 +34,8 @@ import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagem
|
|||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
@ -60,10 +60,10 @@ class WebMvcEndpointAccessIntegrationTests {
|
|||||||
|
|
||||||
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ServletWebServerFactoryAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(TomcatServletWebServerAutoConfiguration.class,
|
||||||
DispatcherServletAutoConfiguration.class, JacksonAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
||||||
HttpMessageConvertersAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
WebMvcAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
ManagementContextAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
||||||
HealthContributorAutoConfiguration.class))
|
HealthContributorAutoConfiguration.class))
|
||||||
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -37,8 +37,8 @@ import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeReposi
|
|||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
@ -65,13 +65,13 @@ class WebMvcEndpointExposureIntegrationTests {
|
|||||||
|
|
||||||
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ServletWebServerFactoryAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(TomcatServletWebServerAutoConfiguration.class,
|
||||||
DispatcherServletAutoConfiguration.class, JacksonAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
||||||
HttpMessageConvertersAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
WebMvcAutoConfiguration.class, EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
ManagementContextAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
ManagementContextAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
ServletManagementContextAutoConfiguration.class, HttpExchangesAutoConfiguration.class,
|
||||||
HttpExchangesAutoConfiguration.class, HealthContributorAutoConfiguration.class))
|
HealthContributorAutoConfiguration.class))
|
||||||
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
.withConfiguration(AutoConfigurations.of(EndpointAutoConfigurationClasses.ALL))
|
||||||
.withUserConfiguration(CustomMvcEndpoint.class, CustomServletEndpoint.class,
|
.withUserConfiguration(CustomMvcEndpoint.class, CustomServletEndpoint.class,
|
||||||
HttpExchangeRepositoryConfiguration.class, AuditEventRepositoryConfiguration.class)
|
HttpExchangeRepositoryConfiguration.class, AuditEventRepositoryConfiguration.class)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -21,12 +21,13 @@ import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAu
|
|||||||
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
@ -46,7 +47,8 @@ class WebMvcHealthEndpointAdditionalPathIntegrationTests extends
|
|||||||
super(new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
super(new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
|
||||||
HttpMessageConvertersAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
HttpMessageConvertersAutoConfiguration.class, ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||||
|
TomcatServletManagementContextAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
||||||
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
EndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
EndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
||||||
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class))
|
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -34,7 +34,7 @@ import org.springframework.boot.actuate.autoconfigure.observation.ObservationAut
|
|||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
import org.springframework.boot.autoconfigure.jersey.ResourceConfigCustomizer;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
@ -60,10 +60,10 @@ class JerseyServerMetricsAutoConfigurationTests {
|
|||||||
|
|
||||||
private final WebApplicationContextRunner webContextRunner = new WebApplicationContextRunner(
|
private final WebApplicationContextRunner webContextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(
|
.withConfiguration(AutoConfigurations.of(JerseyAutoConfiguration.class,
|
||||||
AutoConfigurations.of(JerseyAutoConfiguration.class, JerseyServerMetricsAutoConfiguration.class,
|
JerseyServerMetricsAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class,
|
||||||
ObservationAutoConfiguration.class, MetricsAutoConfiguration.class))
|
ObservationAutoConfiguration.class, MetricsAutoConfiguration.class))
|
||||||
.withUserConfiguration(ResourceConfiguration.class)
|
.withUserConfiguration(ResourceConfiguration.class)
|
||||||
.withPropertyValues("server.port:0");
|
.withPropertyValues("server.port:0");
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -50,8 +50,8 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
|||||||
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
@ -152,7 +152,8 @@ class MetricsIntegrationTests {
|
|||||||
WebFluxObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class,
|
WebFluxObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class,
|
||||||
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
||||||
RestTemplateAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
RestTemplateAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
||||||
DispatcherServletAutoConfiguration.class, ServletWebServerFactoryAutoConfiguration.class })
|
DispatcherServletAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||||
|
TomcatServletWebServerAutoConfiguration.class })
|
||||||
@Import(PersonController.class)
|
@Import(PersonController.class)
|
||||||
static class MetricsApp {
|
static class MetricsApp {
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -26,14 +26,14 @@ import org.springframework.boot.actuate.metrics.web.jetty.JettyConnectionMetrics
|
|||||||
import org.springframework.boot.actuate.metrics.web.jetty.JettyServerThreadPoolMetricsBinder;
|
import org.springframework.boot.actuate.metrics.web.jetty.JettyServerThreadPoolMetricsBinder;
|
||||||
import org.springframework.boot.actuate.metrics.web.jetty.JettySslHandshakeMetricsBinder;
|
import org.springframework.boot.actuate.metrics.web.jetty.JettySslHandshakeMetricsBinder;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.reactive.jetty.JettyReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.jetty.JettyServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyReactiveWebServerFactory;
|
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
|
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
|
import org.springframework.boot.web.server.reactive.jetty.JettyReactiveWebServerFactory;
|
||||||
|
import org.springframework.boot.web.server.servlet.jetty.JettyServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@ -55,7 +55,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresThreadPoolMetricsWithEmbeddedServletJetty() {
|
void autoConfiguresThreadPoolMetricsWithEmbeddedServletJetty() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
||||||
@ -69,7 +69,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresThreadPoolMetricsWithEmbeddedReactiveJetty() {
|
void autoConfiguresThreadPoolMetricsWithEmbeddedReactiveJetty() {
|
||||||
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class))
|
JettyReactiveWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
||||||
@ -90,7 +90,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresConnectionMetricsWithEmbeddedServletJetty() {
|
void autoConfiguresConnectionMetricsWithEmbeddedServletJetty() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
||||||
@ -104,7 +104,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresConnectionMetricsWithEmbeddedReactiveJetty() {
|
void autoConfiguresConnectionMetricsWithEmbeddedReactiveJetty() {
|
||||||
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class))
|
JettyReactiveWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
context.publishEvent(createApplicationStartedEvent(context.getSourceApplicationContext()));
|
||||||
@ -117,7 +117,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void allowsCustomJettyConnectionMetricsBinderToBeUsed() {
|
void allowsCustomJettyConnectionMetricsBinderToBeUsed() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, CustomJettyConnectionMetricsBinder.class,
|
.withUserConfiguration(ServletWebServerConfiguration.class, CustomJettyConnectionMetricsBinder.class,
|
||||||
MeterRegistryConfiguration.class)
|
MeterRegistryConfiguration.class)
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
@ -135,7 +135,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresSslHandshakeMetricsWithEmbeddedServletJetty() {
|
void autoConfiguresSslHandshakeMetricsWithEmbeddedServletJetty() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
||||||
"server.ssl.key-store-password: secret", "server.ssl.key-password: password")
|
"server.ssl.key-store-password: secret", "server.ssl.key-password: password")
|
||||||
@ -151,7 +151,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void autoConfiguresSslHandshakeMetricsWithEmbeddedReactiveJetty() {
|
void autoConfiguresSslHandshakeMetricsWithEmbeddedReactiveJetty() {
|
||||||
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class))
|
JettyReactiveWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
||||||
"server.ssl.key-store-password: secret", "server.ssl.key-password: password")
|
"server.ssl.key-store-password: secret", "server.ssl.key-password: password")
|
||||||
@ -166,7 +166,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void allowsCustomJettySslHandshakeMetricsBinderToBeUsed() {
|
void allowsCustomJettySslHandshakeMetricsBinderToBeUsed() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, CustomJettySslHandshakeMetricsBinder.class,
|
.withUserConfiguration(ServletWebServerConfiguration.class, CustomJettySslHandshakeMetricsBinder.class,
|
||||||
MeterRegistryConfiguration.class)
|
MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
.withPropertyValues("server.ssl.enabled: true", "server.ssl.key-store: src/test/resources/test.jks",
|
||||||
@ -192,7 +192,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void doesNotAutoConfigureSslHandshakeMetricsWhenSslEnabledPropertyNotSpecified() {
|
void doesNotAutoConfigureSslHandshakeMetricsWhenSslEnabledPropertyNotSpecified() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.run((context) -> assertThat(context).doesNotHaveBean(JettySslHandshakeMetricsBinder.class));
|
.run((context) -> assertThat(context).doesNotHaveBean(JettySslHandshakeMetricsBinder.class));
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ class JettyMetricsAutoConfigurationTests {
|
|||||||
void doesNotAutoConfigureSslHandshakeMetricsWhenSslEnabledPropertySetToFalse() {
|
void doesNotAutoConfigureSslHandshakeMetricsWhenSslEnabledPropertySetToFalse() {
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JettyMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
JettyServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.ssl.enabled: false")
|
.withPropertyValues("server.ssl.enabled: false")
|
||||||
.run((context) -> assertThat(context).doesNotHaveBean(JettySslHandshakeMetricsBinder.class));
|
.run((context) -> assertThat(context).doesNotHaveBean(JettySslHandshakeMetricsBinder.class));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -28,14 +28,14 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.actuate.metrics.web.tomcat.TomcatMetricsBinder;
|
import org.springframework.boot.actuate.metrics.web.tomcat.TomcatMetricsBinder;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.reactive.tomcat.TomcatReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatReactiveWebServerFactory;
|
import org.springframework.boot.tomcat.TomcatWebServer;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.reactive.TomcatReactiveWebServerFactory;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
@ -59,7 +59,7 @@ class TomcatMetricsAutoConfigurationTests {
|
|||||||
resetTomcatState();
|
resetTomcatState();
|
||||||
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
new WebApplicationContextRunner(AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(TomcatMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(TomcatMetricsAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class))
|
TomcatServletWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ServletWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.tomcat.mbeanregistry.enabled=true")
|
.withPropertyValues("server.tomcat.mbeanregistry.enabled=true")
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
@ -76,7 +76,7 @@ class TomcatMetricsAutoConfigurationTests {
|
|||||||
resetTomcatState();
|
resetTomcatState();
|
||||||
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(TomcatMetricsAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(TomcatMetricsAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class))
|
TomcatReactiveWebServerAutoConfiguration.class))
|
||||||
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
.withUserConfiguration(ReactiveWebServerConfiguration.class, MeterRegistryConfiguration.class)
|
||||||
.withPropertyValues("server.tomcat.mbeanregistry.enabled=true")
|
.withPropertyValues("server.tomcat.mbeanregistry.enabled=true")
|
||||||
.run((context) -> {
|
.run((context) -> {
|
||||||
|
@ -38,7 +38,7 @@ import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfigurat
|
|||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatReactiveWebServerFactory;
|
import org.springframework.boot.tomcat.reactive.TomcatReactiveWebServerFactory;
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -25,7 +25,7 @@ import org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration;
|
|||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -25,7 +25,7 @@ import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoC
|
|||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -19,8 +19,8 @@ package org.springframework.boot.actuate.autoconfigure.security.servlet;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
|
@ -21,7 +21,7 @@ import org.glassfish.jersey.servlet.ServletContainer;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
|
@ -21,8 +21,8 @@ import org.glassfish.jersey.servlet.ServletContainer;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DefaultJerseyApplicationPath;
|
import org.springframework.boot.autoconfigure.jersey.DefaultJerseyApplicationPath;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.JerseyApplicationPath;
|
import org.springframework.boot.autoconfigure.jersey.JerseyApplicationPath;
|
||||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
|
@ -32,20 +32,21 @@ import org.junit.jupiter.api.io.TempDir;
|
|||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatReactiveManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
|
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.reactive.tomcat.TomcatReactiveWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.convert.ApplicationConversionService;
|
import org.springframework.boot.convert.ApplicationConversionService;
|
||||||
import org.springframework.boot.env.ConfigTreePropertySource;
|
import org.springframework.boot.env.ConfigTreePropertySource;
|
||||||
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.test.context.runner.ContextConsumer;
|
import org.springframework.boot.test.context.runner.ContextConsumer;
|
||||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||||
|
import org.springframework.boot.tomcat.TomcatWebServer;
|
||||||
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;
|
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;
|
||||||
import org.springframework.boot.web.context.WebServerInitializedEvent;
|
import org.springframework.boot.web.context.WebServerInitializedEvent;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer;
|
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
import org.springframework.boot.web.server.WebServer;
|
import org.springframework.boot.web.server.WebServer;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
@ -69,7 +70,7 @@ class ReactiveManagementChildContextConfigurationIntegrationTests {
|
|||||||
private final ReactiveWebApplicationContextRunner runner = new ReactiveWebApplicationContextRunner(
|
private final ReactiveWebApplicationContextRunner runner = new ReactiveWebApplicationContextRunner(
|
||||||
AnnotationConfigReactiveWebServerApplicationContext::new)
|
AnnotationConfigReactiveWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ReactiveWebServerFactoryAutoConfiguration.class, ReactiveManagementContextAutoConfiguration.class,
|
TomcatReactiveWebServerAutoConfiguration.class, TomcatReactiveManagementContextAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class, HttpHandlerAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class, HttpHandlerAutoConfiguration.class,
|
||||||
WebFluxAutoConfiguration.class))
|
WebFluxAutoConfiguration.class))
|
||||||
.withUserConfiguration(SucceedingEndpoint.class)
|
.withUserConfiguration(SucceedingEndpoint.class)
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2025 the original author or authors.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.reactive;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementChildContextConfiguration.AccessLogCustomizer;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link ReactiveManagementChildContextConfiguration}.
|
|
||||||
*
|
|
||||||
* @author Moritz Halbritter
|
|
||||||
*/
|
|
||||||
class ReactiveManagementChildContextConfigurationTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void accessLogCustomizer() {
|
|
||||||
AccessLogCustomizer customizer = new AccessLogCustomizer("prefix") {
|
|
||||||
};
|
|
||||||
assertThat(customizer.customizePrefix(null)).isEqualTo("prefix");
|
|
||||||
assertThat(customizer.customizePrefix("existing")).isEqualTo("prefixexisting");
|
|
||||||
assertThat(customizer.customizePrefix("prefixexisting")).isEqualTo("prefixexisting");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void accessLogCustomizerWithNullPrefix() {
|
|
||||||
AccessLogCustomizer customizer = new AccessLogCustomizer(null) {
|
|
||||||
};
|
|
||||||
assertThat(customizer.customizePrefix(null)).isEqualTo(null);
|
|
||||||
assertThat(customizer.customizePrefix("existing")).isEqualTo("existing");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -25,9 +25,10 @@ import org.springframework.aot.AotDetector;
|
|||||||
import org.springframework.aot.test.generate.TestGenerationContext;
|
import org.springframework.aot.test.generate.TestGenerationContext;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.test.system.CapturedOutput;
|
import org.springframework.boot.test.system.CapturedOutput;
|
||||||
import org.springframework.boot.test.system.OutputCaptureExtension;
|
import org.springframework.boot.test.system.OutputCaptureExtension;
|
||||||
@ -50,8 +51,8 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
*/
|
*/
|
||||||
@ExtendWith(OutputCaptureExtension.class)
|
|
||||||
@DirtiesUrlFactories
|
@DirtiesUrlFactories
|
||||||
|
@ExtendWith(OutputCaptureExtension.class)
|
||||||
class ChildManagementContextInitializerAotTests {
|
class ChildManagementContextInitializerAotTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -61,8 +62,10 @@ class ChildManagementContextInitializerAotTests {
|
|||||||
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class));
|
TomcatServletManagementContextAutoConfiguration.class,
|
||||||
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
|
EndpointAutoConfiguration.class));
|
||||||
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").prepare((context) -> {
|
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").prepare((context) -> {
|
||||||
TestGenerationContext generationContext = new TestGenerationContext(TestTarget.class);
|
TestGenerationContext generationContext = new TestGenerationContext(TestTarget.class);
|
||||||
ClassName className = new ApplicationContextAotGenerator().processAheadOfTime(
|
ClassName className = new ApplicationContextAotGenerator().processAheadOfTime(
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -23,10 +23,11 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
|||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.test.system.CapturedOutput;
|
import org.springframework.boot.test.system.CapturedOutput;
|
||||||
import org.springframework.boot.test.system.OutputCaptureExtension;
|
import org.springframework.boot.test.system.OutputCaptureExtension;
|
||||||
@ -49,8 +50,10 @@ class ManagementContextAutoConfigurationTests {
|
|||||||
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class));
|
TomcatServletManagementContextAutoConfiguration.class,
|
||||||
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
|
EndpointAutoConfiguration.class));
|
||||||
contextRunner.withPropertyValues("server.port=0", "management.server.port=0")
|
contextRunner.withPropertyValues("server.port=0", "management.server.port=0")
|
||||||
.run((context) -> assertThat(output).satisfies(numberOfOccurrences("Tomcat started on port", 2)));
|
.run((context) -> assertThat(output).satisfies(numberOfOccurrences("Tomcat started on port", 2)));
|
||||||
}
|
}
|
||||||
@ -59,8 +62,10 @@ class ManagementContextAutoConfigurationTests {
|
|||||||
void childManagementContextShouldNotStartWithoutEmbeddedServer(CapturedOutput output) {
|
void childManagementContextShouldNotStartWithoutEmbeddedServer(CapturedOutput output) {
|
||||||
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
|
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class));
|
TomcatServletManagementContextAutoConfiguration.class,
|
||||||
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
|
EndpointAutoConfiguration.class));
|
||||||
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").run((context) -> {
|
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").run((context) -> {
|
||||||
assertThat(context).hasNotFailed();
|
assertThat(context).hasNotFailed();
|
||||||
assertThat(output).doesNotContain("Tomcat started");
|
assertThat(output).doesNotContain("Tomcat started");
|
||||||
@ -72,8 +77,10 @@ class ManagementContextAutoConfigurationTests {
|
|||||||
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class));
|
TomcatServletManagementContextAutoConfiguration.class,
|
||||||
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
|
EndpointAutoConfiguration.class));
|
||||||
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").run((context) -> {
|
contextRunner.withPropertyValues("server.port=0", "management.server.port=0").run((context) -> {
|
||||||
assertThat(output).satisfies(numberOfOccurrences("Tomcat started on port", 2));
|
assertThat(output).satisfies(numberOfOccurrences("Tomcat started on port", 2));
|
||||||
context.getSourceApplicationContext().stop();
|
context.getSourceApplicationContext().stop();
|
||||||
@ -87,7 +94,7 @@ class ManagementContextAutoConfigurationTests {
|
|||||||
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
WebApplicationContextRunner contextRunner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class,
|
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class,
|
||||||
DispatcherServletAutoConfiguration.class));
|
DispatcherServletAutoConfiguration.class));
|
||||||
contextRunner.withPropertyValues("server.port=0", "management.server.address=127.0.0.1")
|
contextRunner.withPropertyValues("server.port=0", "management.server.address=127.0.0.1")
|
||||||
|
@ -69,12 +69,4 @@ class ManagementServerPropertiesTests {
|
|||||||
assertThat(properties.getBasePath()).isEmpty();
|
assertThat(properties.getBasePath()).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void accessLogsArePrefixedByDefault() {
|
|
||||||
ManagementServerProperties properties = new ManagementServerProperties();
|
|
||||||
assertThat(properties.getTomcat().getAccesslog().getPrefix()).isEqualTo("management_");
|
|
||||||
assertThat(properties.getJetty().getAccesslog().getPrefix()).isEqualTo("management_");
|
|
||||||
assertThat(properties.getUndertow().getAccesslog().getPrefix()).isEqualTo("management_");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -14,23 +14,23 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.boot.web.servlet.server;
|
package org.springframework.boot.actuate.autoconfigure.web.server.jetty;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link Session}.
|
* Tests for {@link JettyManagementServerProperties}.
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Andy Wilkinson
|
||||||
*/
|
*/
|
||||||
class SessionTests {
|
class JettyManagementServerPropertiesTests {
|
||||||
|
|
||||||
@Test // gh-38589
|
@Test
|
||||||
void getCookieIsBinaryBackCompatible() throws Exception {
|
void accessLogsArePrefixedByDefault() {
|
||||||
Class<?> returnType = Session.class.getDeclaredMethod("getCookie").getReturnType();
|
JettyManagementServerProperties properties = new JettyManagementServerProperties();
|
||||||
assertThat(returnType.getName()).isEqualTo("org.springframework.boot.web.servlet.server.Session$Cookie");
|
assertThat(properties.getAccesslog().getPrefix()).isEqualTo("management_");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.tomcat;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link TomcatManagementServerProperties}.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class TomcatManagementServerPropertiesTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void accessLogsArePrefixedByDefault() {
|
||||||
|
TomcatManagementServerProperties properties = new TomcatManagementServerProperties();
|
||||||
|
assertThat(properties.getAccesslog().getPrefix()).isEqualTo("management_");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2025 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.actuate.autoconfigure.web.server.undertow;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link UndertowManagementServerProperties}.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
class UndertowManagementServerPropertiesTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void accessLogsArePrefixedByDefault() {
|
||||||
|
UndertowManagementServerProperties properties = new UndertowManagementServerProperties();
|
||||||
|
assertThat(properties.getAccesslog().getPrefix()).isEqualTo("management_");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,16 +16,19 @@
|
|||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
import jakarta.servlet.ServletContext;
|
import jakarta.servlet.ServletContext;
|
||||||
|
|
||||||
import org.springframework.boot.testsupport.web.servlet.MockServletWebServer.RegisteredFilter;
|
import org.springframework.boot.testsupport.web.servlet.MockServletWebServer.RegisteredFilter;
|
||||||
import org.springframework.boot.testsupport.web.servlet.MockServletWebServer.RegisteredServlet;
|
import org.springframework.boot.testsupport.web.servlet.MockServletWebServer.RegisteredServlet;
|
||||||
|
import org.springframework.boot.web.server.AbstractConfigurableWebServerFactory;
|
||||||
import org.springframework.boot.web.server.WebServer;
|
import org.springframework.boot.web.server.WebServer;
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
import org.springframework.boot.web.server.servlet.ConfigurableServletWebServerFactory;
|
||||||
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory;
|
import org.springframework.boot.web.server.servlet.ServletContextInitializer;
|
||||||
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
|
import org.springframework.boot.web.server.servlet.ServletContextInitializers;
|
||||||
|
import org.springframework.boot.web.server.servlet.ServletWebServerFactory;
|
||||||
|
import org.springframework.boot.web.server.servlet.ServletWebServerSettings;
|
||||||
|
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
@ -35,13 +38,17 @@ import static org.mockito.Mockito.spy;
|
|||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
*/
|
*/
|
||||||
public class MockServletWebServerFactory extends AbstractServletWebServerFactory {
|
public class MockServletWebServerFactory extends AbstractConfigurableWebServerFactory
|
||||||
|
implements ConfigurableServletWebServerFactory {
|
||||||
|
|
||||||
|
private final ServletWebServerSettings settings = new ServletWebServerSettings();
|
||||||
|
|
||||||
private MockServletWebServer webServer;
|
private MockServletWebServer webServer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WebServer getWebServer(ServletContextInitializer... initializers) {
|
public WebServer getWebServer(ServletContextInitializer... initializers) {
|
||||||
this.webServer = spy(new MockServletWebServer(mergeInitializers(initializers), getPort()));
|
this.webServer = spy(
|
||||||
|
new MockServletWebServer(ServletContextInitializers.from(this.settings, initializers), getPort()));
|
||||||
return this.webServer;
|
return this.webServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,11 +68,16 @@ public class MockServletWebServerFactory extends AbstractServletWebServerFactory
|
|||||||
return (getWebServer() != null) ? getWebServer().getRegisteredFilters(index) : null;
|
return (getWebServer() != null) ? getWebServer().getRegisteredFilters(index) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServletWebServerSettings getSettings() {
|
||||||
|
return this.settings;
|
||||||
|
}
|
||||||
|
|
||||||
static class MockServletWebServer extends org.springframework.boot.testsupport.web.servlet.MockServletWebServer
|
static class MockServletWebServer extends org.springframework.boot.testsupport.web.servlet.MockServletWebServer
|
||||||
implements WebServer {
|
implements WebServer {
|
||||||
|
|
||||||
MockServletWebServer(ServletContextInitializer[] initializers, int port) {
|
MockServletWebServer(Iterable<ServletContextInitializer> initializers, int port) {
|
||||||
super(Arrays.stream(initializers)
|
super(StreamSupport.stream(initializers.spliterator(), false)
|
||||||
.map((initializer) -> (Initializer) initializer::onStartup)
|
.map((initializer) -> (Initializer) initializer::onStartup)
|
||||||
.toArray(Initializer[]::new), port);
|
.toArray(Initializer[]::new), port);
|
||||||
}
|
}
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2012-2025 the original author or authors.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.web.servlet;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementChildContextConfiguration.AccessLogCustomizer;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link ServletManagementChildContextConfiguration}.
|
|
||||||
*
|
|
||||||
* @author Moritz Halbritter
|
|
||||||
*/
|
|
||||||
class ServletManagementChildContextConfigurationTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void accessLogCustomizer() {
|
|
||||||
AccessLogCustomizer customizer = new AccessLogCustomizer("prefix") {
|
|
||||||
};
|
|
||||||
assertThat(customizer.customizePrefix(null)).isEqualTo("prefix");
|
|
||||||
assertThat(customizer.customizePrefix("existing")).isEqualTo("prefixexisting");
|
|
||||||
assertThat(customizer.customizePrefix("prefixexisting")).isEqualTo("prefixexisting");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void accessLogCustomizerWithNullPrefix() {
|
|
||||||
AccessLogCustomizer customizer = new AccessLogCustomizer(null) {
|
|
||||||
};
|
|
||||||
assertThat(customizer.customizePrefix(null)).isEqualTo(null);
|
|
||||||
assertThat(customizer.customizePrefix("existing")).isEqualTo("existing");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2024 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -34,11 +34,12 @@ import reactor.core.publisher.Mono;
|
|||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.web.server.tomcat.TomcatServletManagementContextAutoConfiguration;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
|
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.web.server.servlet.tomcat.TomcatServletWebServerAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
|
||||||
import org.springframework.boot.convert.ApplicationConversionService;
|
import org.springframework.boot.convert.ApplicationConversionService;
|
||||||
import org.springframework.boot.env.ConfigTreePropertySource;
|
import org.springframework.boot.env.ConfigTreePropertySource;
|
||||||
@ -72,9 +73,10 @@ class WebMvcEndpointChildContextConfigurationIntegrationTests {
|
|||||||
private final WebApplicationContextRunner runner = new WebApplicationContextRunner(
|
private final WebApplicationContextRunner runner = new WebApplicationContextRunner(
|
||||||
AnnotationConfigServletWebServerApplicationContext::new)
|
AnnotationConfigServletWebServerApplicationContext::new)
|
||||||
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(ManagementContextAutoConfiguration.class,
|
||||||
ServletWebServerFactoryAutoConfiguration.class, ServletManagementContextAutoConfiguration.class,
|
TomcatServletWebServerAutoConfiguration.class, TomcatServletManagementContextAutoConfiguration.class,
|
||||||
WebEndpointAutoConfiguration.class, EndpointAutoConfiguration.class,
|
ServletManagementContextAutoConfiguration.class, WebEndpointAutoConfiguration.class,
|
||||||
DispatcherServletAutoConfiguration.class, ErrorMvcAutoConfiguration.class))
|
EndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
||||||
|
ErrorMvcAutoConfiguration.class))
|
||||||
.withUserConfiguration(SucceedingEndpoint.class, FailingEndpoint.class, FailingControllerEndpoint.class)
|
.withUserConfiguration(SucceedingEndpoint.class, FailingEndpoint.class, FailingControllerEndpoint.class)
|
||||||
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
.withInitializer(new ServerPortInfoApplicationContextInitializer())
|
||||||
.withPropertyValues("server.port=0", "management.server.port=0", "management.endpoints.web.exposure.include=*",
|
.withPropertyValues("server.port=0", "management.server.port=0", "management.endpoints.web.exposure.include=*",
|
||||||
|
@ -9,9 +9,9 @@ plugins {
|
|||||||
description = "Spring Boot Actuator"
|
description = "Spring Boot Actuator"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":spring-boot-project:spring-boot"))
|
api(project(":spring-boot-project:spring-boot-all"))
|
||||||
|
|
||||||
dockerTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure"))
|
dockerTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all"))
|
||||||
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
|
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
|
||||||
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
|
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
|
||||||
dockerTestImplementation("com.redis:testcontainers-redis")
|
dockerTestImplementation("com.redis:testcontainers-redis")
|
||||||
@ -23,6 +23,7 @@ dependencies {
|
|||||||
dockerTestImplementation("org.testcontainers:neo4j")
|
dockerTestImplementation("org.testcontainers:neo4j")
|
||||||
dockerTestImplementation("org.testcontainers:testcontainers")
|
dockerTestImplementation("org.testcontainers:testcontainers")
|
||||||
|
|
||||||
|
optional(project(":spring-boot-project:spring-boot-tomcat"))
|
||||||
optional("org.apache.cassandra:java-driver-core") {
|
optional("org.apache.cassandra:java-driver-core") {
|
||||||
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
||||||
}
|
}
|
||||||
@ -93,7 +94,7 @@ dependencies {
|
|||||||
|
|
||||||
testImplementation(project(":spring-boot-project:spring-boot-test"))
|
testImplementation(project(":spring-boot-project:spring-boot-test"))
|
||||||
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
|
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
|
||||||
testImplementation(project(":spring-boot-project:spring-boot-autoconfigure"))
|
testImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all"))
|
||||||
testImplementation("org.assertj:assertj-core")
|
testImplementation("org.assertj:assertj-core")
|
||||||
testImplementation("com.jayway.jsonpath:json-path")
|
testImplementation("com.jayway.jsonpath:json-path")
|
||||||
testImplementation("io.micrometer:micrometer-observation-test")
|
testImplementation("io.micrometer:micrometer-observation-test")
|
||||||
|
@ -37,7 +37,7 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
|
|
||||||
import org.springframework.boot.actuate.endpoint.Access;
|
import org.springframework.boot.actuate.endpoint.Access;
|
||||||
import org.springframework.boot.actuate.endpoint.EndpointAccessResolver;
|
import org.springframework.boot.actuate.endpoint.EndpointAccessResolver;
|
||||||
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
import org.springframework.boot.web.server.servlet.ServletContextInitializer;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2022 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -20,8 +20,8 @@ import org.eclipse.jetty.server.Server;
|
|||||||
|
|
||||||
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
import org.springframework.boot.web.context.WebServerApplicationContext;
|
import org.springframework.boot.web.context.WebServerApplicationContext;
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyWebServer;
|
|
||||||
import org.springframework.boot.web.server.WebServer;
|
import org.springframework.boot.web.server.WebServer;
|
||||||
|
import org.springframework.boot.web.server.jetty.JettyWebServer;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2022 the original author or authors.
|
* Copyright 2012-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -27,8 +27,8 @@ import org.apache.catalina.Manager;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
import org.springframework.boot.context.event.ApplicationStartedEvent;
|
||||||
|
import org.springframework.boot.tomcat.TomcatWebServer;
|
||||||
import org.springframework.boot.web.context.WebServerApplicationContext;
|
import org.springframework.boot.web.context.WebServerApplicationContext;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer;
|
|
||||||
import org.springframework.boot.web.server.WebServer;
|
import org.springframework.boot.web.server.WebServer;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user