I am trying to build the normal Spring MVC demo app with Spring security enabled (Without Spring Boot)
vaadin flow : 24.4.6
vaadin-spring : 24.4.4
Spring-webmvc: 6.1.11
spring-security-core & spring-security-web : 6.3.1
Tomcat 10 for deploying war
public class SampleWebAppInitializer extends VaadinMVCWebAppInitializer {
@Override
protected Collection<Class<?>> getConfigurationClasses() {
return Arrays.asList( SampleConfiguration.class);
}
}
@Configuration
@ComponentScan
@EnableVaadin
@EnableWebSecurity
public class SampleConfiguration {
@Bean
public HandlerMappingIntrospector mvcHandlerMappingIntrospector() {
return new HandlerMappingIntrospector();
}
}
@EnableWebSecurity
@Configuration
@ComponentScan( value = { "org.vaadin.example", "com.vaadin.flow.spring"})
public class SecurityConfiguration extends VaadinWebSecurity {
public SecurityConfiguration(){
super();
}
@Override
protected void configure( final HttpSecurity http) throws Exception {
super.configure(http);
// This is important to register your login view to the
// navigation access control mechanism:
setLoginView(http, LoginRichContent.class);
http.logout(logout -> logout
.logoutSuccessUrl("/login-rich-content")
);
http.build();
}
@Override
public void configure( final WebSecurity web) throws Exception {
// Customize your WebSecurity configuration.
super.configure(web);
}
/**
* Demo UserDetailsManager which only provides two hardcoded
* in memory users and their roles.
* NOTE: This shouldn't be used in real world applications.
*/
@Bean
public UserDetailsManager userDetailsService() {
final UserDetails user =
User.withUsername("user")
.password("{noop}user")
.roles("USER")
.build();
final UserDetails admin =
User.withUsername("admin")
.password("{noop}admin")
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user, admin);
}
}
and getting below error on tomcat starting
Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.vaadin.flow.spring.SpringBootAutoConfiguration] from ClassLoader [ParallelWebappClassLoader
context: vaadin
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@6477463f
----------> Class file transformers:
org.apache.tomcat.jakartaee.ClassConverter[TOMCAT]
]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:483)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:360)
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:417)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$1(AbstractAutowireCapableBeanFactory.java:750)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:749)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:682)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:653)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1687)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:562)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:534)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:122)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:789)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:607)
at com.vaadin.flow.spring.VaadinMVCWebAppInitializer.onStartup(VaadinMVCWebAppInitializer.java:55)
at org.vaadin.example.SampleWebAppInitializer.onStartup(SampleWebAppInitializer.java:14)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4850)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
... 38 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/web/servlet/ServletContextInitializer
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
at java.base/java.lang.Class.getDeclaredMethods(Class.java:2504)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:465)
... 56 more
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.web.servlet.ServletContextInitializer
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1437)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
... 60 more
Has anyone faces this issue , how to solve it ?