JCache Session Persistence

This feature enables persistence of HTTP sessions using JCache. Persisting HTTP session data using JCache allows for high performance HTTP session persistence without the use of a relational database. Failover of HTTP sessions can be achieved by configuring multiple servers to persist data to the same location.

Enabling this feature

To enable the JCache Session Persistence 1.0 feature, add the following element declaration into your server.xml file, inside the featureManager element:



Persist HTTP session data with Hazelcast as the JCache provider

The sessionCache feature does not include a JCache implementation, so you must pick one and reference it as a library in your server.xml file. You must define a location for the implementation files with the library element and reference that library by specifying the libraryRef attribute for the httpSessionCache element.

In the following example, Hazelcast is specified as the JCache implementation. The library element specifies that Hazelcast must be used as the JCache provider, which is located in the hazelcast.jar library.

  <httpSessionCache libraryRef="JCacheLib"/>
  <library id="JCacheLib">
    <file name="/usr/lib/hazelcast.jar"/>

Customizing the JCache implementation

You can provide a configuration file to customize how your JCache implementation manages HTTP session caching. To specify the file location, use the uri attribute for the httpSessionCache element. In the following example, the uri attribute specifies the location of a Hazelcast configuration file:

The following example shows the configuration of session persistence with Hazelcast as the JCache provider:

<library id="jCacheVendorLib">
  <fileset dir="${server.config.dir}/hazelcast" includes="hazelcast.jar"/>

<httpSessionCache libraryRef="jCacheVendorLib"

The Hazelcast configuration file is optional. For more information, see Distributed session caching.

Specify JCache vendor-specific properties

In the following example, Open Liberty is configured to access cached HTTP session data from a remote Infinispan server in client/server mode on OpenShift. Vendor-specific Infinispan properties are passed to the JCache implementation in the properties elements:

  <httpSessionCache libraryRef="InfinispanLib">
    <properties infinispan.client.hotrod.server_list="infinispan-server:11222"/>
    <properties infinispan.client.hotrod.auth_username="sampleUser"/>
    <properties infinispan.client.hotrod.auth_password="samplePassword"/>
    <properties infinispan.client.hotrod.auth_realm="default"/>
    <properties infinispan.client.hotrod.sasl_mechanism="PLAIN"/>
    <properties infinispan.client.hotrod.java_serial_whitelist=".*"/>
    <properties infinispan.client.hotrod.marshaller="org.infinispan.commons.marshall.JavaSerializationMarshaller"/>
    <library id="InfinispanLib">
        <fileset dir="${shared.resource.dir}/infinispan" includes="*.jar"/>

For more information, see Configuring Infinispan as a JCache provider.

Standard API packages provided by this feature

  • javax.cache

  • javax.cache.annotation

  • javax.cache.configuration

  • javax.cache.event

  • javax.cache.expiry

  • javax.cache.integration

  • javax.cache.management

  • javax.cache.processor

  • javax.cache.spi

Supported Java versions

  • JavaSE-1.8

  • JavaSE-11.0

  • JavaSE-17.0

Developing a feature that depends on this feature

If you are developing a feature that depends on this feature, include the following item in the Subsystem-Content header in your feature manifest file.

com.ibm.websphere.appserver.sessionCache-1.0; type="osgi.subsystem.feature"