【发布时间】:2016-05-09 10:39:15
【问题描述】:
我正在尝试将 Spring Session 1.2.0 集成到已配置 Spring Security 的现有 Spring MVC 项目中。
我已经按照这些做了配置:
http://docs.spring.io/spring-session/docs/1.2.0.BUILD-SNAPSHOT/reference/html5/guides/security.html
但是,我无法在 tomcat 上部署应用程序,因为我不断收到异常:
SEVERE: 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:277)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1879)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
有相关问题Why this Spring application with java-based configuration don't work properly
如何在不创建 ContextLoaderListener 的新实例的情况下配置 Spring Session?
【问题讨论】:
-
现有应用中,如何加载Spring Security配置?
-
我实际上有一个现有的 Spring Security 配置,其中两个造成了上述问题。所以,这是我自己的错,因为一开始就没有理解这一点。