diff --git a/apache-libraries-2/pom.xml b/apache-libraries-2/pom.xml
index d188204208..2e7ef0344c 100644
--- a/apache-libraries-2/pom.xml
+++ b/apache-libraries-2/pom.xml
@@ -19,10 +19,29 @@
validation-api
${javax.validation.validation-api.version}
+
+ org.apache.camel
+ camel-core
+ ${camel.version}
+
+
+
+ org.apache.camel
+ camel-test-junit5
+ ${camel.version}
+ test
+
+
+
+ org.apache.camel
+ camel-main
+ ${camel.version}
+
2.0.1.Final
+ 4.3.0
\ No newline at end of file
diff --git a/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterBean.java b/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterBean.java
new file mode 100644
index 0000000000..a28c3959a4
--- /dev/null
+++ b/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterBean.java
@@ -0,0 +1,29 @@
+package com.baeldung.dynamicrouter;
+
+import org.apache.camel.ExchangeProperties;
+
+import java.util.Map;
+
+public class DynamicRouterBean {
+ public String route(String body, @ExchangeProperties Map properties) {
+ int invoked = (int) properties.getOrDefault("invoked", 0) + 1;
+
+ properties.put("invoked", invoked);
+
+ if (invoked == 1) {
+ switch (body.toLowerCase()) {
+ case "mock":
+ return "mock:dynamicRouter";
+ case "direct":
+ return "mock:directDynamicRouter";
+ case "seda":
+ return "mock:sedaDynamicRouter";
+ case "file":
+ return "mock:fileDynamicRouter";
+ default:
+ break;
+ }
+ }
+ return null;
+ }
+}
diff --git a/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterRoute.java b/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterRoute.java
new file mode 100644
index 0000000000..875263f0b1
--- /dev/null
+++ b/apache-libraries-2/src/main/java/com/baeldung/dynamicrouter/DynamicRouterRoute.java
@@ -0,0 +1,13 @@
+package com.baeldung.dynamicrouter;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class DynamicRouterRoute extends RouteBuilder {
+
+ @Override
+ public void configure() {
+
+ from("direct:dynamicRouter").dynamicRouter(method(DynamicRouterBean.class, "route"));
+
+ }
+}
diff --git a/apache-libraries-2/src/test/java/dynamicrouter/DynamicRouterRouteUnitTest.java b/apache-libraries-2/src/test/java/dynamicrouter/DynamicRouterRouteUnitTest.java
new file mode 100644
index 0000000000..6401fa4be2
--- /dev/null
+++ b/apache-libraries-2/src/test/java/dynamicrouter/DynamicRouterRouteUnitTest.java
@@ -0,0 +1,61 @@
+package dynamicrouter;
+
+import com.baeldung.dynamicrouter.DynamicRouterRoute;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+public class DynamicRouterRouteUnitTest extends CamelTestSupport {
+
+ @Override
+ protected RoutesBuilder createRouteBuilder() {
+ return new DynamicRouterRoute();
+ }
+
+ @Test
+ void givenDynamicRouter_whenMockEndpointExpectedMessageCountOneAndMockAsMessageBody_thenMessageSentToDynamicRouter() throws InterruptedException {
+
+ MockEndpoint mockDynamicEndpoint = getMockEndpoint("mock:dynamicRouter");
+ mockDynamicEndpoint.expectedMessageCount(1);
+
+ template.send("direct:dynamicRouter", exchange -> exchange.getIn()
+ .setBody("mock"));
+ MockEndpoint.assertIsSatisfied(context);
+ }
+
+ @Test
+ void givenDynamicRouter_whenMockEndpointExpectedMessageCountOneAndDirectAsMessageBody_thenMessageSentToDynamicRouter() throws InterruptedException {
+
+ MockEndpoint mockDynamicEndpoint = context.getEndpoint("mock:directDynamicRouter", MockEndpoint.class);
+ mockDynamicEndpoint.expectedMessageCount(1);
+
+ template.send("direct:dynamicRouter", exchange -> exchange.getIn()
+ .setBody("direct"));
+
+ MockEndpoint.assertIsSatisfied(context);
+ }
+
+ @Test
+ void givenDynamicRouter_whenMockEndpointExpectedMessageCountOneAndSedaAsMessageBody_thenMessageSentToDynamicRouter() throws InterruptedException {
+
+ MockEndpoint mockDynamicEndpoint = context.getEndpoint("mock:sedaDynamicRouter", MockEndpoint.class);
+ mockDynamicEndpoint.expectedMessageCount(1);
+
+ template.send("direct:dynamicRouter", exchange -> exchange.getIn()
+ .setBody("seda"));
+ MockEndpoint.assertIsSatisfied(context);
+ }
+
+ @Test
+ void givenDynamicRouter_whenMockEndpointExpectedMessageCountOneAndBookAsMessageBody_thenMessageSentToDynamicRouter() throws InterruptedException {
+
+ MockEndpoint mockDynamicEndpoint = getMockEndpoint("mock:fileDynamicRouter");
+ mockDynamicEndpoint.expectedMessageCount(1);
+
+ template.send("direct:dynamicRouter", exchange -> exchange.getIn()
+ .setBody("file"));
+ MockEndpoint.assertIsSatisfied(context);
+ }
+
+}
\ No newline at end of file
diff --git a/lightrun/lightrun-tasks-service/pom.xml b/lightrun/lightrun-tasks-service/pom.xml
index 773c81a9d5..c27ef103b9 100644
--- a/lightrun/lightrun-tasks-service/pom.xml
+++ b/lightrun/lightrun-tasks-service/pom.xml
@@ -48,6 +48,7 @@
org.apache.activemq
artemis-jms-server
+ ${activemq.version}
org.springframework.boot
@@ -65,4 +66,8 @@
+
+ 2.32.0
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7cc23680e7..a20b7f5796 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1169,7 +1169,7 @@
2.2
1.3
4.4.0
- 1.14.6
+ 1.14.11
diff --git a/spring-aop-2/src/main/java/com/baeldung/logging/GreetingServiceWithoutAOP.java b/spring-aop-2/src/main/java/com/baeldung/logging/GreetingServiceWithoutAOP.java
index eee90af669..f13c70f93b 100644
--- a/spring-aop-2/src/main/java/com/baeldung/logging/GreetingServiceWithoutAOP.java
+++ b/spring-aop-2/src/main/java/com/baeldung/logging/GreetingServiceWithoutAOP.java
@@ -10,9 +10,9 @@ public class GreetingServiceWithoutAOP {
private static final Logger logger = LoggerFactory.getLogger(GreetingServiceWithoutAOP.class);
public String greet(String name) {
- logger.info(">> greet() - {}", name);
+ logger.debug(">> greet() - {}", name);
String result = String.format("Hello %s", name);
- logger.info("<< greet() - {}", result);
+ logger.debug("<< greet() - {}", result);
return result;
}
}
diff --git a/spring-aop-2/src/main/java/com/baeldung/logging/LoggingAspect.java b/spring-aop-2/src/main/java/com/baeldung/logging/LoggingAspect.java
index 6641b70eec..82b52bea25 100644
--- a/spring-aop-2/src/main/java/com/baeldung/logging/LoggingAspect.java
+++ b/spring-aop-2/src/main/java/com/baeldung/logging/LoggingAspect.java
@@ -28,13 +28,13 @@ public class LoggingAspect {
public void logBefore(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
String methodName = joinPoint.getSignature().getName();
- logger.info(">> {}() - {}", methodName, Arrays.toString(args));
+ logger.debug(">> {}() - {}", methodName, Arrays.toString(args));
}
@AfterReturning(value = "publicMethodsFromLoggingPackage()", returning = "result")
public void logAfter(JoinPoint joinPoint, Object result) {
String methodName = joinPoint.getSignature().getName();
- logger.info("<< {}() - {}", methodName, result);
+ logger.debug("<< {}() - {}", methodName, result);
}
@AfterThrowing(pointcut = "publicMethodsFromLoggingPackage()", throwing = "exception")
@@ -47,9 +47,9 @@ public class LoggingAspect {
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
Object[] args = joinPoint.getArgs();
String methodName = joinPoint.getSignature().getName();
- logger.info(">> {}() - {}", methodName, Arrays.toString(args));
+ logger.debug(">> {}() - {}", methodName, Arrays.toString(args));
Object result = joinPoint.proceed();
- logger.info("<< {}() - {}", methodName, result);
+ logger.debug("<< {}() - {}", methodName, result);
return result;
}
}
diff --git a/spring-ejb-modules/spring-ejb-client/pom.xml b/spring-ejb-modules/spring-ejb-client/pom.xml
index b3a65db32b..a94a2e96e0 100644
--- a/spring-ejb-modules/spring-ejb-client/pom.xml
+++ b/spring-ejb-modules/spring-ejb-client/pom.xml
@@ -50,6 +50,18 @@
io.undertow
undertow-servlet
+
+ org.wildfly
+ wildfly-naming-client
+
+
+ org.jboss
+ jboss-ejb-client
+
+
+ org.wildfly.common
+ wildfly-common
+
diff --git a/spring-ejb-modules/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java b/spring-ejb-modules/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java
index 554fac3417..1f04dcb113 100644
--- a/spring-ejb-modules/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java
+++ b/spring-ejb-modules/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java
@@ -21,7 +21,7 @@ public class SpringEjbClientApplication {
Properties jndiProps = new Properties();
jndiProps.put("java.naming.factory.initial", "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put("jboss.naming.client.ejb.context", true);
- jndiProps.put("java.naming.provider.url", "http-remoting://localhost:8080");
+ jndiProps.put("java.naming.provider.url", "remote+http://localhost:8080");
return new InitialContext(jndiProps);
}
@@ -37,7 +37,7 @@ public class SpringEjbClientApplication {
@SuppressWarnings("rawtypes")
private String getFullName(Class classType) {
- String moduleName = "spring-ejb-remote/";
+ String moduleName = "ejb:/spring-ejb-remote/";
String beanName = classType.getSimpleName();
String viewClassName = classType.getName();
diff --git a/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/HandleInstanceAlreadyExistsException.java b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/HandleInstanceAlreadyExistsException.java
new file mode 100644
index 0000000000..1de39987b8
--- /dev/null
+++ b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/HandleInstanceAlreadyExistsException.java
@@ -0,0 +1,56 @@
+package com.baeldung.spring.kafka.kafkaexception;
+
+import java.lang.management.ManagementFactory;
+import java.util.Properties;
+import java.util.UUID;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.common.serialization.StringSerializer;
+
+public class HandleInstanceAlreadyExistsException {
+
+ public static void generateUniqueClientIDUsingUUIDRandom() {
+ Properties props = new Properties();
+ props.put("bootstrap.servers", "localhost:9092");
+ props.put("key.serializer", StringSerializer.class);
+ props.put("value.serializer", StringSerializer.class);
+
+ String clientId = "my-producer-" + UUID.randomUUID();
+ props.setProperty("client.id", clientId);
+ KafkaProducer producer1 = new KafkaProducer<>(props);
+
+ clientId = "my-producer-" + UUID.randomUUID();
+ props.setProperty("client.id", clientId);
+ KafkaProducer producer2 = new KafkaProducer<>(props);
+ }
+
+ public static void closeProducerProperlyBeforeReinstantiate() {
+ Properties props = new Properties();
+ props.put("bootstrap.servers", "localhost:9092");
+ props.put("client.id", "my-producer");
+ props.put("key.serializer", StringSerializer.class);
+ props.put("value.serializer", StringSerializer.class);
+
+ KafkaProducer producer1 = new KafkaProducer<>(props);
+ producer1.close();
+
+ producer1 = new KafkaProducer<>(props);
+ }
+
+ public static void useUniqueObjectName() throws Exception {
+ MBeanServer mBeanServer1 = ManagementFactory.getPlatformMBeanServer();
+ MBeanServer mBeanServer2 = ManagementFactory.getPlatformMBeanServer();
+
+ ObjectName objectName1 = new ObjectName("kafka.server:type=KafkaMetrics,id=metric1");
+ ObjectName objectName2 = new ObjectName("kafka.server:type=KafkaMetrics,id=metric2");
+
+ MyMBean mBean1 = new MyMBean();
+ mBeanServer1.registerMBean(mBean1, objectName1);
+
+ MyMBean mBean2 = new MyMBean();
+ mBeanServer2.registerMBean(mBean2, objectName2);
+ }
+}
diff --git a/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/KafkaAppMain.java b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/KafkaAppMain.java
new file mode 100644
index 0000000000..14d6b71b10
--- /dev/null
+++ b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/KafkaAppMain.java
@@ -0,0 +1,12 @@
+package com.baeldung.spring.kafka.kafkaexception;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class KafkaAppMain {
+
+ public static void main(String[] args) {
+ SpringApplication.run(KafkaAppMain.class, args);
+ }
+}
diff --git a/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/SimulateInstanceAlreadyExistsException.java b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/SimulateInstanceAlreadyExistsException.java
new file mode 100644
index 0000000000..d454d317f2
--- /dev/null
+++ b/spring-kafka-3/src/main/java/com/baeldung/spring/kafka/kafkaexception/SimulateInstanceAlreadyExistsException.java
@@ -0,0 +1,123 @@
+package com.baeldung.spring.kafka.kafkaexception;
+
+import java.lang.management.ManagementFactory;
+import java.util.Properties;
+
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.DynamicMBean;
+import javax.management.InvalidAttributeValueException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.common.serialization.StringDeserializer;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SimulateInstanceAlreadyExistsException {
+
+ public static void jmxRegistrationConflicts() throws Exception {
+ // Create two instances of MBeanServer
+ MBeanServer mBeanServer1 = ManagementFactory.getPlatformMBeanServer();
+ MBeanServer mBeanServer2 = ManagementFactory.getPlatformMBeanServer();
+
+ // Define the same ObjectName for both MBeans
+ ObjectName objectName = new ObjectName("kafka.server:type=KafkaMetrics");
+
+ // Create and register the first MBean
+ MyMBean mBean1 = new MyMBean();
+ mBeanServer1.registerMBean(mBean1, objectName);
+
+ // Attempt to register the second MBean with the same ObjectName
+ MyMBean mBean2 = new MyMBean();
+ mBeanServer2.registerMBean(mBean2, objectName);
+ }
+
+ public static void duplicateConsumerClientID() {
+ Properties props = new Properties();
+ props.put("bootstrap.servers", "localhost:9092");
+ props.put("client.id", "my-consumer");
+ props.put("group.id", "test-group");
+ props.put("key.deserializer", StringDeserializer.class);
+ props.put("value.deserializer", StringDeserializer.class);
+
+ // Simulating concurrent client creation by multiple threads
+ for (int i = 0; i < 3; i++) {
+ new Thread(() -> {
+ KafkaConsumer consumer = new KafkaConsumer<>(props);
+ }).start();
+ }
+ }
+
+ public void duplicateProducerClientID() throws Exception {
+ Properties props = new Properties();
+ props.put("bootstrap.servers", "localhost:9092");
+ props.put("client.id", "my-producer");
+ props.put("key.serializer", StringSerializer.class);
+ props.put("value.serializer", StringSerializer.class);
+
+ KafkaProducer producer1 = new KafkaProducer<>(props);
+ // Attempting to create another producer using same client.id
+ KafkaProducer producer2 = new KafkaProducer<>(props);
+ }
+
+ public static void unclosedProducerAndReinitialize() {
+ Properties props = new Properties();
+ props.put("bootstrap.servers", "localhost:9092");
+ props.put("client.id", "my-producer");
+ props.put("key.serializer", StringSerializer.class);
+ props.put("value.serializer", StringSerializer.class);
+
+ KafkaProducer producer1 = new KafkaProducer<>(props);
+ // Attempting to reinitialize without proper close
+ producer1 = new KafkaProducer<>(props);
+ }
+}
+
+class MyMBean implements DynamicMBean {
+
+ @Override
+ public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException {
+ return null;
+ }
+
+ @Override
+ public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException {
+
+ }
+
+ @Override
+ public AttributeList getAttributes(String[] attributes) {
+ return null;
+ }
+
+ @Override
+ public AttributeList setAttributes(AttributeList attributes) {
+ return null;
+ }
+
+ @Override
+ public Object invoke(String actionName, Object[] params, String[] signature) throws MBeanException, ReflectionException {
+ return null;
+ }
+
+ @Override
+ public MBeanInfo getMBeanInfo() {
+ MBeanAttributeInfo[] attributes = new MBeanAttributeInfo[0];
+ MBeanConstructorInfo[] constructors = new MBeanConstructorInfo[0];
+ MBeanOperationInfo[] operations = new MBeanOperationInfo[0];
+ MBeanNotificationInfo[] notifications = new MBeanNotificationInfo[0];
+ return new MBeanInfo(MyMBean.class.getName(), "My MBean", attributes, constructors, operations, notifications);
+ }
+}
diff --git a/spring-security-modules/spring-security-web-login-2/pom.xml b/spring-security-modules/spring-security-web-login-2/pom.xml
index a44543a6ba..be2352b299 100644
--- a/spring-security-modules/spring-security-web-login-2/pom.xml
+++ b/spring-security-modules/spring-security-web-login-2/pom.xml
@@ -10,8 +10,9 @@
com.baeldung
- spring-security-modules
+ parent-boot-3
0.0.1-SNAPSHOT
+ ../../parent-boot-3
@@ -29,7 +30,7 @@
org.thymeleaf.extras
- thymeleaf-extras-springsecurity5
+ thymeleaf-extras-springsecurity6
org.springframework
@@ -56,4 +57,7 @@
+
+ com.baeldung.manuallogout.ManualLogoutApplication
+
\ No newline at end of file
diff --git a/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java b/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java
index ae2cdc20ec..99059112bc 100644
--- a/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java
+++ b/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/logoutredirects/securityconfig/SpringSecurityConfig.java
@@ -1,20 +1,20 @@
package com.baeldung.logoutredirects.securityconfig;
-import javax.servlet.http.HttpServletResponse;
-
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
+import jakarta.servlet.http.HttpServletResponse;
+
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
- http.authorizeRequests(authz -> authz.mvcMatchers("/login")
+ http.authorizeHttpRequests(authz -> authz.requestMatchers("/login")
.permitAll()
.anyRequest()
.authenticated())
diff --git a/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java b/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java
index 3991d9a264..92ee4a84a6 100644
--- a/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java
+++ b/spring-security-modules/spring-security-web-login-2/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java
@@ -5,9 +5,6 @@ import static org.springframework.security.web.header.writers.ClearSiteDataHeade
import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.EXECUTION_CONTEXTS;
import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.STORAGE;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
@@ -20,11 +17,14 @@ import org.springframework.security.web.authentication.logout.HeaderWriterLogout
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+
@Configuration
@EnableWebSecurity
public class SimpleSecurityConfiguration {
- private static Logger logger = LoggerFactory.getLogger(SimpleSecurityConfiguration.class);
+ private static final Logger logger = LoggerFactory.getLogger(SimpleSecurityConfiguration.class);
@Order(4)
@Configuration
@@ -32,8 +32,8 @@ public class SimpleSecurityConfiguration {
@Bean
public SecurityFilterChain filterChainLogoutOnRequest(HttpSecurity http) throws Exception {
- http.antMatcher("/request/**")
- .authorizeRequests(authz -> authz.anyRequest()
+ http.securityMatcher("/request/**")
+ .authorizeHttpRequests(authz -> authz.anyRequest()
.permitAll())
.logout(logout -> logout.logoutUrl("/request/logout")
.addLogoutHandler((request, response, auth) -> {
@@ -53,8 +53,8 @@ public class SimpleSecurityConfiguration {
@Bean
public SecurityFilterChain filterChainDefaultLogout(HttpSecurity http) throws Exception {
- http.antMatcher("/basic/**")
- .authorizeRequests(authz -> authz.anyRequest()
+ http.securityMatcher("/basic/**")
+ .authorizeHttpRequests(authz -> authz.anyRequest()
.permitAll())
.logout(logout -> logout.logoutUrl("/basic/basiclogout"));
return http.build();
@@ -67,8 +67,8 @@ public class SimpleSecurityConfiguration {
@Bean
public SecurityFilterChain filterChainAllCookieClearing(HttpSecurity http) throws Exception {
- http.antMatcher("/cookies/**")
- .authorizeRequests(authz -> authz.anyRequest()
+ http.securityMatcher("/cookies/**")
+ .authorizeHttpRequests(authz -> authz.anyRequest()
.permitAll())
.logout(logout -> logout.logoutUrl("/cookies/cookielogout")
.addLogoutHandler(new SecurityContextLogoutHandler())
@@ -92,8 +92,8 @@ public class SimpleSecurityConfiguration {
@Bean
public SecurityFilterChain filterChainClearSiteDataHeader(HttpSecurity http) throws Exception {
- http.antMatcher("/csd/**")
- .authorizeRequests(authz -> authz.anyRequest()
+ http.securityMatcher("/csd/**")
+ .authorizeHttpRequests(authz -> authz.anyRequest()
.permitAll())
.logout(logout -> logout.logoutUrl("/csd/csdlogout")
.addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(SOURCE))));
diff --git a/spring-security-modules/spring-security-web-login-2/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java b/spring-security-modules/spring-security-web-login-2/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java
index a9ad907c30..528bb5e80f 100644
--- a/spring-security-modules/spring-security-web-login-2/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java
+++ b/spring-security-modules/spring-security-web-login-2/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java
@@ -9,9 +9,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpSession;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +19,9 @@ import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpSession;
+
@RunWith(SpringRunner.class)
@WebMvcTest(SimpleSecurityConfiguration.class)
public class ManualLogoutIntegrationTest {