loading table of contents...

3.3.6.1. In-Memory configuration for the Studio

You need to configure the Studio not only to use the in-memory persistence layer but also to be the only User Changes web application.

The following Maven dependencies have to be available in the studio-webapp module.

<dependency>
  <groupId>com.coremedia.ui</groupId>
  <artifactId>collaboration-memory-rest-component</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>controlroom-memory-plugin</artifactId>
  <version>${project.version}</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.coremedia.cms</groupId>
  <artifactId>cap-client-list-memory</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.coremedia.cms</groupId>
  <artifactId>notification-elastic</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.coremedia.cms</groupId>
  <artifactId>project-elastic</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.coremedia.ui.collaboration</groupId>
  <artifactId>user-changes-component</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.coremedia.ui.collaboration</groupId>
  <artifactId>workflow-notifications-component</artifactId>
  <scope>runtime</scope>
</dependency>

Add the following property to Studio's application.properties.

models.createIndexes=false

Add the following customizer to the beans section of the application.xml of the studio-webapp module.

<customize:append id="uapiMemoryCapListConnector" bean="connectionParameters">
  <map>
    <entry key="usecaplist" value="true"/>
    <entry key="caplist" value="com.coremedia.cotopaxi.list.memory.MemoryCapListConnectorFactory"/>
  </map>
</customize:append>

Also, configure your Studio server with the following properties, so that the in-memory store is read / written from the given file upon application context startup / shutdown of Studio. To limit memory usage of the in-memory store, the size per collection map is configured. To be robust against data loss, the in-memory store can be persisted periodically in a given interval.

PropertyDefaultDescription

memory.collection.serialization.file

null

In-memory store persistence file name.

memory.collection.size

5000

Number of in-memory map entries per collection.

memory.collection.serialization.interval

360000

Interval in ms in which the in-memory store is persisted periodically to the configured file. If 0, periodic persistence is disabled.

memory.collection.selfclearing.names

notifications

A comma separated list of collection names, which will be periodically deleted and re-created, when memory.collection.size is reached. Fast growing collections, which do not contain critical data should be configured as self-clearing collections, e.g. notifications.

Table 3.4.  Studio Configuration Properties for In-Memory Store