V14.7.0 Upgrade

Hi All,

When I am trying to upgrade our application from v14.6.3 to v14.7.0 . I am facing below exception.

Changes done so far

  1. Updated bloomreach version in pom.xml from 14.6.3 to 14.7.0
  2. Updated Spring security version from 5.4.7 to 5.5.3

Apart from above listed changes, I haven’t done any.

Could you please provide any inputs ?

Exception
23-Nov-2021 13:27:27.559 INFO [main] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
23-Nov-2021 13:28:26.443 INFO [main] org.apache.catalina.core.ApplicationContext.log 2 Spring WebApplicationInitializers detected on classpath
23-Nov-2021 13:28:37.146 INFO [main] org.apache.catalina.core.ApplicationContext.log Initializing Spring embedded WebApplicationContext
23-Nov-2021 13:28:41.497 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:4768)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1185)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1933)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:477)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
23-Nov-2021 13:28:41.531 INFO [main] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext
23-Nov-2021 13:28:42.643 INFO [main] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext
23-Nov-2021 13:28:54.824 INFO [main] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
23-Nov-2021 13:28:55.964 INFO [main] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext

Thanks,
Yeshwanth

Hi Yeshwanth,

It’s strange that you are already on 14.6.3, because the error reminds me a lot of the changes towards 14.6, in which the CMS got Spring Boot. Could you check section “Handle Conflicting Spring Contexts” in https://documentation.bloomreach.com/14/library/upgrade-minor-versions/upgrade-14.5-to-14.6.html?

HTH
Jeroen

@jeroen.hoffman

we have handled this as part of 14.6.0 upgrade step by adding “spring-boot” artifact exclusion to “hippo-package-cms-dependencies” artifact.

 <exclusions>
    <exclusion>
      <groupId>org.onehippo.cms7</groupId>
      <artifactId>spring-boot</artifactId>
    </exclusion>
  </exclusions>

Ah right, now I understand, that artifact was renamed to xm-spring-boot-integration, see https://issues.onehippo.com/browse/CMS-14688

Please rename your exclusion accordingly, that should do it.
Jeroen

@jeroen.hoffman

Changing the artifact name has resolved the issue. Thank you !!