Lorsque j'exécute l'application à l'aide de l'application principale, j'ai eu l'erreur dans consoleUnable pour démarrer le serveur Web; L'exception imbriquée est org.springframework.context.ApplicationContextException: impossible de démarrer ServletWebServerApplicationContext en raison du bean manquant ServletWebServerFactory.
Application principale
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Initialiseur de servlet
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
build.gradle
buildscript {
ext {
springBootVersion = '2.0.0.M4'
}
repositories {
jcenter()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id "org.sonarqube" version "2.5"
}
apply plugin: 'Java'
apply plugin: 'idea'
apply plugin: 'Eclipse-wtp'
apply plugin: 'jacoco'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.demo'
version = '0.0.1-SNAPSHOT'
// Uses JDK 8
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
maven { url "https://repo.spring.io/milestone" }
jcenter()
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
}
configurations {
providedRuntime
}
dependencies {
// SPRING FRAMEWORK
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-aop')
compile('org.springframework.boot:spring-boot-starter-actuator')
// Tomcat Server
providedRuntime('org.springframework.boot:spring-boot-starter-Tomcat')
//Spring Jpa
compile('org.springframework.boot:spring-boot-starter-data-jpa')
// SPRING SECURITY
compile('org.springframework.boot:spring-boot-starter-security')
// MYSQL and HIBERNATE
compile 'mysql:mysql-connector-Java:5.1.34'
//compile 'org.hibernate:hibernate-core:5.2.11.Final'
//compile 'org.hibernate:hibernate-validator:5.1.3.Final'
}
Aidez moi
J'ai créé une application de démarrage printanière car de nombreux fichiers jsp nécessitaient également des données pour exécuter cette connectivité. J'ai mentionné le nom du serveur, le numéro de port, l'identifiant, le mot de passe dans application.properties, mais si je fais une erreur, veuillez me le faire savoir classe Java écrite:
UserAuthenticationFilter
est ma classe Java où je me connecte à la base de données mongoDB et apporte l'ID utilisateur et le mot de passe.
AppLoginSuccessHandler
est une classe permettant de gérer l'utilisateur auquel il/elle se connecte.
AppLogoutSuccessHandler
est une classe pour gérer l'utilisateur qu'il/elle se déconnecte.
configure()
dans lequel j'ai spécifié l'autorisation et les utilisateurs.
public class SpringSecurityWebAppConfig extends WebSecurityConfigurerAdapter
{
@Autowired
UserAuthenticationFilter userAuthenticationFilter;
//this is my Java class to get userId and pass for login site
@Autowired
AppLoginSuccessHandler appLoginSuccessHandler;
//this is my Java class handler when user login site
@Autowired
AppLogoutSuccessHandler appLogoutSuccessHandler;
//this is my Java class handler when user log out site
@Bean
public UserAuthenticationFilter UserDetailsService(){
return new UserAuthenticationFilter();
}
protected void configure(HttpSecurity http){
try {
http.authorizeRequests()
.antMatchers("/bootstrap/*").permitAll()
.antMatchers("/fonts/*").permitAll()
.antMatchers("/images/*").permitAll()
.antMatchers("/css/*").permitAll()
.antMatchers("/js/*").permitAll()
.antMatchers("/index.jsp").permitAll()
.antMatchers("/accessdenied").permitAll()
.antMatchers("/WEB-INF/view/*").permitAll()
.antMatchers("/**").access("hasAnyRole('XXX','XXX','XXX',"
+ "'XXX','XXX')").
anyRequest().authenticated()
.and() .formLogin().loginPage("/index.jsp").defaultSuccessUrl("/view/dashboardView", true).successHandler(appLoginSuccessHandler)
.failureUrl("/index.jsp?error=true")
.and()
.logout().logoutUrl("/j_spring_security_logout").logoutSuccessHandler(appLogoutSuccessHandler)
.and()
.exceptionHandling();
} catch (Exception e) {
e.printStackTrace();
}
}
}
MvcConfiguration
: J'ai écrit le code suivant En gardant à l'esprit que le code suivant fonctionne comme DispatcherServlet
, j'ai écrit une classe supplémentaire:
@SuppressWarnings("deprecation")
@Configuration
@EnableWebMvc
@ComponentScan
public class MvcConfiguration extends WebMvcConfigurerAdapter{
public void configureViewResolver(ViewResolverRegistry registry){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setViewClass(getClass());
resolver.setViewNames("org.springframework.web.servlet.view.JstlView");
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".jsp");
}
}
Application1
est ma principale classe de bottes de printemps: quand je cours cette classe je reçois une erreur:
org.springframework.context.ApplicationContextException: impossible de démarrer ServletWebServerApplicationContext en raison du bean manquant ServletWebServerFactory.
@SpringBootApplication
@ComponentScan("XXX.XXX.XXX.SpringSecurityWebAppConfig")
public class Application1 extends SpringBootServletInitializer{
protected SpringApplicationBuilder configurApplicationBuilder(SpringApplicationBuilder application){
return application.sources(Application1.class);
}
public static void main(String[] args) {
//SpringApplication.run(Application1.class, args);
new Application1().configure(new SpringApplicationBuilder(Application1.class)).run(args);
}
}