Changing the Default Geode Configuration in the AppServers Module
By default, the AppServers module will run Geode automatically with preconfigured settings. You can change these Geode settings.
Here are the default settings:
- Geode peer-to-peer members are discovered using locators.
- The region name is set to
gemfire_modules_sessions
. - The cache region is replicated for peer-to-peer configurations and partitioned (with redundancy turned on) for client/server configurations.
- Geode clients have local caching turned on and when the local cache needs to evict data, it will evict least-recently-used (LRU) data first.
Note: On the application server side, the default inactive interval for session expiration is set to 30 minutes. To change this value, refer to Session Expiration.
However, you may want to change this default configuration. For example, you might want to change the region from replicated to partitioned. This section describes how to change these configuration values.
Note: You cannot override region attributes on the cache server when using the HTTP Session Management Module. You must place all region attribute definitions in the region attributes template that you customize in your application server. See Overriding Region Attributes for more information.
Changing Geode Distributed System Properties
To edit Geode system properties, you must add properties to Geode Session Filter definition in the application’s web.xml file. As mentioned previously, this can be done by using the -p option to the modify_war
script. All Geode system properties should be prefixed with the string gemfire.property. For example:
- -p gemfire.property.locators=hostname[10334]
- -p gemfire.property.cache-xml-file=/u01/weblogic/conf/cache.xml.
<filter>
<filter-name>gemfire-session-filter</filter-name>
<filter-class>
org.apache.geode.modules.session.filter.SessionCachingFilter
</filter-class>
<init-param>
<param-name>cache-type</param-name>
<param-value>client-server</param-value>
</init-param>
<init-param>
<param-name>gemfire.property.locators</param-name>
<param-value>hostname[10334]</param-value>
</init-param>
<init-param>
<param-name>gemfire.property.cache-xml-file</param-name>
<param-value>/u01/weblogic/conf/cache.xml</param-value>
</init-param>
</filter>
This example specifies that the file name for Geode’s cache XML configuration is cache-peer.xml
.
The list of configurable server.xml
system properties include any of the properties that can be specified in Geode’s gemfire.properties
file. The following list contains some of the more common parameters that can be configured.
Parameter | Description | Default |
---|---|---|
cache-xml-file | Name of the cache configuration file. | cache-peer.xml for peer-to-peer, cache-client.xml for client/server |
locators (only for peer-to-peer config) | (required) list of locators (host[port]) used by Geode members; if a single locator listens on its default port, then set this value to "localhost[10334]" |
Empty string |
log-file | Name of the Geode log file. | gemfire_modules.log |
statistic-archive-file | Name of the Geode statistics file. | gemfire_modules.gfs |
statistic-sampling-enabled | Whether Geode statistics sampling is enabled. | false |
In addition to the standard Geode system properties, the following cache-specific properties can also be configured.
Parameter | Description | Default |
---|---|---|
criticalHeapPercentage | Percentage of heap at which updates to the cache are refused. | 0 (disabled) |
evictionHeapPercentage | Percentage of heap at which session eviction begins. | 80.0 |
rebalance | Whether a rebalance of the cache should be done when the application server instance is started. | false |
Although these properties are not part of the standard Geode system properties, they apply to the entire JVM instance. For more information about managing the heap, refer to Managing Heap and Off-heap Memory.
Note: It is important to note that the Geode cluster is a singleton within the entire application server JVM. As such it is important to ensure that different web applications, within the same container, set (or expect) the same cache configuration. When the application server starts, the first web application to start that uses Geode Session Caching will determine the overall configuration of the cluster, since it will trigger the creation of the cluster.
Changing Cache Configuration Properties
To edit Geode cache properties (such as the name and the characteristics of the cache region), you must configure these using a filter initialization parameter prefix of gemfire.cache with the modify_war
script. For example:
-p gemfire.cache.region_name=custom_sessions
<filter>
<filter-name>gemfire-session-filter</filter-name>
<filter-class>
org.apache.geode.modules.session.filter.SessionCachingFilter
</filter-class>
<init-param>
<param-name>cache-type</param-name>
<param-value>peer-to-peer</param-value>
</init-param>
<init-param>
<param-name>gemfire.cache.region_name</param-name>
<param-value>custom_sessions</param-value>
</init-param>
</filter>
The following parameters are the cache configuration parameters that can be added to the filter definition as initialization parameters.
Default: false
The Geode API equivalent to setting this parameter:
// Create factory
AttributesFactory factory = ...;
<or> RegionFactory factory = ...;
// Add cache listener
factory.addCacheListener(new DebugCacheListener());
Default: false
for peer-to-peer, true
for client/server
The Geode API equivalent to setting this parameter:
// For peer-to-peer members:
Cache.createRegionFactory(REPLICATE_PROXY)
// For client members:
ClientCache.createClientRegionFactory(CACHING_PROXY_HEAP_LRU)
Default: REPLICATE for peer-to-peer, PARTITION_REDUNDANT for client/server
The Geode API equivalent to setting this parameter:
// Creates a region factory for the specified region shortcut
Cache.createRegionFactory(regionAttributesId);
Default: gemfire_modules_sessions
The Geode API equivalent to setting this parameter:
// Creates a region with the specified name
RegionFactory.create(regionName);
Default: delta_queued
Delta replication can be configured to occur immediately when HttpSession.setAttribute() is called (delta_immediate) or when the HTTP request has completed processing (delta_queued). If the latter mode is configured, all attribute updates for a particular request are ‘batched’ and multiple updates to the same attribute are collapsed. Depending on the number of attributes updates within a given request, delta_queued may provide a significant performance gain. For complete session attribute integrity across the cache, delta_immediate is recommended. Note that this option is specific to this module and there is no equivalent Geode API to enable it.