이미 루트 응용 프로그램 컨텍스트가 있으므로 컨텍스트를 초기화 할 수 없기 때문에 Tomcat에서 war 배포가 실패합니다.
나는 며칠 이후로 이것에 내 머리를 두드렸다. 그리고 나는이 오류가 어디서 오는지 정말로 이해하지 못합니다. 이미 SO에이에 대한 몇 가지 스레드 다음 이 와 이 일을
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 파일이 말하는지 이해하지 못합니다.
답변
마침내 나는 범인을 얻었다. 스프링 세션 문서에 많은 작업이 필요한 이유를 모르겠습니다 . 내가 틀렸을 수도있다.
어쨌든 AbstractHttpSessionApplicationInitializer
문서에서 언급 했듯이을 확장하는 이니셜 라이저를 사용 하고 있습니다.
public class SessionConfigInitializer extends AbstractHttpSessionApplicationInitializer {
public SessionConfigInitializer() {
super(SessionConfig.class);
}
}
내가 들여다 보았을 때 시작시 AbstractHttpSessionApplicationInitializer
이것을하고있었습니다 servletContext.addListener(new ContextLoaderListener(rootAppContext));
.
다른 사람이이 상황에 빠진 경우이를 게시하면 도움이 될 수 있습니다.
바람둥이를 설치 한 위치를 확인하고 webapp 폴더를 확인해야합니다.이 폴더에는 모든 웹 애플리케이션이 있습니다. 예를 들어 내 경우 : C : \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ webapps
또는 Tomcat 서버 폴더 외부에 다른 웹 응용 프로그램이있는 경우 C : \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ conf \ Catalina \ localhost 를 참조하십시오.