C Session Cache Configuration File

Coherence*Web uses the session cache configuration file, default-session-cache-config.xml, to define the caches and services that implement HTTP session management. This file is deployed in the WEB-INF/classes directory.

Table C-1 describes the default cache-related values used in the default-session-cache-config.xml file.

Table C-1 Cache-Related Values Used in default-session-cache-config.xml

Value Description

local-attribute-storage

This local cache is used to store attributes that are not distributed. This can happen under these conditions:

  • A coherence-distributioncontroller-class is configured. Attributes for local sessions will be stored in this cache.

  • A non-serializable attribute is set on a distributed session. If coherence-preserve-attributes is set to true, then non-serializable attributes will be placed in the cache. See Table A-1.

local-session-storage

This local cache is used to store session models that are considered to be local by the configured (if any) coherence-distributioncontroller-class parameter. See Table A-1.

servletcontext-storage

If ServletContext attribute clustering (see the coherence-servletcontext-clustered parameter in Table A-1) is enabled (it is disabled by default), this cache is used to store ServletContext attributes. This cache is replicated by default, because it is expected that there will a few read-mostly attributes.

session-management

This cache is used to store internal configuration and management information for the session management implementation. This information is updated infrequently; therefore, it is a replicated cache by default.

session-storage

This value is the default clustered cache used to store the session attributes. To use a different cache, use the coherence-session-cachename context parameter to specify the cache name.

session-overflow

If the coherence-sessioncollection-class parameter (described in Table A-1) is set to com.tangosol.coherence.servlet.SplitHttpSessionCollection, then this cache will hold large session attributes. By default, session attributes larger than 1 K will be stored in this cache. This is configured as a distributed cache.

session-storage-heap-only

This clustered (non-elastic) cache is used to store the session attributes. This value can be put to use with the coherence-session-cachename context parameter.

session-overflow-heap-only

This clustered (non-elastic) cache is used to store the "overflowing" (split-out due to size) session attributes. It is used only for the "Split" model and can be put to use with the coherence-session-overflow-cachename context parameter.

Table C-2 describes the services-related values used in the default-session-cache-config.xml file.

Table C-2 Services-Related Values Used in default-session-cache-config.xml

Value Description

DistributedSessions

This distributed service uses the RAM journal backing map (elastic data) and is used by the following caches:

  • session-storage
  • session-overflow

The coherence.session.localstorage system property controls if a JVM stores and manages data for these caches. Under most circumstances, this should be set to false for Web container JVMs. See Deployment Topologies.

ReplicatedSessionsMisc

This replicated service is used by the session-management and servletcontext-storage caches.

SessionOwnership

This invocation service is used by the sticky session optimization feature (if coherence-sticky-sessions is set to true).

DistributedSessionsHeapOnly

This distributed service is used by the following caches:
  • session-storage-heap-only
  • session-overflow-heap-only

Example C-1 illustrates the contents of the default-session-cache-config.xml file. The cache- and services-related values described in Table C-1 and Table C-2 appear in bold.

Example C-1 Contents of the default-session-cache-config.xml File

<?xml version="1.0"?>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--                                                                       -->
<!--      Cache configuration descriptor for Coherence*Web                 -->
<!--                                                                       -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> 	

<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
 
  <scope-name>oracle.coherence.web</scope-name>

  <caching-scheme-mapping>
    <!--
    The clustered cache used to store Session management data.
    -->
    <cache-mapping>
      <cache-name>session-management</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store ServletContext attributes.
    -->
    <cache-mapping>
      <cache-name>servletcontext-storage</cache-name>
      <scheme-name>replicated</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store Session attributes.
    -->
    <cache-mapping>
      <cache-name>session-storage</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered (non-elastic) cache used to store Session attributes.
    -->
    <cache-mapping>
      <cache-name>session-storage-heap-only</cache-name>
      <scheme-name>session-distributed-heap-only</scheme-name>
    </cache-mapping>

    <!--
    The clustered cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>
      <cache-name>session-overflow</cache-name>
      <scheme-name>session-distributed</scheme-name>
    </cache-mapping>

    <!--
    The clustered (non-elastic) cache used to store the "overflowing" (split-out due to size)
    Session attributes. Only used for the "Split" model.
    -->
    <cache-mapping>
      <cache-name>session-overflow-heap-only</cache-name>
      <scheme-name>session-distributed-heap-only</scheme-name>
    </cache-mapping>

    <!--
    The local cache used to store Sessions that are not yet distributed (if
    there is a distribution controller).
    -->
    <cache-mapping>
      <cache-name>local-session-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>

    <!--
    The local cache used to store Session attributes that are not distributed
    (if there is a distribution controller or attributes are allowed to become
    local when serialization fails).
    -->
    <cache-mapping>
      <cache-name>local-attribute-storage</cache-name>
      <scheme-name>unlimited-local</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <!--
    Replicated caching scheme used by the Session management and ServletContext
    attribute caches.
    -->
    <replicated-scheme>
      <scheme-name>replicated</scheme-name>
      <service-name>ReplicatedSessionsMisc</service-name>
      <request-timeout>30s</request-timeout>
      <backing-map-scheme>
        <local-scheme>
          <scheme-ref>unlimited-local</scheme-ref>
        </local-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </replicated-scheme>

    <local-scheme>
      <scheme-name>session-front</scheme-name>
      <eviction-policy>HYBRID</eviction-policy>
      <high-units>1000</high-units>
      <low-units>750</low-units>
    </local-scheme>

    <distributed-scheme>
      <scheme-name>session-distributed</scheme-name>
      <service-name>DistributedSessions</service-name>
      <lease-granularity>member</lease-granularity>
      <local-storage system-property="coherence.session.localstorage">false</local-storage>
      <partition-count>257</partition-count>
      <backup-count>1</backup-count>
      <request-timeout>30s</request-timeout>
      <backing-map-scheme>
        <ramjournal-scheme>
           <high-units system-property="coherence.session.highunits"/>
           <unit-calculator>BINARY</unit-calculator>
        </ramjournal-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>

    <distributed-scheme>
      <scheme-name>session-distributed-heap-only</scheme-name>
      <service-name>DistributedSessionsHeapOnly</service-name>
      <lease-granularity>member</lease-granularity>
      <local-storage system-property="coherence.session.localstorage">false</local-storage>
      <partition-count>257</partition-count>
      <backup-count>1</backup-count>
      <request-timeout>30s</request-timeout>
      <backing-map-scheme>
        <local-scheme/>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>

    <!--
    Local caching scheme definition used by all caches that do not require an
    eviction policy.
    -->
    <local-scheme>
      <scheme-name>unlimited-local</scheme-name>
      <service-name>LocalSessionCache</service-name>
    </local-scheme>

    <!--
    Clustered invocation service that manages sticky session ownership.
    -->
    <invocation-scheme>
      <service-name>SessionOwnership</service-name>
      <request-timeout>30s</request-timeout>
    </invocation-scheme>
  </caching-schemes>
</cache-config>