Upgrade 14.5 to 14.6

Introduction

Goal

Upgrade a Bloomreach Experience Manager implementation project from version 14.5.x to 14.6.y.

Significant Changes

  • Spring Boot framework has been integrated into the CMS application, adding support for a number of additional features to help in monitoring and managing the CMS application. See (Optional) Enable Spring Boot Actuator below.

    Note: implementation projects with an existing Spring application context in the CMS may experience conflicting root contexts. In that case, see Handle Conflicting Spring Contexts below.

  • 14.6.0 introduces improved XML parsing and the usage of new XML parser properties that have been supported since JAXP 1.5. This change can cause issues in some implementation projects if an older JAXP implementation is on the classpath, changing the default XML parsers such as Xerces. See Remove Apache Xerces Dependencies below.

  • The Camunda UI is no longer available as of 14.6.0. In most cases, implementation projects should already have removed Camunda per the upgrade instructions for 14.3 (Use Projects without Camunda) and 14.4 (Remove Camunda).

Upgrade Steps

Perform Generic Minor Upgrade Steps

Follow the generic instructions for minor upgrades.

Remove Xerces Dependencies

Bloomreach Experience Manager 14.6.0 introduces improved XML parsing and the usage of new XML parser properties that have been supported since JAXP 1.5. This change can cause issues in some implementation projects if an older JAXP implementation is on the classpath, changing the default XML parsers such as Xerces.

Please see Remove Apache Xerces Dependencies for more details and instructions.

14.6.3: replace occurrences of #isCmsRequest

In 14.6.3, the long-deprecated method HstRequestContext#isCmsRequest was removed. If your project still has occurrences of that method, typically in Freemarker templates, please replace this with #isChannelManagerPreviewRequest. See also this 14.0 upgrade page.

Handle Conflicting Spring Contexts

Implementation projects with an existing Spring application context in the CMS may experience conflicting root contexts. Since Spring Boot comes with its own ContextLoaderListener, a conflict happens when a project already has ContextLoaderListener defined in web.xml.

The suggested solution is to have the custom Spring context XML-file loaded by Spring Boot using a configuration class like this:

Note: the exact package "org.bloomreach.xm.cms" must be used!
package org.bloomreach.xm.cms;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource({"classpath*:spring/applicationContext-custom.xml"})
public class CustomConfiguration {
}

After adding the configuration, existing ContextLoaderListener definition in web.xml file should be removed.

<!-- should be removed -->
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Another solution is to remove Spring Boot libraries (thereby declining on the Spring Boot Actuator functionality) by adding this exclusion to the hippo-package-cms-dependencies pom dependency:

<dependency>
  <groupId>org.onehippo.cms7</groupId>
  <artifactId>hippo-package-cms-dependencies</artifactId>
  <type>pom</type>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot</artifactId>
    </exclusion>
  </exclusions>
</dependency>

(Optional) Enable Spring Boot Actuator

Bloomreach Experience Manager 14.6.0 introduces integration with Spring Boot framework, adding support for a number of additional features to help in monitoring and managing the CMS application.

See Enable Spring Boot Actuator for more details and instructions on how to enable Spring Boot Actuator in your implementation project's CMS application.

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?