Deployment of war gagal di tomcat karena tidak dapat menginisialisasi konteks karena sudah ada konteks aplikasi root

Dec 26 2020

Saya telah membenturkan kepala saya ini sejak beberapa hari. Dan saya benar-benar tidak mengerti dari mana kesalahan ini berasal. Saya sudah mengikuti beberapa utas tentang ini di SO, ini dan yang ini

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)

Saya telah menulis satu set API dan saya mencoba untuk menyebarkannya ke server kucing jantan. Dan selama penerapan, aplikasi saya mulai tetapi dibatalkan karena beberapa konteks lain sudah ada.

Mengapa aplikasi saya tidak berhasil dimulai? Saya hanya memiliki satu file perang di folder webapps saya dan saya telah menghapus sisanya.

Saya juga tidak mengerti file web.xml mana yang dibicarakannya.

Jawaban

1 LokeshPandey Dec 29 2020 at 21:50

Akhirnya saya menemukan pelakunya. Saya tidak tahu mengapa saya merasa dokumentasi sesi musim semi membutuhkan banyak pekerjaan. Saya bisa saja salah.

Bagaimanapun, saya menggunakan penginisialisasi yang meluas AbstractHttpSessionApplicationInitializer, seperti yang disebutkan dalam dokumentasi.

public class SessionConfigInitializer extends AbstractHttpSessionApplicationInitializer {

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

Ketika saya melihat ke AbstractHttpSessionApplicationInitializerdalamnya melakukan ini servletContext.addListener(new ContextLoaderListener(rootAppContext));saat startup.

Memposting ini untuk berjaga-jaga jika orang lain jatuh dalam situasi ini dapat membantu mereka.

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

Anda harus melihat di mana Anda menginstal tomcat Anda dan melihat folder webapp , ada semua aplikasi web di folder ini. misalnya dalam kasus saya: C: \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ webapps

atau lihat C: \ Program Files \ Apache Software Foundation \ Apache Tomcat 8.0.27 \ conf \ Catalina \ localhost jika ada aplikasi web lain di luar folder server tomcat.