Die Bereitstellung von War schlägt in Tomcat fehl, da der Kontext nicht initialisiert werden kann, da bereits ein Stammanwendungskontext vorhanden ist
Ich habe seit ein paar Tagen meinen Kopf darauf geschlagen. Und ich verstehe wirklich nicht, woher dieser Fehler kommt. Ich habe diesbezüglich bereits einige Themen zu SO, diesem und diesem verfolgt
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)
Ich habe eine Reihe von APIs geschrieben und versuche, diese über einen Tomcat-Server bereitzustellen. Während der Bereitstellung wird meine Anwendung gestartet, aber aufgrund eines anderen Kontexts wird sie bereits abgebrochen.
Warum startet meine Bewerbung nicht erfolgreich? Ich habe nur eine Kriegsdatei in meinem Webapps-Ordner und den Rest entfernt.
Ich verstehe auch nicht, um welche web.xml-Datei es sich handelt.
Antworten
Endlich habe ich den Schuldigen. Ich weiß nicht, warum ich der Meinung bin, dass die Dokumentation der Frühjahrssitzung viel Arbeit erfordert. Ich könnte falsch liegen.
Wie auch immer, ich verwende einen Initialisierer, der sich erweitert AbstractHttpSessionApplicationInitializer
, wie in der Dokumentation erwähnt.
public class SessionConfigInitializer extends AbstractHttpSessionApplicationInitializer {
public SessionConfigInitializer() {
super(SessionConfig.class);
}
}
Als ich hineingeschaut AbstractHttpSessionApplicationInitializer
habe, war dies servletContext.addListener(new ContextLoaderListener(rootAppContext));
beim Start der Fall.
Das Posten für den Fall, dass jemand anderes in diese Situation gerät, könnte ihm helfen.
Sie müssen sehen , wo Sie Ihren Kater und sehen installiert hatte Webapp Ordner, da alle Web - Anwendungen in diesem Ordner befinden. Zum Beispiel in meinem Fall: C: \ Programme \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ webapps
oder lesen Sie C: \ Programme \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ conf \ Catalina \ localhost, wenn eine andere Webanwendung außerhalb des Tomcat-Serverordners vorhanden ist.