Развертывание войны не удается в tomcat из-за невозможности инициализации контекста, потому что уже присутствует контекст корневого приложения

Dec 26 2020

Я бился об этом уже несколько дней. И я действительно не понимаю, откуда эта ошибка. Я уже следил за несколькими темами по этому поводу на SO, this и this

26-Dec-2020 12:48:18.633 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
        java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
                at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:263)
                at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
                at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4714)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5177)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706)
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978)
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1848) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

Я написал набор API и пытаюсь развернуть его на сервере tomcat. И во время развертывания мое приложение запускается, но прерывается из-за какого-то другого контекста.

Почему мое приложение не запускается? У меня в папке webapps есть только один файл войны, остальные я удалил.

Я также не понимаю, о каком файле web.xml идет речь.

Ответы

1 LokeshPandey Dec 29 2020 at 21:50

Наконец-то я нашел виноватого. Я не знаю, почему мне кажется, что документация весенней сессии требует большой работы. Я могу ошибаться.

В любом случае, я использую инициализатор, который расширяется AbstractHttpSessionApplicationInitializer, как указано в документации.

public class SessionConfigInitializer extends AbstractHttpSessionApplicationInitializer {

    public SessionConfigInitializer() {
        super(SessionConfig.class);
    }
}

Когда я заглянул внутрь, AbstractHttpSessionApplicationInitializerон делал это servletContext.addListener(new ContextLoaderListener(rootAppContext));при запуске.

Публикация этого сообщения на случай, если кто-то еще попадет в эту ситуацию, может им помочь.

გენომუმლაძე Dec 27 2020 at 00:17

Вы должны увидеть, где вы установили свой tomcat, и увидеть папку webapp , в этой папке находятся все веб-приложения. например, в моем случае: C: \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ webapps

или см. C: \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ conf \ Catalina \ localhost, если какое-либо другое веб-приложение существует за пределами папки сервера tomcat.