web-dev-qa-db-fra.com

Impossible de démarrer ServletWebServerApplicationContext en raison du bean ServletWebServerFactory manquant.

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

6
Vinay

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);
        }

    }
0
pooja