[infinispan-commits] Infinispan SVN: r905 - in trunk/core/src: main/resources/xslt and 3 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Mon Oct 5 11:45:10 EDT 2009


Author: mircea.markus
Date: 2009-10-05 11:45:09 -0400 (Mon, 05 Oct 2009)
New Revision: 905

Added:
   trunk/core/src/main/resources/xslt/coherence35x2infinispan4x.xslt
   trunk/core/src/test/java/org/infinispan/config/parsing/Coherence2InfinispanTransformerTest.java
   trunk/core/src/test/resources/configs/coherence/
   trunk/core/src/test/resources/configs/coherence/cache-config.dtd
   trunk/core/src/test/resources/configs/coherence/default-config.xml
Modified:
   trunk/core/src/main/resources/config-samples/all.xml
Log:
added coherence migration scripts

Modified: trunk/core/src/main/resources/config-samples/all.xml
===================================================================
--- trunk/core/src/main/resources/config-samples/all.xml	2009-10-03 17:13:12 UTC (rev 904)
+++ trunk/core/src/main/resources/config-samples/all.xml	2009-10-05 15:45:09 UTC (rev 905)
@@ -137,7 +137,7 @@
          Eviction configuration.  WakeupInterval defines how often the eviction thread runs, in milliseconds.  0 means
          the eviction thread will never run.  A separate executor is used for eviction in each cache.
       -->
-      <eviction wakeUpInterval="500" maxEntries="5000" strategy="FIFO"/>
+      <eviction wakeUpInterval="500" maxEntries="5000" strategy="FIFO" />
       <expiration lifespan="60000" maxIdle="1000"/>
    </namedCache>
 

Added: trunk/core/src/main/resources/xslt/coherence35x2infinispan4x.xslt
===================================================================
--- trunk/core/src/main/resources/xslt/coherence35x2infinispan4x.xslt	                        (rev 0)
+++ trunk/core/src/main/resources/xslt/coherence35x2infinispan4x.xslt	2009-10-05 15:45:09 UTC (rev 905)
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet xmlns="urn:infinispan:config:4.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+   <xsl:output method="xml" indent="yes" version="1.0" encoding="UTF-8" omit-xml-declaration="no"/>
+
+   <xsl:template match="/cache-config">
+      <xsl:comment>
+         This XSL stylesheet is generated by an converter from Coherence3.5.x into an Infinispan 4.0.x configuration.
+         Eviction policies are translated to LRU, FIFO or NONE.
+      </xsl:comment>
+      <xsl:element name="infinispan">
+
+         <xsl:element name="global">
+
+            <asyncListenerExecutor factory="org.infinispan.executors.DefaultExecutorFactory">
+               <properties>
+                  <property name="threadNamePrefix" value="AsyncTransportThread"/>
+               </properties>
+            </asyncListenerExecutor>
+
+            <asyncTransportExecutor factory="org.infinispan.executors.DefaultExecutorFactory">
+               <properties>
+                  <property name="threadNamePrefix" value="AsyncListenerThread"/>
+               </properties>
+            </asyncTransportExecutor>
+
+            <evictionScheduledExecutor factory="org.infinispan.executors.DefaultScheduledExecutorFactory">
+               <properties>
+                  <property name="threadNamePrefix" value="EvictionThread"/>
+               </properties>
+            </evictionScheduledExecutor>
+
+            <replicationQueueScheduledExecutor factory="org.infinispan.executors.DefaultScheduledExecutorFactory">
+               <properties>
+                  <property name="threadNamePrefix" value="ReplicationQueueThread"/>
+               </properties>
+            </replicationQueueScheduledExecutor>
+
+            <globalJmxStatistics jmxDomain="infinispan" enabled="true"/>
+
+            <shutdown hookBehavior="DEFAULT"/>
+         </xsl:element>
+
+         <xsl:if test="caching-scheme-mapping/cache-mapping/cache-name='*'">
+            <xsl:element name="default">
+               <xsl:call-template name="generateCache"/>
+            </xsl:element>
+         </xsl:if>
+
+         <xsl:for-each select="caching-scheme-mapping/cache-mapping">
+            <xsl:if test="not(cache-name='*')">
+               <xsl:element name="namedCache">
+                  <xsl:attribute name="name">
+                     <xsl:value-of select="cache-name"/>
+                     <xsl:message terminate="no">TODO - please updated following name of the cache to match the one from your code: '<xsl:value-of select="cache-name"/>'
+                     </xsl:message>
+                  </xsl:attribute>
+                  <xsl:call-template name="generateCache"/>
+               </xsl:element>
+            </xsl:if>
+         </xsl:for-each>
+
+      </xsl:element>
+   </xsl:template>
+
+   <xsl:template name="generateCache">
+      <xsl:variable name="currentScheme" select="./scheme-name"/>
+      <xsl:if test="/cache-config/caching-schemes/local-scheme/scheme-name = scheme-name">
+         <xsl:for-each select="/cache-config/caching-schemes/local-scheme[scheme-name = $currentScheme]">
+            <xsl:call-template name="processLocalScheme"/>
+         </xsl:for-each>
+      </xsl:if>
+      
+      <xsl:if test="/cache-config/caching-schemes/distributed-scheme/scheme-name = scheme-name">
+         <xsl:element name="clustering">
+            <xsl:attribute name="mode">distribution</xsl:attribute>
+            <xsl:for-each select="/cache-config/caching-schemes/distributed-scheme[scheme-name = $currentScheme]">
+               <xsl:if test="backup-count or key-partitioning">
+                  <xsl:element name="hash">
+                     <xsl:if test="backup-count">
+                        <xsl:attribute name="numOwners"><xsl:value-of select="backup-count"/></xsl:attribute>
+                     </xsl:if>
+                     <xsl:if test="key-partitioning">
+                        <xsl:message terminate="no">TODO - please migrate the custom partitioning algorithm</xsl:message>
+                        <xsl:attribute name="class"><xsl:value-of select="key-partitioning"/></xsl:attribute>
+                     </xsl:if>
+                  </xsl:element>
+               </xsl:if>
+            
+            </xsl:for-each>
+            
+         </xsl:element>
+         <xsl:for-each select="/cache-config/caching-schemes/distributed-scheme[scheme-name = $currentScheme]/backing-map-scheme">
+            <xsl:call-template name="processBackingMapScheme"/>
+         </xsl:for-each>
+      </xsl:if>
+      <xsl:if test="/cache-config/caching-schemes/replicated-scheme/scheme-name = scheme-name">
+         <xsl:element name="clustering">
+         <xsl:attribute name="mode">replicated</xsl:attribute>
+         </xsl:element>
+         <xsl:for-each select="/cache-config/caching-schemes/replicated-scheme[scheme-name = $currentScheme]/backing-map-scheme">
+            <xsl:call-template name="processBackingMapScheme"/>
+         </xsl:for-each>
+      </xsl:if>
+      <xsl:if test="/cache-config/caching-schemes/optimistic-scheme/scheme-name = scheme-name">
+         <xsl:message terminate="no">INFO - Optimistic scheme switched to MVCC: http://jbosscache.blogspot.com/2008/07/mvcc-has-landed.html</xsl:message>
+         <xsl:element name="clustering">
+            <xsl:attribute name="mode">replicated</xsl:attribute>
+         </xsl:element>
+         <xsl:for-each
+               select="/cache-config/caching-schemes/optimistic-scheme[scheme-name = $currentScheme]/backing-map-scheme">
+            <xsl:call-template name="processBackingMapScheme"/>
+         </xsl:for-each>
+      </xsl:if>
+
+      <xsl:if test="/cache-config/caching-schemes/near-scheme/scheme-name = scheme-name">
+
+      </xsl:if>
+
+
+      <xsl:if test="(/cache-config/caching-schemes/external-scheme/scheme-name = scheme-name)
+                 or (/cache-config/caching-schemes/paged-external-scheme/scheme-name = scheme-name)">
+         <xsl:message terminate="no">WARN - infinispan only supports on-heap cache storage</xsl:message>
+      </xsl:if>
+      <xsl:if test="(/cache-config/caching-schemes/remote-cache-scheme/scheme-name = scheme-name)">
+         <xsl:message terminate="no">TODO - Use one of the server modules (e.g. infinispan-server-rest) in order to configure Infinispan as a cache server</xsl:message>
+      </xsl:if>
+   </xsl:template>
+
+    <xsl:template name="processBackingMapScheme">
+       <xsl:if test="./local-scheme/scheme-ref">
+          <xsl:variable name="schemeRefName" select="./local-scheme/scheme-ref"/>
+          <xsl:message terminate="no">I'm entering here! '<xsl:value-of select="$schemeRefName"/>'</xsl:message>
+          <xsl:for-each select="//local-scheme[scheme-name=$schemeRefName]">
+             <xsl:call-template name="processLocalScheme"/>
+          </xsl:for-each>
+       </xsl:if>
+       <xsl:if test="./external-scheme or ./paged-external-scheme">
+          <xsl:message terminate="no">WARN - At the moment Infinispan only supports in memory schemes</xsl:message>
+       </xsl:if>
+       <xsl:if test="./class-scheme">
+          <xsl:message terminate="no">WARN - This is a custom scheme particular to Coherence</xsl:message>
+       </xsl:if>
+       <xsl:if test="./overflow-scheme">
+          <loader class="org.infinispan.loaders.cluster.ClusterCacheLoader" fetchPersistentState="false"
+                  ignoreModifications="false" purgeOnStartup="false">
+             <properties>
+                <property name="remoteCallTimeout" value="10000"/>
+             </properties>
+          </loader>
+       </xsl:if>
+    </xsl:template>
+
+   <xsl:template name="processLocalScheme">
+      <xsl:if test="./eviction-policy">
+         <xsl:if test="./eviction-policy='HYBRID'">
+            <xsl:message terminate="no">Infinispan does not currently support HYBRID (adaptive) eviction policies. We are condering adding it in further releases: https://jira.jboss.org/jira/browse/ISPN-204</xsl:message>
+            <xsl:element name="eviction">
+               <xsl:attribute name="strategy">LRU</xsl:attribute>
+               <xsl:call-template name="evictionAttributes"/>
+            </xsl:element>
+         </xsl:if>
+         <xsl:if test="./expiry-delay">
+            <xsl:element name="expiration">
+               <xsl:attribute name="maxIdle">
+                  <xsl:call-template name="extractTime">
+                     <xsl:with-param name="baseStr">
+                        <xsl:call-template name="extractActualValue">
+                           <xsl:with-param name="baseStr">
+                              <xsl:value-of select="./expiry-delay"/>
+                           </xsl:with-param>
+                        </xsl:call-template>
+                     </xsl:with-param>
+                  </xsl:call-template>
+               </xsl:attribute>
+            </xsl:element>
+         </xsl:if>
+         <xsl:if test="cachestore-scheme">
+            <xsl:for-each select="cachestore-scheme">
+               <xsl:call-template name="processCacheStoreScheme"/>
+            </xsl:for-each>
+         </xsl:if>
+      </xsl:if>
+
+   </xsl:template>
+
+   <xsl:template name="processCacheStoreScheme">
+      <xsl:choose>
+         <xsl:when test="not(scheme-ref) and not(class-scheme) and not (remote-cache-scheme)">
+            <loaders passivation="false" shared="false" preload="false">
+               <loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="false"
+                       ignoreModifications="false" purgeOnStartup="false">
+
+                  <!-- See the documentation for more configuration examples and flags. -->
+                  <properties>
+                     <property name="location" value="/tmp"/>
+                  </properties>
+               </loader>
+            </loaders>
+         </xsl:when>
+         <xsl:otherwise>
+           <xsl:message terminate="no">TODO - please migrate the cache store configuration manually</xsl:message>
+         </xsl:otherwise>
+      </xsl:choose>
+      <xsl:if test="not(scheme-ref) and not(class-scheme) and not (remote-cache-scheme)">
+
+      </xsl:if>
+   </xsl:template>
+
+   <xsl:template name="evictionAttributes">
+      <xsl:if test="unit-calculator='BINARY'">
+         <xsl:message terminate="no">TODO - Infinispan does not curenlty support computation based on the size of the
+            cache, please adjust the eviction->maxEntries attribute to fit your need
+         </xsl:message>
+      </xsl:if>
+      <xsl:if test="high-units">
+         <xsl:attribute name="maxEntries">
+            <xsl:call-template name="extractActualValue">
+               <xsl:with-param name="baseStr" select="high-units"/>
+            </xsl:call-template>
+         </xsl:attribute>
+      </xsl:if>
+      <xsl:if test="flush-delay">
+         <xsl:attribute name="wakeUpInterval">
+            <xsl:call-template name="extractTime">
+               <xsl:with-param name="baseStr" select="flush-delay"/>
+            </xsl:call-template>
+         </xsl:attribute>
+      </xsl:if>
+   </xsl:template>
+
+   <xsl:template name="extractTime">
+      <xsl:param name="baseStr"/>
+      <xsl:if test="contains($baseStr,'MS')">
+         <xsl:value-of select="substring-before($baseStr,'MS')"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'ms')">
+         <xsl:value-of select="substring-before($baseStr,'MS')"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'S')">
+         <xsl:value-of select="concat(substring-before($baseStr,'S'),'000')"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'s')">
+         <xsl:value-of select="concat(substring-before($baseStr,'s'),'000')"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'M') and not (contains($baseStr,'MS'))">
+         <xsl:value-of select="number(substring-before($baseStr,'M')) * 1000 * 60"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'m') and not (contains($baseStr,'ms'))">
+         <xsl:value-of select="number(substring-before($baseStr,'m')) * 1000 * 60"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'h')">
+         <xsl:value-of select="number(substring-before($baseStr,'h')) * 1000 * 60 * 60"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'H')">
+         <xsl:value-of select="number(substring-before($baseStr,'H')) * 1000 * 60 * 60"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'D')">
+         <xsl:value-of select="number(substring-before($baseStr,'D')) * 1000 * 60 * 60 * 24"/>
+      </xsl:if>
+      <xsl:if test="contains($baseStr,'d')">
+         <xsl:value-of select="number(substring-before($baseStr,'d')) * 1000 * 60 * 60 * 24"/>
+      </xsl:if>
+   </xsl:template>
+
+   <xsl:template name="extractActualValue">
+      <xsl:param name="baseStr"/>
+         <xsl:if test="contains($baseStr,'}')">
+            <xsl:value-of select="substring-before(substring-after($baseStr,' '),'}')"/>
+         </xsl:if>
+         <xsl:if test="not(contains($baseStr,'}'))">
+            <xsl:value-of select="$baseStr"/>
+         </xsl:if>
+   </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Added: trunk/core/src/test/java/org/infinispan/config/parsing/Coherence2InfinispanTransformerTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/config/parsing/Coherence2InfinispanTransformerTest.java	                        (rev 0)
+++ trunk/core/src/test/java/org/infinispan/config/parsing/Coherence2InfinispanTransformerTest.java	2009-10-05 15:45:09 UTC (rev 905)
@@ -0,0 +1,68 @@
+package org.infinispan.config.parsing;
+
+import org.infinispan.Cache;
+import org.infinispan.manager.DefaultCacheManager;
+import org.infinispan.test.TestingUtil;
+import org.testng.annotations.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+
+/**
+ * @author Mircea.Markus at jboss.com
+ */
+ at Test(groups = "functional", testName = "config.parsing.Coherence2InfinispanTransformerTest")
+public class Coherence2InfinispanTransformerTest {
+
+   public static final String XSLT_FILE = "xslt/coherence35x2infinispan4x.xslt";
+   private static final String BASE_DIR = "configs/coherence";
+
+
+   ConfigFilesConvertor convertor = new ConfigFilesConvertor();
+
+   public void testDefaultConfigFile() throws Exception {
+      testAllFile("/default-config.xml");
+   }
+
+   /**
+    * Transforms and tests the transformation of a complex file.
+    */
+   private void testAllFile(String coherenceFileName) throws Exception {
+      ClassLoader existingCl = Thread.currentThread().getContextClassLoader();
+      DefaultCacheManager dcm = null;
+      Cache<Object, Object> sampleDistributedCache2 = null;
+      try {
+         ClassLoader delegatingCl = new Jbc2InfinispanTransformerTest.TestClassLoader(existingCl);
+         Thread.currentThread().setContextClassLoader(delegatingCl);
+         String fileName = getFileName(coherenceFileName);
+         ByteArrayOutputStream baos = new ByteArrayOutputStream();
+         convertor.parse(fileName, baos, XSLT_FILE);
+
+
+         File out = new File("zzzz2.xml");
+         if (out.exists()) out.delete();
+         out.createNewFile();
+         FileOutputStream fos = new FileOutputStream(out);
+         fos.write(baos.toByteArray());
+         baos.close();
+         fos.close();
+
+         dcm = new DefaultCacheManager(new ByteArrayInputStream(baos.toByteArray()));
+         Cache<Object,Object> defaultCache = dcm.getCache();
+         defaultCache.put("key", "value");
+
+      } finally {
+         Thread.currentThread().setContextClassLoader(existingCl);
+         TestingUtil.killCaches(sampleDistributedCache2);
+         TestingUtil.killCacheManagers(dcm);
+      }
+   }
+
+   private String getFileName(String s) {
+      return BASE_DIR + File.separator + s;
+   }
+   
+
+}

Added: trunk/core/src/test/resources/configs/coherence/cache-config.dtd
===================================================================
--- trunk/core/src/test/resources/configs/coherence/cache-config.dtd	                        (rev 0)
+++ trunk/core/src/test/resources/configs/coherence/cache-config.dtd	2009-10-05 15:45:09 UTC (rev 905)
@@ -0,0 +1,2286 @@
+<!--
+Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+
+Oracle is a registered trademarks of Oracle Corporation and/or its affiliates.
+
+This software is the confidential and proprietary information of
+Oracle Corporation. You shall not disclose such confidential and
+proprietary information and shall use it only in accordance with the
+terms of the license agreement you entered into with Oracle.
+
+This notice may not be removed or altered.
+-->
+
+<!--
+This is the XML DTD for the coherence-cache-config.xml configuration file.
+The configuration file should include a DOCTYPE of the following form:
+
+ <!DOCTYPE cache-config SYSTEM "cache-config.dtd">
+
+Version: Coherence 3.3
+Since  : Coherence 2.2
+Authors: ag, gg, jh, cp
+Acknowledgments: Jin Lim
+-->
+
+<!--
+The cache-config element is the root element of the cache-config descriptor.
+
+Used in: n/a
+-->
+<!ELEMENT cache-config
+  (caching-scheme-mapping, caching-schemes)>
+
+<!--
+The caching-scheme-mapping element contains the bindings between the cache
+names and the caching schemes specified for the caches to use.
+
+Used in: cache-config
+-->
+<!ELEMENT caching-scheme-mapping
+  (cache-mapping+)>
+
+<!--
+The cache-mapping element contains a single binding between a cache name and
+a caching scheme this cache will use. Following cache name patterns are
+supported:
+  - exact match, i.e. "MyCache",
+  - prefix match, i.e. "My*" that matches to any cache name starting with "My",
+  - any match "*", that matches to any cache name.
+
+Starting with Coherence 3.0 the cache-mapping element allows specifying
+replaceable cache scheme parameters by supplying any number of "init-param"
+elements.
+During cache scheme parsing, any occurrence of any replaceable parameter in
+format "{parameter-name}" is replaced with the corresponding parameter value.
+
+Consider the following cache mapping example:
+
+    <cache-mapping>
+      <cache-name>My*</cache-name>
+      <scheme-name>my-scheme</scheme-name>
+      <init-params>
+        <init-param>
+          <param-name>cache-loader</param-name>
+          <param-value>com.acme.MyCacheLoader</param-value>
+        </init-param>
+        <init-param>
+          <param-name>size-limit</param-name>
+          <param-value>1000</param-value>
+        </init-param>
+      </init-params>
+    </cache-mapping>
+
+For any matching cache name, any occurrence of the literal "{cache-loader}" in
+any part of the corresponding cache-scheme element will be replaced with the
+string "com.acme.MyCacheLoader" and any occurrence of the literal "{size-limit}"
+will be replaced with the value of "1000".
+
+Used in: caching-scheme-mapping
+-->
+<!ELEMENT cache-mapping
+  (cache-name, scheme-name, init-params?)>
+
+<!--
+The standalone-caching-scheme entity defines the selection of the standalone
+caching scheme types, designed to run in a single JVM and to be used by other
+caching schemes for data storage on for cache values on a specific
+participating cluster node.
+
+Used in: caching-schemes, internal-cache-scheme, front-scheme, back-scheme,
+         backing-map-scheme
+-->
+<!ENTITY % standalone-caching-scheme
+  "local-scheme | disk-scheme | external-scheme | paged-external-scheme | overflow-scheme | class-scheme">
+
+<!--
+The clustered-caching-scheme entity defines the selection of the clustered
+caching scheme types, designed to run in cluster of many JVMs and to assure
+cache coherence for all cluster nodes.
+
+Used in: caching-schemes, back-scheme
+-->
+<!ENTITY % clustered-caching-scheme
+  "distributed-scheme | replicated-scheme | optimistic-scheme">
+
+<!--
+The composite-caching-scheme entity defines the selection of the composite
+caching scheme types, designed to create multi-tiered clustered caches with
+persistence implementations, loaders, etc.  These caches utilize other caches
+as building blocks to provide more sophisticated functionality.
+
+Used in: caching-schemes
+-->
+<!ENTITY % composite-caching-scheme
+  "near-scheme | versioned-near-scheme | overflow-scheme">
+
+<!--
+The caching-scheme entity defines the selection of all available caching
+scheme types.
+
+Used in: caching-schemes
+-->
+<!ENTITY % caching-scheme
+  "%clustered-caching-scheme; | %standalone-caching-scheme; | %composite-caching-scheme; | invocation-scheme | read-write-backing-map-scheme | versioned-backing-map-scheme | remote-cache-scheme | remote-invocation-scheme | proxy-scheme">
+
+<!--
+The binary-store-manager entity defines the selection of a
+com.tangosol.io.BinaryStoreManager implementation class.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ENTITY % binary-store-manager
+  "(custom-store-manager | lh-file-manager | bdb-store-manager | nio-file-manager | nio-memory-manager)">
+
+<!--
+The caching-schemes element contains the definitions of all the available
+caching schemes.  Caching schemes can be defined from scratch or configured
+to use other caching schemes and override some of the characteristics of the
+schemes they use.  Specifying scheme-name allows for other schemes to refer
+to a scheme by its unique name.  Specifying scheme-ref allows for the scheme
+to inherit all the characteristics defined in the base scheme whose
+scheme-name is referred to by scheme-ref element, overriding any subset of
+its settings.
+
+Used in: cache-config
+-->
+<!ELEMENT caching-schemes
+  (%caching-scheme;)+>
+
+<!--
+The local-scheme element contains the local caching scheme configuration info.
+It should be used to specify and configure local caches or backing maps with
+various eviction policies.
+
+This scheme is implemented by com.tangosol.net.cache.LocalCache class
+(unless overridden by the class-name element).
+
+Used in: standalone-caching-scheme
+-->
+<!ELEMENT local-scheme
+  (scheme-name?, scheme-ref?, class-name?, service-name?, init-params?,
+  eviction-policy?, high-units?, low-units?, unit-calculator?, unit-factor?,
+  expiry-delay?, flush-delay?, cachestore-scheme?, pre-load?, listener?)>
+
+<!--
+The replicated-scheme element contains the replicated caching scheme
+configuration info.
+
+Used in: clustered-caching-scheme, version-transient-scheme,
+         version-persistent-scheme
+-->
+<!ELEMENT replicated-scheme
+  (scheme-name?, scheme-ref?, service-name?, serializer?, standard-lease-milliseconds?,
+  lease-granularity?, request-timeout?, backing-map-scheme?, listener?, autostart?)>
+
+<!--
+The distributed-scheme element contains the distributed caching scheme
+configuration info.
+
+Used in: clustered-caching-scheme, version-transient-scheme,
+         version-persistent-scheme
+-->
+<!ELEMENT distributed-scheme
+  (scheme-name?, scheme-ref?, service-name?, serializer?, thread-count?,
+  standard-lease-milliseconds?, lease-granularity?, local-storage?,
+  partition-count?, transfer-threshold?, backup-count?,
+  backup-count-after-writebehind?, backup-storage?,
+  key-associator?, key-partitioning?, partition-listener?,
+  task-hung-threshold?, task-timeout?, request-timeout?,
+  operation-bundling?, backing-map-scheme?, listener?, autostart?)>
+
+<!--
+The optimistic-scheme element contains the optimistic caching scheme
+configuration info.
+
+Used in: clustered-caching-scheme
+-->
+<!ELEMENT optimistic-scheme
+  (scheme-name?, scheme-ref?, service-name?, serializer?, request-timeout?,
+  backing-map-scheme?, listener?, autostart?)>
+
+<!--
+The invocation-scheme element contains the invocation scheme
+configuration info.
+
+Used in: caching-scheme
+-->
+<!ELEMENT invocation-scheme
+  (scheme-name?, scheme-ref?, service-name?, serializer?, thread-count?,
+  task-hung-threshold?, task-timeout?, request-timeout?, autostart?)>
+
+<!--
+The near-scheme element contains the near caching scheme configuration info.
+
+This scheme is implemented by com.tangosol.net.cache.NearCache class
+(unless overridden by the class-name element).
+
+Used in: composite-caching-scheme
+-->
+<!ELEMENT near-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  front-scheme?, back-scheme?, invalidation-strategy?,
+  listener?, autostart?)>
+
+<!--
+The versioned-near-scheme element contains the versioned near caching scheme
+configuration info.
+
+This scheme is implemented by com.tangosol.net.cache.VersionedNearCache class
+(unless overridden by the class-name element).
+
+This caching scheme is deprecated, as the corresponding functionality is
+completely covered by the standard near-scheme topology.
+
+Used in: composite-caching-scheme
+-->
+<!ELEMENT versioned-near-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  front-scheme?, back-scheme?, version-transient-scheme?,
+  listener?, autostart?)>
+
+<!--
+The overflow-scheme element contains the overflow caching scheme
+configuration info.
+
+To enable the automatic expiration of cache entries in the overflow cache
+based on the time-to-live setting passed to "put(key, value, ttl)", set
+the expiry-enabled element to true or provide a default expiry in the
+expiry-delay element.
+
+This scheme is implemented by com.tangosol.net.cache.OverflowMap class
+or by com.tangosol.net.cache.SimpleOverflowMap class (unless overridden by
+the class-name element). To explicitly use either the OverflowMap or the
+SimpleOverflowMap implementation, specify com.tangosol.net.cache.OverflowMap
+or com.tangosol.net.cache.SimpleOverflowMap explicitly in the class-name
+element. Otherwise, if expiry-enabled is true or if the back-scheme is
+an observable implementation, then the OverflowMap will be used. Otherwise,
+the SimpleOverflowMap will be used.
+
+Used in: composite-caching-scheme
+-->
+<!ELEMENT overflow-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  front-scheme?, back-scheme?, miss-cache-scheme?,
+  expiry-enabled?, expiry-delay?, listener?)>
+
+<!--
+The expiry-enabled setting turns on support for automatically-expiring data, as
+provided by the CacheMap API.
+
+Used in: overflow-scheme
+-->
+<!ELEMENT expiry-enabled (#PCDATA)>
+
+<!--
+The read-write-backing-map-scheme element contains the read-write backing map
+configuration info.
+
+This scheme is implemented by com.tangosol.net.cache.ReadWriteBackingMap class
+(unless overridden by the class-name element).
+
+Used in: caching-scheme
+-->
+<!ELEMENT read-write-backing-map-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  internal-cache-scheme?, miss-cache-scheme?, cachestore-scheme?,
+  read-only?, (write-delay | write-delay-seconds)?, write-batch-factor?,
+  write-requeue-threshold?, refresh-ahead-factor?, cachestore-timeout?,
+  rollback-cachestore-failures?, listener?)>
+
+<!--
+The versioned-backing-map-scheme element contains the versioned read-write
+backing map configuration info.
+
+This scheme is implemented by com.tangosol.net.cache.VersionedBackingMap class
+(unless overridden by the class-name element).
+
+This caching scheme is deprecated, as the corresponding functionality is
+completely covered by the standard read-write-backing-map-scheme topology.
+
+Used in: caching-scheme
+-->
+<!ELEMENT versioned-backing-map-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  internal-cache-scheme?, miss-cache-scheme?, cachestore-scheme?,
+  read-only?, (write-delay | write-delay-seconds)?, write-batch-factor?,
+  write-requeue-threshold?, refresh-ahead-factor?,
+  rollback-cachestore-failures?, version-persistent-scheme?,
+  version-transient-scheme?, manage-transient?, listener?, autostart?)>
+
+<!--
+The internal-cache-scheme element contains the internal cache storage
+configuration info.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT internal-cache-scheme
+  (%standalone-caching-scheme;)>
+
+<!--
+The miss-cache-scheme element contains configuration info for the local cache
+used to register cachestore misses.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT miss-cache-scheme
+  (local-scheme)>
+
+<!--
+The cachestore-scheme element contains the cachestore configuration info.
+
+Implementation classes should implement one of two interfaces:
+com.tangosol.net.cache.CacheLoader or com.tangosol.net.cache.CacheStore
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme,
+         local-scheme
+-->
+<!ELEMENT cachestore-scheme
+  (scheme-name?, scheme-ref?, (class-scheme | remote-cache-scheme)?,
+   operation-bundling?)>
+
+<!--
+Deprecated: use external-scheme or paged-external-scheme instead.
+
+The disk-scheme element contains the configuration info for a cache storage
+that is not JVM heap based.
+
+This scheme is implemented by com.tangosol.net.cache.SerializationMap for
+size unlimited cache, com.tangosol.net.cache.SerializationCache for size
+limited cache, and com.tangosol.net.cache.SerializationPagedCache for paged
+cache scenario.
+The implementation type is chosen based on the following rule:
+  - if both page-limit and page-duration elements are specified and
+    not zero then the SerializationPagedCache is used;
+  - else if high-units element is specified and not zero then
+    the SerializationCache is used;
+  - otherwise SerializationMap is used.
+
+(See http://www.tangosol.com/downloads/WriteMostlyBrief.pdf for details
+about the Serailization Paged Cache.)
+
+The actual com.tangosol.io.BinaryStore implementation supplied to the
+SerializationMap or SerializationCache depends on the value of the
+file-manager element.
+The actual com.tangosol.io.BinaryStoreManager implementation supplied to the
+SerializationPagedCache depends on the value of the file-manager element.
+
+Used in: standalone-caching-scheme
+-->
+<!ELEMENT disk-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  file-manager?, (root-directory | directory)?, file-name?, high-units?,
+  initial-size?, maximum-size?, page-limit?, page-duration?, listener?,
+  async?, async-limit?)>
+
+<!--
+The external-scheme element contains the configuration info for a cache that
+is not JVM heap based.
+
+This scheme is implemented by the com.tangosol.net.cache.SerializationMap class
+for size unlimited caches and the com.tangosol.net.cache.SerializationCache
+class for size limited caches.
+
+The implementation type is chosen based on the following rule:
+  - if the high-units element is specified and not zero then SerializationCache
+    is used (and the unit-calculator element is respected);
+  - otherwise SerializationMap is used.
+
+The actual com.tangosol.io.BinaryStore implementation supplied to the
+SerializationMap or SerializationCache depends on the specified
+store manager configuration (one of async-store-manager, custom-store-manager,
+lh-file-manager, bdb-store-manager, nio-file-manager, or nio-memory-manager).
+-->
+<!ELEMENT external-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  (async-store-manager | %binary-store-manager;)?, high-units?,
+  unit-calculator?, unit-factor?, expiry-delay?, listener?)>
+
+<!--
+The paged-external-scheme element contains the configuration info for a cache
+that is not JVM heap based and that implements an LRU policy using time-based
+paging.
+
+This scheme is implemented by the com.tangosol.net.cache.SerializationPagedCache
+class. A detailed description of the paged cache functionality can be found
+at http://www.tangosol.com/downloads/WriteMostlyBrief.pdf.
+
+The actual com.tangosol.io.BinaryStoreManager implementation supplied to the
+SerializationPagedCache depends on the specified store manager configuration
+(one of async-store-manager, custom-store-manager, lh-file-manager,
+bdb-store-manager, nio-file-manager, or nio-memory-manager).
+-->
+<!ELEMENT paged-external-scheme
+  (scheme-name?, scheme-ref?, class-name?, init-params?,
+  (async-store-manager | %binary-store-manager;)?, page-limit?, page-duration?,
+  listener?)>
+
+<!--
+The remote-cache-scheme element contains the configuration info necessary to
+use a clustered cache from outside the cluster.
+
+Used in: caching-schemes, cachestore-scheme, back-scheme
+-->
+<!ELEMENT remote-cache-scheme
+  (scheme-name?, scheme-ref?, service-name?, operation-bundling?,
+  initiator-config?)>
+
+<!--
+The remote-invocation-scheme element contains the configuration info necessary
+to execute tasks within the context of a cluster without having to first join
+the cluster.
+
+Used in: caching-schemes
+-->
+<!ELEMENT remote-invocation-scheme
+  (scheme-name?, scheme-ref?, service-name?, initiator-config?)>
+
+<!--
+The proxy-scheme element contains the configuration info for a clustered
+service that allows clients to use clustered services without having to
+join the cluster.
+
+Used in: caching-schemes
+-->
+<!ELEMENT proxy-scheme
+  (scheme-name?, scheme-ref?, service-name?, thread-count?,
+  task-hung-threshold?, task-timeout?, request-timeout?, acceptor-config?,
+  proxy-config?, autostart?)>
+
+<!--
+The front-scheme element contains the front tier cache configuration info.
+
+Used in: versioned-near-scheme, versioned-backing-map-scheme,
+         overflow-scheme, near-scheme
+-->
+<!ELEMENT front-scheme
+  (%standalone-caching-scheme;)>
+
+<!--
+The back-scheme element contains the back tier cache configuration info.
+
+Used in: versioned-near-scheme, versioned-backing-map-scheme,
+         overflow-scheme, near-scheme
+-->
+<!ELEMENT back-scheme
+  (%clustered-caching-scheme; | %standalone-caching-scheme; | remote-cache-scheme)>
+
+<!--
+The version-persistent-scheme element contains the persistent version cache
+configuration info.
+
+This caching scheme is deprecated, as the corresponding functionality is
+completely covered by the standard near-scheme and read-write-backing-map-scheme
+topologies.
+
+Used in: versioned-backing-map-scheme
+-->
+<!ELEMENT version-persistent-scheme
+  (cache-name-suffix?, (replicated-scheme | distributed-scheme))>
+
+<!--
+The version-transient-scheme element contains transient version cache
+configuration info.
+
+This caching scheme is deprecated, as the corresponding functionality is
+completely covered by the standard near-scheme and read-write-backing-map-scheme
+topologies.
+
+Used in: versioned-backing-map-scheme, versioned-near-scheme
+-->
+<!ELEMENT version-transient-scheme
+  (cache-name-suffix?, (replicated-scheme | distributed-scheme))>
+
+<!--
+The backing-map-scheme element contains the backing map configuration info.
+
+Note: the partitioned element is used if and only if the parent element is the
+distributed-scheme.
+
+Used in: replicated-scheme, distributed-scheme, optimistic-scheme
+-->
+<!ELEMENT backing-map-scheme
+  (partitioned?, (%standalone-caching-scheme; | overflow-scheme |
+   read-write-backing-map-scheme | versioned-backing-map-scheme))>
+
+<!--
+The class-scheme element contains the class configuration info.
+
+In most cases, the class-name element is used to specify the name of the
+class to instantiate directly. For example:
+
+  <class-scheme>
+    <class-name>com.tangosol.util.SafeHashMap</class-name>
+  </class-scheme>
+
+Starting with Coherence 3.2, it is possible to specify a static factory
+method to call instead. To specify the factory approach, provide both the
+class-factory-name and method-name elements corresponding to the static
+factory method that returns the new object instance. For example, to provide
+a Map that contains no data whatsoever (and discards any data that is passed
+to it):
+
+  <class-scheme>
+    <class-factory-name>com.tangosol.util.NullImplementation</class-factory-name>
+    <method-name>getObservableMap</method-name>
+  </class-scheme>
+
+Used in: standalone-caching-scheme, cachestore-scheme
+-->
+<!ELEMENT class-scheme
+  (scheme-name?, scheme-ref?, (class-name | (class-factory-name, method-name)),
+   init-params?, listener?)>
+
+<!--
+The async-store-manager element specifies the configuration info for a wrapper
+com.tangosol.io.BinaryStoreManager implementation that creates wrapper
+com.tangosol.io.BinaryStore objects that perform write operations
+asynchronously.
+
+This store manager is implemented by the com.tangosol.io.AsyncBinaryStoreManager
+class. The BinaryStore objects created by this class are instances of
+com.tangosol.io.AsyncBinaryStore.
+
+Used in: external-scheme, paged-external-scheme
+-->
+<!ELEMENT async-store-manager
+  (class-name?, init-params?, %binary-store-manager;, async-limit?)>
+
+<!--
+The custom-store-manager element specifies the configuration info for a custom
+com.tangosol.io.BinaryStoreManager implementation class.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ELEMENT custom-store-manager
+  (class-name, init-params?)>
+
+<!--
+The lh-file-manager element specifies the configuration info for a
+com.tangosol.io.BinaryStoreManager implementation that creates
+com.tangosol.io.BinaryStore objects that use LH files for their underlying
+storage.
+
+This store manager is implemented by the com.tangosol.io.lh.LHBinaryStoreManager
+class. The BinaryStore objects created by this class are instances of
+com.tangosol.io.lh.LHBinaryStore.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ELEMENT lh-file-manager
+  (class-name?, init-params?, directory?, file-name?)>
+
+<!--
+The bdb-store-manager element specifies the configuration info for a
+com.tangosol.io.BinaryStoreManager implementation that creates
+com.tangosol.io.BinaryStore objects that use Berkeley DB JE for their
+underlying storage.
+
+This store manager is implemented by the
+com.tangosol.io.bdb.BerkeleyDBBinaryStoreManager class. The BinaryStore
+objects created by this class are instances of
+com.tangosol.io.bdb.BerkeleyDBBinaryStore.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ELEMENT bdb-store-manager
+  (class-name?, init-params?, directory?, store-name?)>
+
+<!--
+The nio-file-manager element specifies the configuration info for a
+com.tangosol.io.BinaryStoreManager implementation that creates
+com.tangosol.io.BinaryStore objects that use NIO memory mapped files for
+their underlying storage.
+
+This store manager is implemented by the com.tangosol.io.nio.MappedStoreManager
+class. The BinaryStore objects created by this class are instances of
+com.tangosol.io.nio.BinaryMap.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ELEMENT nio-file-manager
+  (class-name?, init-params?, initial-size?, maximum-size?, directory?)>
+
+<!--
+The nio-memory-manager element specifies the configuration info for a
+com.tangosol.io.BinaryStoreManager implementation that creates
+com.tangosol.io.BinaryStore objects that use direct java.nio.ByteBuffer
+objects for their underlying storage.
+
+This store manager is implemented by the com.tangosol.io.nio.DirectStoreManager
+class. The BinaryStore objects created by this class are instances of
+com.tangosol.io.nio.BinaryMap.
+
+Used in: external-scheme, paged-external-scheme, async-store-manager
+-->
+<!ELEMENT nio-memory-manager
+  (class-name?, init-params?, initial-size?, maximum-size?)>
+
+<!--
+The operation-bundling element specifies the configuration info for a
+particular bundling strategy.
+
+Bundling is a process of coalescing multiple individual operations into
+"bundles". It could be beneficial when (1) there is a continuous stream of
+operations on multiple threads in parallel; (2) individual operations have
+relatively high latency (network or database-related); and (3) there are
+functionally analogous [bulk] operations that take a collection of arguments
+instead of a single one without causing the latency to grow linearly
+(as a function of the collection size).
+
+Note: As with any bundling algorithm, there is a natural trade-off between the
+resource utilization and average request latency. Depending on a particular
+application usage pattern, enabling this feature may either help or hurt the
+overall application performance.
+
+See com.tangosol.net.cache.AbstractBundler for additional implementation details.
+
+Used in: cachestore-scheme, distributed-scheme, remote-cache-scheme
+-->
+<!ELEMENT operation-bundling
+    (bundle-config+)>
+
+<!--
+The  bundle-config element specifies the bundling strategy configuration for
+one or more bundle-able operations.
+
+Used in: operation-bundling
+-->
+<!ELEMENT bundle-config
+    (operation-name, preferred-size?, delay-millis?, thread-threshold?,
+    auto-adjust?)>
+
+<!--
+The initiator-config element specifies the configuration info for a
+protocol-specific connection initiator. A connection initiator allows a
+client to connect to a cluster (via a connection acceptor) and use the
+clustered services offered by the cluster without having to first join the
+cluster.
+
+Used in: remote-cache-scheme, remote-invocation-scheme
+-->
+<!ELEMENT initiator-config
+  ((jms-initiator | tcp-initiator), outgoing-message-handler?, use-filters?,
+  serializer?)>
+
+<!--
+The acceptor-config element specifies the configuration info for a
+protocol-specific connection acceptor used by a proxy service to enable
+clients to connect to the cluster and use the services offered by the
+cluster without having to join the cluster.
+
+Used in: proxy-scheme
+ -->
+<!ELEMENT acceptor-config
+  ((jms-acceptor | tcp-acceptor), outgoing-message-handler?, use-filters?,
+  serializer?, connection-limit?)>
+
+<!--
+The proxy-config element specifies the configuration info for the clustered
+service proxies managed by a proxy service. A service proxy is an intermediary
+between a remote client (connected to the cluster via a connection acceptor)
+and a clustered service used by the remote client.
+
+Used in: proxy-scheme
+-->
+<!ELEMENT proxy-config
+  (cache-service-proxy?, invocation-service-proxy?)>
+
+<!--
+The jms-initiator element specifies the configuration info for a connection
+initiator that enables clients to connect to a remote cluster via JMS.
+
+Used in: initiator-config
+-->
+<!ELEMENT jms-initiator
+  (queue-connection-factory-name, queue-name, connect-timeout?)>
+
+<!--
+The tcp-initiator element specifies the configuration info for a connection
+initiator that enables clients to connect to a remote cluster via TCP/IP.
+
+Used in: initiator-config
+-->
+<!ELEMENT tcp-initiator
+  (local-address?, remote-addresses, reuse-address?, keep-alive-enabled?, tcp-delay-enabled?,
+  receive-buffer-size?, send-buffer-size?, connect-timeout?, linger-timeout?)>
+
+<!--
+The jms-acceptor element specifies the configuration info for a connection
+acceptor that accepts connections from remote clients over JMS.
+
+Used in: acceptor-config
+-->
+<!ELEMENT jms-acceptor
+  (queue-connection-factory-name, queue-name)>
+
+<!--
+The tcp-acceptor element specifies the configuration info for a connection
+acceptor that accepts connections from remote clients over TCP/IP.
+
+Used in: acceptor-config
+-->
+<!ELEMENT tcp-acceptor
+  ((local-address | address-provider), reuse-address?, keep-alive-enabled?,
+  tcp-delay-enabled?, receive-buffer-size?, send-buffer-size?, listen-backlog?,
+  linger-timeout?, authorized-hosts?)>
+
+<!--
+The authorized-hosts element contains the collection of IP addresses of
+TCP/IP initiator hosts that are allowed to connect to the cluster via a
+TCP/IP acceptor. If this collection is empty no constraints are imposed.
+
+Used in: cluster-config
+-->
+<!ELEMENT authorized-hosts
+  (host-address*, host-range*, host-filter?)>
+
+<!--
+The host-range element describes a range of IP addresses.
+
+Used in: authorized-hosts
+-->
+<!ELEMENT host-range
+  (from-address, to-address)>
+
+<!--
+The host-filter element contains the class configuration info for a
+com.tangosol.util.Filter implementation that is used by a TCP/IP acceptor to
+determine whether to accept a particular TCP/IP initiator. The evaluate()
+method will be passed the java.net.InetAddress of the client. Implementations
+should return "true" to allow the client to connect.
+
+Used in: authorized-hosts
+-->
+<!ELEMENT host-filter
+  (class-name, init-params?)>
+
+<!--
+The outgoing-message-handler specifies the configuration info used to detect
+dropped client-to-cluster connections. For connection initiators and acceptors
+that use connectionless protocols (e.g. JMS), this information is necessary
+to proactively detect and release resources allocated to dropped connections.
+Connection-oriented initiators and acceptors can also use this information as
+an additional mechanism to detect dropped connections.
+
+Used in: initiator-config, acceptor-config
+-->
+<!ELEMENT outgoing-message-handler
+  (heartbeat-interval?, heartbeat-timeout?, request-timeout?)>
+
+<!--
+The use-filters element contains the list of filter names to be used
+by a connection initiator or acceptor.
+
+Used in: initiator-config, acceptor-config
+-->
+<!ELEMENT use-filters
+  (filter-name*)>
+
+<!--
+The serializer element contains the class configuration info for a
+com.tangosol.io.Serializer implementation.
+
+Used in: initiator-config, acceptor-config, distributed-scheme,
+replicated-scheme, optimistic-scheme, invocation-scheme
+-->
+<!ELEMENT serializer
+  (class-name, init-params?)>
+
+<!--
+The cache-service-proxy element contains the configuration info for a
+cache service proxy managed by a proxy service.
+
+Used in: proxy-config
+-->
+<!ELEMENT cache-service-proxy
+  (enabled?, lock-enabled?, read-only?)>
+
+<!--
+The cache-service-proxy element contains the configuration info for an
+invocation service proxy managed by a proxy service.
+
+Used in: proxy-config
+-->
+<!ELEMENT invocation-service-proxy
+  (enabled?)>
+
+<!--
+The local-address element specifies the local address (IP or DNS name) and
+port that a TCP/IP socket will be bound to.
+
+Note: As of Coherence 3.5 the "reusable" element is deprecated; use the
+      "reuse-address" element for the tcp-acceptor and tcp-initiator instead.
+
+Used in: tcp-initiator, tcp-acceptor
+-->
+<!ELEMENT local-address
+  (address?, port?)>
+
+<!--
+The remote-addresses element contains the address (IP or DNS name) and
+port of one or more TCP/IP connection acceptors. The TCP/IP connection
+initiator uses this information to establish a TCP/IP connection with a
+remote cluster. The TCP/IP connection initiator will attempt to connect to
+the addresses in a random order, until either the list is exhausted or a
+TCP/IP connection is established.
+
+Used in: tcp-initiator
+-->
+<!ELEMENT remote-addresses
+  (socket-address+ | address-provider)>
+
+<!--
+The socket-address element specifies the address (IP or DNS name) and port
+of a TCP/IP connection acceptor.
+
+Used in: remote-addresses
+-->
+<!ELEMENT socket-address
+  (address, port)>
+
+<!--
+The address-provider element contains the configuration info for an address
+factory that implements the com.tangosol.net.AddressProvider interface.
+
+Used in: tcp-initiator
+-->
+<!ELEMENT address-provider
+  ((class-name | (class-factory-name, method-name)), init-params?)>
+
+<!--
+The init-params element contains class initialization parameter configuration
+info.
+
+Used in: class-scheme, local-scheme, near-scheme, versioned-near-scheme,
+         overflow-scheme, read-write-backing-map-scheme,
+         versioned-backing-map-scheme, disk-scheme, external-scheme,
+         paged-external-scheme, async-store-manager, custom-store-manager,
+         lh-file-manager, bdb-store-manager, nio-file-manager,
+         nio-memory-manager, serializer, address-provider
+-->
+<!ELEMENT init-params
+  (init-param*)>
+
+<!--
+The init-param element contains the single class initialization parameter
+configuration info.
+
+Used in: init-params
+-->
+<!ELEMENT init-param
+  ((param-name | param-type), param-value)>
+
+<!--
+The backup-storage element contains the backup storage configuration info.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT backup-storage
+  (type, ((initial-size?, maximum-size?, directory?) | class-name? | scheme-name?))>
+
+<!--
+The key-associator element contains the configuration info for a class
+that implements the com.tangosol.net.partition.KeyAssociator interface.
+This implementation must have a public default constructor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT key-associator (class-name)>
+
+<!--
+The key-partitioning element contains the configuration info for a class
+that implements the com.tangosol.net.partition.KeyPartitioningStrategy
+interface. This implementation must have a public default constructor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT key-partitioning (class-name)>
+
+<!--
+The partition-listener element contains the configuration info for a class
+that implements the com.tangosol.net.partition.PartitionListener
+interface. This implementation must have a public default constructor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT partition-listener (class-name)>
+
+<!--
+The task-hung-threshold element specifies the amount of time in milliseconds
+that a request can execute on a service worker thread before it is considered
+as "hung".
+
+Note 1: This element is applicable only if the "thread-count" value is positive.
+Note 2: While a request is queued up and until the actual processing starts,
+the corresponding task is never considered as hung.
+
+Used in: distributed-scheme, invocation-scheme, proxy-scheme
+-->
+<!ELEMENT task-hung-threshold (#PCDATA)>
+
+<!--
+For the partitioned (distributed) cache service the task-timeout element
+specifies the timeout value in milliseconds for requests executing on the
+service worker threads.
+
+For the invocation service, it specifies the timeout value for Invocable tasks
+that implement the com.tangosol.net.PriorityTask interface, but don't explicitly
+specify the execution timeout value (getExecutionTimeoutMillis() returns zero).
+
+A value of zero indicates that the default timeout (as specified by
+service-guardian/timeout-milliseconds in the operational configuration
+descriptor) will be used.
+
+Note: This element is applicable only if the "thread-count" value is positive.
+
+Used in: distributed-scheme, invocation-scheme, proxy-scheme
+-->
+<!ELEMENT task-timeout (#PCDATA)>
+
+<!--
+The cache-name element specifies the name of the cache.  The name is unique
+within a cache factory.
+
+Used in: cache-mapping
+-->
+<!ELEMENT cache-name (#PCDATA)>
+
+<!--
+The cache-name-suffix element specifies the name modifier that is used
+to create a cache of version objects associated with a given cache.
+The value of this element is appended to the base cache name.
+
+The default values are "-version" for version-transient-scheme and
+"-persist" for version-persistent-scheme element.
+
+Used in: version-persistent-scheme, version-transient-scheme
+-->
+<!ELEMENT cache-name-suffix (#PCDATA)>
+
+<!--
+The service-name element contains the service name configuration info.
+
+Used in: replicated-scheme, distributed-scheme, optimistic-scheme,
+         local-scheme, invocation-scheme
+-->
+<!ELEMENT service-name (#PCDATA)>
+
+<!--
+The class-name element specifies a fully specified name of a Java class.
+
+Note: in all schemes except the class-scheme, the specified class must:
+  a) extend the corresponding scheme implementation class
+  b) use identical set of parameters for its constructors
+
+Used in: class-scheme, local-scheme, near-scheme, versioned-near-scheme,
+         overflow-scheme, read-write-backing-map-scheme,
+         versioned-backing-map-scheme, disk-scheme, external-scheme,
+         paged-external-scheme, async-store-manager, custom-store-manager,
+         lh-file-manager, bdb-store-manager, nio-file-manager,
+         nio-memory-manager, serializer
+-->
+<!ELEMENT class-name (#PCDATA)>
+
+<!--
+The class-factory-name element specifies a fully specified name of a Java
+class that will be used by the factory approach for the class-scheme.
+
+Used in: class-scheme
+-->
+<!ELEMENT class-factory-name (#PCDATA)>
+
+<!--
+The method-name element specifies a fully specified name of a static factory
+method that will be used by the factory approach for the class-scheme.
+
+Used in: method-scheme
+-->
+<!ELEMENT method-name (#PCDATA)>
+
+<!--
+The param-name element specifies the name of the initialization parameter.
+
+When param-name is specified, if the class being constructed and configured
+implements the XmlConfigurable interface, then a series of init-param
+elements can be transposed in order to build a configuration XML with which
+to configure the constructed object. For example, consider the following
+init-params element:
+
+      <init-params>
+        <init-param>
+          <param-name>shape</param-name>
+          <param-value>circle</param-value>
+        </init-param>
+        <init-param>
+          <param-name>color</param-name>
+          <param-value>blue</param-value>
+        </init-param>
+      </init-params>
+
+If transposed, the result would be:
+
+      <some-arbitrary-element-name>
+        <shape>circle</shape>
+        <color>blue</color>
+      </some-arbitrary-element-name>
+
+Used in: init-param
+-->
+<!ELEMENT param-name (#PCDATA)>
+
+<!--
+The param-type element specifies the Java type of initialization parameter.
+
+Supported types are:
+  - string   - indicates that the value is a java.lang.String
+  - boolean  - indicates that the value is a java.lang.Boolean
+  - int      - indicates that the value is a java.lang.Integer
+  - long     - indicates that the value is a java.lang.Long
+  - double   - indicates that the value is a java.lang.Double
+  - decimal  - indicates that the value is a java.math.BigDecimal
+  - file     - indicates that the value is a java.io.File
+  - date     - indicates that the value is a java.sql.Date
+  - time     - indicates that the value is a java.sql.Time
+  - datetime - indicates that the value is a java.sql.Timestamp
+  - xml      - indicates that the value is the param-value XmlElement
+  - java.lang.ClassLoader - the param-value must be "{class-loader}"
+  - com.tangosol.net.BackingMapManagerContext - the param-value must be
+    "{manager-context}"
+  - {scheme-ref} - the param-value must be a name of an existing
+    "scheme-name" element
+  - {cache-ref} - the param-value should be a valid cache name
+
+The value is converted to the specified type, and the target constructor or
+method must have a parameter of that type in order for the instantiation to
+succeed.
+
+Used in: init-param
+-->
+<!ELEMENT param-type (#PCDATA)>
+
+<!--
+The param-value element specifies a value of the initialization parameter.
+
+The value is in a format specific to the type of the parameter.
+
+There are following pre-defined values (macros):
+    - {class-loader} - represents the context ClassLoader
+    - {manager-context} - represents the the backing map manager context
+    - {cache-name} - represents the cache name
+
+The value element can also contain a user-defined macro in the following format:
+    {user-defined-parameter default-value}
+
+The values for user-defined parameters could be specified by the corresponding
+init-param elements in the caching-scheme-mapping/cache-mapping section.
+For example, the following cache-mapping elements assigns a value of 10000 to
+the custom parameter called "back-size-limit":
+
+    <cache-mapping>
+      <cache-name>dist-*</cache-name>
+      <scheme-name>example-distributed</scheme-name>
+      <init-params>
+        <init-param>
+          <param-name>back-size-limit</param-name>
+          <param-value>10000</param-value>
+        </init-param>
+      </init-params>
+    </cache-mapping>
+
+That parameter could be used by any elements in the corresponding scheme. In our
+case, the following scheme would resolve the value of the "high-units" to 10000:
+
+    <local-scheme>
+      <scheme-name>example-backing-map</scheme-name>
+      <high-units>{back-size-limit 0}</high-units>
+    </local-scheme>
+
+Used in: init-param
+-->
+<!ELEMENT param-value (#PCDATA)>
+
+<!--
+The listener element contains the cache listener configuration info.
+
+Implementation classes should implement com.tangosol.util.MapListener
+interface.
+
+Used in: local-scheme, replicated-scheme, distributed-scheme,
+         optimistic-scheme, near-scheme, versioned-near-scheme,
+         overflow-scheme, read-write-backing-map-scheme,
+         versioned-backing-map-scheme, disk-scheme, external-scheme,
+         paged-external-scheme
+-->
+<!ELEMENT listener (class-scheme)>
+
+<!--
+The autostart element is intended to be used by cache servers
+(i.e. com.tangosol.net.DefaultCacheServer). It specifies whether or not the
+cache services associated with the cache scheme should be automatically
+started at a cluster node.
+
+Valid values are "true" or "false". Default value is false.
+
+Used in: replicated-scheme, distributed-scheme, optimistic-scheme,
+         invocation-scheme, near-scheme, versioned-near-scheme,
+         read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT autostart (#PCDATA)>
+
+<!--
+The scheme-name element contains the scheme name. The name is unique
+within a configuration file.
+
+Used in: cache-mapping, local-scheme, replicated-scheme, distributed-scheme,
+         optimistic-scheme, invocation-scheme, overflow-scheme, near-scheme,
+         versioned-near-scheme, read-write-backing-map-scheme,
+         versioned-backing-map-scheme, disk-scheme, external-scheme,
+         paged-external-scheme, remote-cache-scheme, remote-invocation-scheme,
+         proxy-scheme
+-->
+<!ELEMENT scheme-name (#PCDATA)>
+
+<!--
+The scheme-ref element contains the scheme name of the scheme whose
+configuration should be used as an overridable base.
+
+Used in: local-scheme, replicated-scheme, distributed-scheme,
+         optimistic-scheme, invocation-scheme, overflow-scheme, near-scheme,
+         versioned-near-scheme, read-write-backing-map-scheme,
+         versioned-backing-map-scheme, disk-scheme, external-scheme,
+         paged-external-scheme, remote-cache-scheme, remote-invocation-scheme,
+         proxy-scheme
+-->
+<!ELEMENT scheme-ref (#PCDATA)>
+
+<!--
+The partitioned element specifies whether or not the enclosed backing map
+is a PartitionAwareBackingMap. (This element is respected only for
+backing-map-scheme that is a child of a distributed-scheme.) If set to true,
+the specific scheme contained in the backing-map-scheme element will be used to
+configure backing maps for each individual partition of the
+PartitionAwareBackingMap; otherwise it is used for the entire backing map itself.
+
+The concrete implementations of the PartitionAwareBackingMap interface are:
+- com.tangosol.net.partition.ObservableSplittingBackingCache
+- com.tangosol.net.partition.PartitionSplittingBackingMap
+- com.tangosol.net.partition.ReadWriteSplittingBackingMap
+
+Valid values are "true" or "false". Default value is false.
+
+Used in: backing-map-scheme (within a distributed-scheme only)
+-->
+<!ELEMENT partitioned (#PCDATA)>
+
+<!--
+The eviction-policy element contains the eviction policy configuration info.
+
+Valid values are "LRU", "LFU" and "HYBRID".
+
+The HYBRID eviction policy is a combination of LRU (Least Recently Used) and
+LFU (Least Frequently Used).  It's a strategy based on entries "priority".
+The higher the priority, the higher is the probability of the entry being pruned
+out of the cache.  The priority is calculated as a sum of weighted logarithmic
+measures of two different factors: the "recentness" and the "frequency".  The
+algorithm is structured in such a way that if cache entries are used very rarely,
+the eviction strategy becomes equivalent to that of LRU and if all entries are
+used quite often then the eviction strategy becomes equivalent to that of LFU.
+
+Alternatively, this element may contain a class-scheme element that specifies a
+custom eviction policy class. The specified class must implement the
+LocalCache.EvictionPolicy interface.
+
+Used in: local-scheme
+-->
+<!ELEMENT eviction-policy (#PCDATA | class-scheme)*>
+
+<!--
+The high-units element contains the maximum number of cache entries that a
+cache will hold before pruning occurs.
+
+Valid values are positive integers and zero.
+
+Used in: local-scheme, disk-scheme, external-scheme
+-->
+<!ELEMENT high-units (#PCDATA)>
+
+<!--
+The low-units element contains the number of cache entries to which the cache
+will be pruned when cache pruning occurs.
+
+Valid values are positive integers and zero.
+
+Used in: local-scheme
+-->
+<!ELEMENT low-units (#PCDATA)>
+
+<!--
+The unit-calculator element contains the unit calculator configuration info.
+
+Valid values are "FIXED" and "BINARY".
+
+A unit calculator is used to determine the cost (in "units") of a given
+object. The FIXED unit calculator assigns an equal weight of 1 to all cached
+objects. The BINARY unit calculator assigns an object a weight equal to the
+number of bytes of memory required to cache the object. See the JavaDoc for
+the BinaryMemoryCalculator class for additional details.
+
+Alternatively, this element may contain a class-scheme element that specifies a
+custom unit calculator class. The specified class must implement the
+LocalCache.UnitCalculator interface.
+
+Used in: local-scheme, external-scheme
+-->
+<!ELEMENT unit-calculator (#PCDATA | class-scheme)*>
+
+<!--
+The unit-factor element specifies the factor by which the units, low-units and
+high-units properties are adjusted. Using a BINARY unit calculator, for example,
+the factor  of 1048576 could be used to count megabytes instead of bytes.
+
+Note: This element was introduced only to avoid changing the type of the units,
+low units and high units properties from 32-bit values to 64-bit values.
+It is expected that the parameter will be dropped in Coherence 4.
+
+Valid values are positive integer numbers. Default value is 1.
+
+Used in: local-scheme, external-scheme
+-->
+<!ELEMENT unit-factor (#PCDATA)>
+
+<!--
+The expiry-delay element specifies the amount of time from last update that
+entries will be kept by the cache before being discarded.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of seconds is assumed.
+
+Used in: local-scheme, external-scheme, overflow-scheme
+-->
+<!ELEMENT expiry-delay (#PCDATA)>
+
+<!--
+The flush-delay element specifies the amount of time between cache flushes.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of seconds is assumed.
+
+If expiry is enabled, the default flush-delay is 1m, otherwise a default of zero
+is used and automatic flushes are disabled
+
+Used in: local-scheme
+-->
+<!ELEMENT flush-delay (#PCDATA)>
+
+<!--
+The invalidation-strategy element specifies the strategy used for a front
+map invalidation.
+Please see the JavaDoc for com.tangosol.net.cache.NearCache class.
+
+Valid values are "none", "present", "all", "auto".
+
+Default value is "auto".
+
+Used in: near-scheme
+-->
+<!ELEMENT invalidation-strategy (#PCDATA)>
+
+<!--
+The file-manager element contains the file manager type that specifies the
+com.tangosol.io.BinaryStore or com.tangosol.io.BinaryStoreManager
+implementation for the enclosing disk-scheme.
+
+Valid values are "LH", "NIO-file" and "NIO-memory".
+
+The corresponding BinaryStore implementations classes are:
+  - com.tangosol.io.lh.LHBinaryStore,
+  - com.tangosol.io.nio.BinaryMap using com.tangosol.io.nio.DirectBufferManager,
+  - com.tangosol.io.nio.BinaryMap using com.tangosol.io.nio.MappedBufferManager.
+
+The corresponding BinaryStoreManager implementations classes are:
+  - com.tangosol.io.lh.LHBinaryStoreManager,
+  - com.tangosol.io.nio.DirectStoreManager,
+  - com.tangosol.io.nio.MappedStoreManager.
+
+The "NIO-file" and "NIO-memory" options are only available with JDK 1.4 and later.
+
+Used in: disk-scheme
+-->
+<!ELEMENT file-manager (#PCDATA)>
+
+<!--
+Deprecated: use directory element instead.
+
+Used in: disk-scheme
+-->
+<!ELEMENT root-directory (#PCDATA)>
+
+<!--
+The read-only element specifies a readonly setting for the cachestore. If true
+the cache will only load data from cachestore for read operations and will not
+perform any writing to the cachestore when the cache is updated.
+
+Valid values are "true" or "false". Default value is false.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme,
+         cache-proxy-config
+-->
+<!ELEMENT read-only (#PCDATA)>
+
+<!--
+The manage-transient element specifies a manage transient setting for the
+cachestore. If true, the backing map is responsible for keeping the transient
+version cache up to date;  otherwise (as is the case when using the
+VersionedNearCache implementation) the backing map manages the transient
+version cache only for operations for which no other party is aware (such as
+entry expiry).
+
+Valid values are "true" or "false". Default value is false.
+
+Used in: versioned-backing-map-scheme
+-->
+<!ELEMENT manage-transient (#PCDATA)>
+
+<!--
+The write-delay-seconds element specifies the number of seconds for a
+write-behind queue to defer asynchronous writes to the cachestore by.
+
+If zero, synchronous writes to the cachestore (without queueing) will take
+place, otherwise the writes will be asynchronous and deferred by the number
+of seconds after the last update to the value in the cache.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT write-delay-seconds (#PCDATA)>
+
+<!--
+The write-delay element specifies the time interval for a
+write-behind queue to defer asynchronous writes to the cachestore by.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of seconds is assumed.
+
+If zero, synchronous writes to the cachestore (without queueing) will take
+place, otherwise the writes will be asynchronous and deferred by the specified
+time interval after the last update to the value in the cache.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT write-delay (#PCDATA)>
+
+<!--
+The write-batch-factor element is used to calculate the "soft-ripe" time for
+write-behind queue entries.
+
+A queue entry is considered to be "ripe" for a write operation if it has been
+in the write-behind queue for no less than the write-delay interval. The
+"soft-ripe" time is the point in time prior to the actual ripe time after
+which an entry will be included in a batched asynchronous write operation to
+the cachestore (along with all other ripe and soft-ripe entries). In other
+words, a soft-ripe entry is an entry that has been in the write-behind
+queue for at least the following duration:
+
+  D' = (1.0 - F)*D
+
+where:
+
+  D = write-delay interval
+  F = write-batch-factor
+
+Conceptually, the write-behind thread uses the following logic when performing
+a batched update:
+
+(1) The thread waits for a queued entry to become ripe.
+(2) When an entry becomes ripe, the thread dequeues all ripe and soft-ripe
+    entries in the queue.
+(3) The thread then writes all ripe and soft-ripe entries either via store()
+    (if there is only the single ripe entry) or storeAll() (if there are
+    multiple ripe/soft-ripe entries).
+(4) The thread then repeats (1).
+
+This element is only applicable if asynchronous writes are enabled (i.e. the
+value of the write-delay element is greater than zero) and the cachestore
+implements the storeAll() method.
+
+The value of the element is expressed as a percentage of the write-delay
+interval. Valid values are doubles in the interval [0.0, 1.0].
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT write-batch-factor (#PCDATA)>
+
+<!--
+The write-requeue-threshold element specifies the maximum size of the
+write-behind queue for which failed cachestore write operations are requeued.
+
+The purpose of this setting is to prevent flooding of the write-behind queue
+with failed cachestore operations. This can happened in situations where a
+large number of successive write operations fail.
+
+Valid values are positive integers and zero.
+
+If zero, write-behind requeueing is disabled.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT write-requeue-threshold (#PCDATA)>
+
+<!--
+The refresh-ahead-factor element is used to calculate the "soft-expiration"
+time for cache entries.
+
+Soft-expiration is the point in time prior to the actual expiration after
+which any access request for an entry will schedule an asynchronous load
+request for the entry. This element is only applicable for a
+ReadWriteBackingMap which has an internal LocalCache with scheduled
+automatic expiration.
+
+The value of this element is expressed as a percentage of the internal
+LocalCache expiration interval. Valid values are doubles in the interval
+[0.0, 1.0].
+
+If zero, refresh-ahead scheduling will be disabled.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT refresh-ahead-factor (#PCDATA)>
+
+<!--
+The cachestore-timeout element is used to specify the timeout interval in
+milliseconds to use for cache store read and write operations.  If zero is
+specified, the default service guardian timeout will be used.  If a cache
+store operation times out, the executing thread will be interrupted and may
+ultimately lead to the termination of the cache service.
+
+Legal values are non-negative numbers.
+
+Default value is 0.
+
+Used in: read-write-backing-map-scheme
+-->
+<!ELEMENT cachestore-timeout (#PCDATA)>
+
+<!--
+The rollback-cachestore-failures element specifies whether or not exceptions
+caught during synchronous cachestore operations are rethrown to the calling
+thread (possibly over the network to a remote member).
+
+If the value of this element is false, an exception caught during a synchronous
+cachestore operation is logged locally and the internal cache is updated.
+
+If the value is true, the exception is rethrown to the calling thread and the
+internal cache is not changed. If the operation was called within a
+transactional context, this would have the effect of rolling back the current
+transaction.
+
+Valid values are "true" or "false". Default value is false.
+
+Used in: read-write-backing-map-scheme, versioned-backing-map-scheme
+-->
+<!ELEMENT rollback-cachestore-failures (#PCDATA)>
+
+<!--
+The thread-count element specifies the number of daemon threads.
+Usage of the daemon threads varies for different service types.
+
+If zero, all relevant tasks are performed on the service thread.
+
+Valid values are positive integers or zero.
+
+Used in: distributed-scheme, invocation-scheme
+-->
+<!ELEMENT thread-count (#PCDATA)>
+
+<!--
+The standard-lease-milliseconds element specifies the duration of the standard
+lease in milliseconds. Once a lease has aged past this number of milliseconds,
+the lock will automatically be released. Set this value to zero to specify a
+lease that never expires.
+The purpose of this setting is to avoid deadlocks or blocks caused by stuck
+threads; the value should be set higher than the longest expected lock
+duration (e.g. higher than a transaction timeout). It's also recommended
+to set this value higher then packet-delivery/timeout-milliseconds value
+in tangosol-coherence.xml descriptor.
+
+Valid values are positive integers and zero.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: replicated-scheme, distributed-scheme
+-->
+<!ELEMENT standard-lease-milliseconds (#PCDATA)>
+
+<!--
+The lease-granularity element specifies the lease ownership granularity.
+
+Valid values are "thread" and "member". A value of "thread" means that
+locks are held by a thread that obtained them and can only be released by
+that thread. A value of "member" means that locks are held by a cluster
+node and any thread running on the cluster node that obtained the lock can
+release it.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: replicated-scheme, distributed-scheme
+-->
+<!ELEMENT lease-granularity (#PCDATA)>
+
+<!--
+The local-storage element specifies whether or not this member will store a
+portion of the data managed by the partitioned (distributed) cache service.
+
+Valid values are "true" or "false". A value of false means that the cluster
+member will not store any of the data locally. A value of true means that the
+cluster member will store its fair share of the data.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT local-storage (#PCDATA)>
+
+<!--
+The partition-count element specifies the number of partitions that a partitioned
+(distributed) cache will be "chopped up" into.  Each member running the
+partitioned cache service that has the local-storage option set to true will
+manage a "fair" (balanced) number of partitions.
+
+The number of partitions should be a prime number and sufficiently large such that
+a given partition is expected to be no larger than 50MB in size.
+
+Good defaults for example service storage sizes are provided below:
+
+service storage       partition-count
+_______________       ______________
+   100M                    257
+     1G                    509
+    10G                   2039
+    50G                   4093
+   100G                   8191
+
+A list of first 1,000 primes can be found at
+http://www.utm.edu/research/primes/lists/small/1000.txt
+
+Valid values are positive integers.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT partition-count (#PCDATA)>
+
+<!--
+The transfer-threshold element specifies the threshold for the primary buckets
+(partitions) distribution in kilo-bytes.
+
+When a new node joins the partitioned (distributed) cache service or when a member
+of the partitioned cache service leaves, the remaining nodes perform a task of
+bucket ownership re-distribution. During this process, the existing data gets
+re-balanced along with the ownership information. This parameter indicates a
+preferred message size for data transfer communications. Setting this value
+lower will make the distribution process take longer, but will reduce network
+bandwidth utilization during this activity.
+
+Valid values are positive integers.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT transfer-threshold (#PCDATA)>
+
+<!--
+The backup-count element specifies the number of members of the partitioned
+(distributed) cache service that hold the backup data for each unit of storage
+in the cache.
+
+Value of 0 means that in the case of abnormal termination, some portion of the
+data in the cache will be lost. Value of N means that if up to N cluster nodes
+terminate at once, the cache data will be preserved.
+
+To maintain the partitioned cache of size M, the total memory usage in the
+cluster does not depend on the number of cluster nodes and will be in the
+order of M*(N+1).
+
+Recommended values are 0, 1 or 2.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT backup-count (#PCDATA)>
+
+<!--
+The backup-count-after-writebehind element specifies the number of members of
+the partitioned (distributed) cache service that will retain backup data that
+does _not_ require write-behind, i.e. data that is not vulnerable to being lost
+even if the entire cluster were shut down.
+
+Specifically, if a unit of storage is marked as requiring write-behind, then
+it will be backed up on the number of members specified by the backup-count
+element, and if the unit of storage is not marked as requiring write-behind,
+then it will be backed up only by the number of members specified by the
+backup-count-after-writebehind element.
+
+Value must be in the range [0 .. backup-count].
+
+Default value is the value specified in the backup-count element.
+
+Used in: distributed-scheme
+-->
+<!ELEMENT backup-count-after-writebehind (#PCDATA)>
+
+<!--
+The type element specifies the type of the storage used to hold the backup data.
+
+Valid values are "on-heap", "off-heap", "file-mapped", "custom" or "scheme".
+
+The corresponding implementations classes are
+  - com.tangosol.util.SafeHashMap,
+  - com.tangosol.io.nio.BinaryMap using com.tangosol.io.nio.DirectBufferManager,
+  - com.tangosol.io.nio.BinaryMap using com.tangosol.io.nio.MappedBufferManager,
+  - the class specified by the backup-storage/class-name element,
+  - the map returned by the ConfigurableCacheFactory for the scheme referred to
+    by the backup-storage/scheme-name element.
+
+The "off-heap" and "file-mapped" options are only available with JDK 1.4 and later.
+
+Default value is the value specified in the tangosol-coherence.xml descriptor.
+
+Used in: backup-storage
+-->
+<!ELEMENT type (#PCDATA)>
+
+<!--
+The initial-size element specifies the initial buffer size in bytes.
+
+Only applicable with "NIO-*" file-managers in the disk-scheme,
+the nio-file-manager, the nio-memory-manager, and the "file-mapped" type for
+backup-storage.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[K|k|M|m|G|g|T|t]?[B|b]?
+
+where the first non-digit (from left to right) indicates the factor with
+which the preceding decimal value should be multiplied:
+
+  -K  or k  (kilo, 2^10)
+  -M  or m  (mega, 2^20)
+  -G  or g  (giga, 2^30)
+  -T  or t  (tera, 2^40)
+
+If the value does not contain a factor, a factor of mega is assumed.
+
+Valid values are positive integers between 1 and Integer.MAX_VALUE - 1023.
+
+Default value is 1MB.
+
+Used in: disk-scheme, backup-storage, nio-file-manager, nio-memory-manager
+-->
+<!ELEMENT initial-size (#PCDATA)>
+
+<!--
+The maximum-size element specifies the maximum buffer size in bytes.
+
+Only applicable with "NIO-*" file-managers in the disk-scheme,
+the nio-file-manager, the nio-memory-manager, and the "file-mapped" type for
+backup-storage.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[K|k|M|m|G|g|T|t]?[B|b]?
+
+where the first non-digit (from left to right) indicates the factor with
+which the preceding decimal value should be multiplied:
+
+  -K  or k  (kilo, 2^10)
+  -M  or m  (mega, 2^20)
+  -G  or g  (giga, 2^30)
+  -T  or t  (tera, 2^40)
+
+If the value does not contain a factor, a factor of mega is assumed.
+
+Valid values are positive integers between 1 and Integer.MAX_VALUE - 1023.
+
+Default value is 1024MB.
+
+Used in: disk-scheme, backup-storage, nio-file-manager, nio-memory-manager
+-->
+<!ELEMENT maximum-size (#PCDATA)>
+
+<!--
+The page-limit element specifies the maximum number of active pages.
+
+Valid values are positive integers between 2 and 3600 and zero.
+
+Default value is zero.
+
+Used in: disk-scheme, paged-external-scheme
+-->
+<!ELEMENT page-limit (#PCDATA)>
+
+<!--
+The page-duration element specifies length of time, in seconds, that a page
+is current.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of seconds is assumed.
+
+Valid values are between 5 and 604800 seconds (one week) and zero.
+
+Default value is zero.
+
+Used in: disk-scheme, paged-external-scheme
+-->
+<!ELEMENT page-duration (#PCDATA)>
+
+<!--
+The directory element specifies the pathname for the [root] directory that a
+disk persistence manager will use to store files in. If not specified or
+specifies a non-existent directory, a temporary file in the default location
+will be used.
+
+Applicable with the "LH" file-manager in the disk-scheme, the
+lh-file-manager, the bdb-store-manager, the nio-file-manager, and the
+"file-mapped" type for backup-storage,
+
+Used in: disk-scheme, backup-storage, lh-file-manager, bdb-store-manager,
+nio-file-manager
+-->
+<!ELEMENT directory (#PCDATA)>
+
+<!--
+The file-name element specifies the name for a non-temporary file to use for
+a disk persistence manager. This is intended only for local caches that are
+backed by a cache loader from a non-temporary file, so that the local cache
+can be pre-populated from the disk file on startup.
+
+Used in: disk-scheme, lh-file-manager
+-->
+<!ELEMENT file-name (#PCDATA)>
+
+<!--
+The store-name element specifies the name for a non-temporary data store to
+use for a persistence manager. This is intended only for local caches that are
+backed by a cache loader from a non-temporary store, so that the local cache
+can be pre-populated from the store on startup.
+
+Used in: bdb-store-manager
+-->
+<!ELEMENT store-name (#PCDATA)>
+
+<!--
+The async element specifies that write operations for a disk-scheme are
+performed asynchronously.
+
+Valid values are true and false.
+
+Default value is false.
+
+Used in: disk-scheme
+-->
+<!ELEMENT async (#PCDATA)>
+
+<!--
+The async-limit element specifies the maximum number of bytes that will be
+queued to be written asynchronously. Setting the value to zero does not
+disable asynchronous writes; instead, the value of zero indicates that the
+implementation default for the maximum number of bytes should be used.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[K|k|M|m]?[B|b]?
+
+where the first non-digit (from left to right) indicates the factor with
+which the preceding decimal value should be multiplied:
+
+  -K (kilo, 2^10)
+  -M (mega, 2^20)
+
+If the value does not contain a factor, a factor of one is assumed.
+
+Valid values are any positive memory sizes and zero.
+
+Default value is 4M.
+
+Used in: disk-scheme, async-store-manager
+-->
+<!ELEMENT async-limit (#PCDATA)>
+
+<!--
+The pre-load element specifies whether a cache will pre-load data from its
+CacheLoader (or CacheStore) object.
+
+Valid values are true and false.
+
+Default value is false.
+
+Used in: local-scheme
+-->
+<!ELEMENT pre-load (#PCDATA)>
+
+<!--
+The operation-name element specifies the operation name for which calls
+performed concurrently on multiple threads will be "bundled" into a
+functionally analogous [bulk] operation that takes a collection of arguments
+instead of a single one.
+
+Valid values depend on the bundle configuration context. For the
+cachestore-scheme the valid operations are "load", "store" and "erase". For the
+distributed-scheme and remote-cache-scheme the valid operations are "get", "put"
+and "remove". In all cases there is a pseudo operation "all", referring to all
+valid operations.
+
+Default value is "all".
+
+Used in: bundle-config
+-->
+<!ELEMENT operation-name (#PCDATA)>
+
+<!--
+The preferred-size element specifies the bundle size threshold. When a bundle
+size reaches this value, the corresponding "bulk" operation will be invoked
+immediately. This value is measured in context-specific units.
+
+Valid values are zero (disabled bundling) or positive values.
+
+Default value is zero.
+
+Used in: bundle-config
+-->
+<!ELEMENT preferred-size (#PCDATA)>
+
+<!--
+The delay-millis element specifies the maximum amount of time in milliseconds
+that individual execution requests are allowed to be deferred for a purpose of
+"bundling" them together and passing into a corresponding bulk operation.
+If the preferred-size threshold is reached before the specified delay, the
+bundle is processed immediately.
+
+Valid values are positive numbers.
+
+Default value is 1.
+
+Used in: bundle-config
+-->
+<!ELEMENT delay-millis (#PCDATA)>
+
+<!--
+The thread-threshold element specifies the minimum number of threads that must
+be concurrently executing individual (non-bundled) requests for the bundler to
+switch from a pass-through to a bundling mode.
+
+Valid values are positive numbers.
+
+Default value is 4.
+
+Used in: bundle-config
+-->
+<!ELEMENT thread-threshold (#PCDATA)>
+
+<!--
+The auto-adjust element specifies whether or not the auto adjustment of the
+preferred-size value (based on the run-time statistics) is allowed.
+
+Valid values are "true" or "false".
+
+Default value is "false".
+
+Used in: bundle-config
+-->
+<!ELEMENT auto-adjust (#PCDATA)>
+
+<!--
+The maximum number of simultaneous connections allowed by a connection
+acceptor.
+
+Valid values are positive integers and zero. A value of zero implies no
+limit.
+
+Default value is zero.
+
+Used in: acceptor-config
+-->
+<!ELEMENT connection-limit (#PCDATA)>
+
+<!--
+The queue-connection-factory-name specifies the JNDI name of the JMS
+QueueConnectionFactory used by a JMS connection initiator or acceptor.
+
+Used in: jms-initiator, jms-acceptor
+-->
+<!ELEMENT queue-connection-factory-name (#PCDATA)>
+
+<!--
+The queue-name specifies the JNDI name of the JMS Queue used by a JMS
+connection initiator or acceptor.
+
+Used in: jms-scheme
+-->
+<!ELEMENT queue-name (#PCDATA)>
+
+<!--
+The connect-timeout specifies the maximum amount of time to wait while
+establishing a connection with a connection acceptor.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of milliseconds is assumed.
+
+Default value is an infinite timeout.
+
+Used in: jms-initiator, tcp-initiator
+-->
+<!ELEMENT connect-timeout (#PCDATA)>
+
+<!--
+The linger-timeout element enables SO_LINGER on a TCP/IP socket with the
+specified linger time.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of milliseconds is assumed.
+
+Linger is disabled by default.
+
+Used in: tcp-initiator, tcp-acceptor
+-->
+<!ELEMENT linger-timeout (#PCDATA)>
+
+<!--
+The request-timeout specifies the maximum amount of time a client will wait for
+a response before abandoning the original request.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of milliseconds is assumed.
+
+Default value is an infinite timeout.
+
+Used in: outgoing-message-handler, replicated-scheme, distributed-scheme,
+optimistic-scheme, invocation-scheme, proxy-scheme
+-->
+<!ELEMENT request-timeout (#PCDATA)>
+
+<!--
+The heartbeat-interval specifies the interval between ping requests. A ping
+request is used to ensure the integrity of a connection.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of milliseconds is assumed.
+
+Ping requests are disabled by default.
+
+Used in: outgoing-message-handler
+-->
+<!ELEMENT heartbeat-interval (#PCDATA)>
+
+<!--
+The heartbeat-timeout specifies the maximum amount of time to wait for a
+response to a ping request before declaring the underlying connection
+unusable.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
+
+where the first non-digits (from left to right) indicate the unit of time
+duration:
+
+  -MS or ms (milliseconds)
+  -S  or s  (seconds)
+  -M  or m  (minutes)
+  -H  or h  (hours)
+  -D  or d  (days)
+
+If the value does not contain a unit, a unit of milliseconds is assumed.
+
+Ping requests are disabled by default.
+
+Used in: outgoing-message-handler
+-->
+<!ELEMENT heartbeat-timeout (#PCDATA)>
+
+<!--
+The filter-name element contains the canonical name of the filter as specified
+in the operational configuration file. This name is unique within the cluster.
+
+Used in: use-filters
+-->
+<!ELEMENT filter-name (#PCDATA)>
+
+<!--
+The enabled element specifies whether or not a proxy managed by the proxy
+service is enabled.
+
+Valid values are true and false.
+
+Default value is true.
+
+Used in: cache-service-proxy, invocation-service-proxy
+-->
+<!ELEMENT enabled (#PCDATA)>
+
+<!--
+The lock-enabled element specifies whether or not lock requests from remote
+clients are permitted on a cache.
+
+Used in: cache-service-proxy
+-->
+<!ELEMENT lock-enabled (#PCDATA)>
+
+<!--
+The address element specifies the IP address used by a socket.
+
+Used in: local-address, socket-address
+-->
+<!ELEMENT address (#PCDATA)>
+
+<!--
+The port element specifies a port used by a socket.
+
+Valid values are from 1 to 65535.
+
+Used in: local-address, socket-address
+-->
+<!ELEMENT port (#PCDATA)>
+
+
+<!--
+The reuse-address element specifies whether or not a TCP/IP socket can be bound to
+an address if a previous connection is in a timeout state.
+
+When a TCP/IP connection is closed the connection may remain in a timeout
+state for a period of time after the connection is closed (typically known as
+the TIME_WAIT state or 2MSL wait state). For applications using a well known
+socket address or port it may not be possible to bind a socket to a required
+address if there is a connection in the timeout state involving the socket
+address or port.
+
+Valid values are true and false.
+
+Default value is false.
+
+Used in: tcp-initiator, tcp-acceptor
+-->
+<!ELEMENT reuse-address (#PCDATA)>
+
+<!--
+The value of the keep-alive-enabled element indicates whether or not keep
+alive (SO_KEEPALIVE) is enabled on a TCP/IP socket.
+
+Valid values are true and false.
+
+Keep alive is enabled by default.
+
+Used in: tcp-initiator and tcp-acceptor
+-->
+<!ELEMENT keep-alive-enabled (#PCDATA)>
+
+<!--
+The value of the tcp-delay-enabled element indicates whether or not TCP
+delay (Nagle's algorithm) is enabled on a TCP/IP socket.
+
+Valid values are true and false.
+
+TCP delay is disabled by default.
+
+Used in: tcp-initiator and tcp-acceptor
+-->
+<!ELEMENT tcp-delay-enabled (#PCDATA)>
+
+<!--
+The value of the receive-buffer-size element is used to configure the size of
+the underlying TCP/IP socket network receive buffer.
+
+Increasing the receive buffer size can increase the performance of network
+I/O for high-volume connections, while decreasing it can help reduce the
+backlog of incoming data.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[K|k|M|m|G|g|T|t]?[B|b]?
+
+where the first non-digit (from left to right) indicates the factor with
+which the preceding decimal value should be multiplied:
+
+  -K  or k  (kilo, 2^10)
+  -M  or m  (mega, 2^20)
+  -G  or g  (giga, 2^30)
+  -T  or t  (tera, 2^40)
+
+If the value does not contain a factor, a factor of one is assumed.
+
+Default value is O/S dependent.
+
+Used in: tcp-initiator
+-->
+<!ELEMENT receive-buffer-size (#PCDATA)>
+
+<!--
+The value of the send-buffer-size element is used to configure the size of the
+underlying TCP/IP socket network send buffer.
+
+The value of this element must be in the following format:
+
+  [\d]+[[.][\d]+]?[K|k|M|m|G|g|T|t]?[B|b]?
+
+where the first non-digit (from left to right) indicates the factor with
+which the preceding decimal value should be multiplied:
+
+  -K  or k  (kilo, 2^10)
+  -M  or m  (mega, 2^20)
+  -G  or g  (giga, 2^30)
+  -T  or t  (tera, 2^40)
+
+If the value does not contain a factor, a factor of one is assumed.
+
+Default value is O/S dependent.
+
+Used in: tcp-initiator, tcp-acceptor
+-->
+<!ELEMENT send-buffer-size (#PCDATA)>
+
+<!--
+The value of the listen-backlog element is used to configure the size of the
+TCP/IP server socket backlog queue.
+
+Valid values are positive integers.
+
+Default value is O/S dependent.
+
+Used in: tcp-acceptor
+-->
+<!ELEMENT listen-backlog (#PCDATA)>
+
+<!--
+The host-address element specifies a host IP address.
+
+Used in: authorized-hosts
+-->
+<!ELEMENT host-address (#PCDATA)>
+
+<!--
+The from-address element specifies the starting IP address for a range of
+hosts.
+
+Used in: host-range
+-->
+<!ELEMENT from-address (#PCDATA)>
+
+<!--
+The to-address element specifies the ending IP address (inclusive)
+for a range of hosts.
+
+Used in: host-range
+-->
+<!ELEMENT to-address (#PCDATA)>
+
+<!--
+The system-property mechanism allows the value of certain elements be replaced
+with values passed into a JVM using the system properties specified in a Java
+command line using the -D<name>=<value> option.
+-->
+<!ATTLIST scheme-name   system-property CDATA #IMPLIED>
+<!ATTLIST local-storage system-property CDATA #IMPLIED>
+<!ATTLIST directory     system-property CDATA #IMPLIED>
+<!ATTLIST thread-count  system-property CDATA #IMPLIED>
+<!ATTLIST param-value   system-property CDATA #IMPLIED>
+<!ATTLIST autostart     system-property CDATA #IMPLIED>
+<!ATTLIST address       system-property CDATA #IMPLIED>
+<!ATTLIST port          system-property CDATA #IMPLIED>

Added: trunk/core/src/test/resources/configs/coherence/default-config.xml
===================================================================
--- trunk/core/src/test/resources/configs/coherence/default-config.xml	                        (rev 0)
+++ trunk/core/src/test/resources/configs/coherence/default-config.xml	2009-10-05 15:45:09 UTC (rev 905)
@@ -0,0 +1,286 @@
+<?xml version="1.0"?>
+
+<!--
+Note: This XML document is an example Coherence Cache Configuration deployment
+descriptor that should be customized (or replaced) for your particular caching
+requirements. The cache mappings and schemes declared in this descriptor are
+strictly for demonstration purposes and are not required.
+
+For detailed information on each of the elements that can be used in this
+descriptor please see the Coherence Cache Configuration deployment descriptor
+guide included in the Coherence distribution or the "Cache Configuration
+Elements" page on the Coherence Wiki (http://wiki.tangosol.com).
+-->
+
+<cache-config>
+   <caching-scheme-mapping>
+      <cache-mapping>
+         <cache-name>dist-*</cache-name>
+         <scheme-name>example-distributed</scheme-name>
+         <init-params>
+            <init-param>
+               <param-name>back-size-limit</param-name>
+               <param-value>8MB</param-value>
+            </init-param>
+         </init-params>
+      </cache-mapping>
+
+      <cache-mapping>
+         <cache-name>near-*</cache-name>
+         <scheme-name>example-near</scheme-name>
+         <init-params>
+            <init-param>
+               <param-name>back-size-limit</param-name>
+               <param-value>8MB</param-value>
+            </init-param>
+         </init-params>
+      </cache-mapping>
+
+      <cache-mapping>
+         <cache-name>repl-*</cache-name>
+         <scheme-name>example-replicated</scheme-name>
+      </cache-mapping>
+
+      <cache-mapping>
+         <cache-name>opt-*</cache-name>
+         <scheme-name>example-optimistic</scheme-name>
+         <init-params>
+            <init-param>
+               <param-name>back-size-limit</param-name>
+               <param-value>5000</param-value>
+            </init-param>
+         </init-params>
+      </cache-mapping>
+
+      <cache-mapping>
+         <cache-name>local-*</cache-name>
+         <scheme-name>example-object-backing-map</scheme-name>
+      </cache-mapping>
+
+      <cache-mapping>
+         <cache-name>*</cache-name>
+         <scheme-name>example-distributed</scheme-name>
+      </cache-mapping>
+   </caching-scheme-mapping>
+
+   <caching-schemes>
+      <!--
+      Distributed caching scheme.
+      -->
+      <distributed-scheme>
+         <scheme-name>example-distributed</scheme-name>
+         <service-name>DistributedCache</service-name>
+
+         <!-- To use POF serialization for this partitioned service,
+     uncomment the following section -->
+         <!--
+         <serializer>
+           <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
+         </serializer>
+         -->
+
+         <backing-map-scheme>
+            <local-scheme>
+               <scheme-ref>example-binary-backing-map</scheme-ref>
+            </local-scheme>
+         </backing-map-scheme>
+         <!--<key-partitioning>org.custon.KeyPartitioning</key-partitioning>-->
+         <backup-count>1</backup-count>
+
+         <autostart>true</autostart>
+      </distributed-scheme>
+
+      <!--
+      Near caching (two-tier) scheme with size limited local cache
+      in the front-tier and a distributed cache in the back-tier.
+      -->
+      <near-scheme>
+         <scheme-name>example-near</scheme-name>
+
+         <front-scheme>
+            <local-scheme>
+               <eviction-policy>HYBRID</eviction-policy>
+               <high-units>100</high-units>
+               <expiry-delay>1m</expiry-delay>
+            </local-scheme>
+         </front-scheme>
+
+         <back-scheme>
+            <distributed-scheme>
+               <scheme-ref>example-distributed</scheme-ref>
+            </distributed-scheme>
+         </back-scheme>
+
+         <invalidation-strategy>present</invalidation-strategy>
+         <autostart>true</autostart>
+      </near-scheme>
+
+      <!--
+      Replicated caching scheme.
+      -->
+      <replicated-scheme>
+         <scheme-name>example-replicated</scheme-name>
+         <service-name>ReplicatedCache</service-name>
+
+         <backing-map-scheme>
+            <local-scheme>
+               <scheme-ref>unlimited-backing-map</scheme-ref>
+            </local-scheme>
+         </backing-map-scheme>
+
+         <autostart>true</autostart>
+      </replicated-scheme>
+
+      <!--
+      Optimistic caching scheme.
+      -->
+      <optimistic-scheme>
+         <scheme-name>example-optimistic</scheme-name>
+         <service-name>OptimisticCache</service-name>
+
+         <backing-map-scheme>
+            <local-scheme>
+               <scheme-ref>example-object-backing-map</scheme-ref>
+            </local-scheme>
+         </backing-map-scheme>
+
+         <autostart>true</autostart>
+      </optimistic-scheme>
+
+      <!--
+       A scheme used by backing maps that may store data in object format and
+       employ size limitation and/or expiry eviction policies.
+      -->
+      <local-scheme>
+         <scheme-name>example-object-backing-map</scheme-name>
+
+         <eviction-policy>HYBRID</eviction-policy>
+         <high-units>{back-size-limit 2}</high-units>
+         <expiry-delay>{back-expiry 2h}</expiry-delay>
+         <flush-delay>2m</flush-delay>
+
+         <cachestore-scheme></cachestore-scheme>
+      </local-scheme>
+
+      <!--
+       A scheme used by backing maps that store data in internal (binary) format
+       and employ size limitation and/or expiry eviction policies.
+      -->
+      <local-scheme>
+         <scheme-name>example-binary-backing-map</scheme-name>
+
+         <eviction-policy>HYBRID</eviction-policy>
+         <high-units>{back-size-limit 7}</high-units>
+         <unit-calculator>BINARY</unit-calculator>
+         <expiry-delay>{back-expiry 1h}</expiry-delay>
+         <flush-delay>1m</flush-delay>
+
+         <cachestore-scheme></cachestore-scheme>
+      </local-scheme>
+
+      <!--
+      Backing map scheme definition used by all the caches that do
+      not require any eviction policies
+      -->
+      <local-scheme>
+         <scheme-name>unlimited-backing-map</scheme-name>
+      </local-scheme>
+
+      <!--
+      ReadWriteBackingMap caching scheme.
+      -->
+      <read-write-backing-map-scheme>
+         <scheme-name>example-read-write</scheme-name>
+
+         <internal-cache-scheme>
+            <local-scheme>
+               <scheme-ref>example-binary-backing-map</scheme-ref>
+            </local-scheme>
+         </internal-cache-scheme>
+
+         <cachestore-scheme></cachestore-scheme>
+
+         <read-only>true</read-only>
+         <write-delay>0s</write-delay>
+      </read-write-backing-map-scheme>
+
+      <!--
+      Overflow caching scheme with example eviction local cache
+      in the front-tier and the example LH-based cache in the back-tier.
+      -->
+      <overflow-scheme>
+         <scheme-name>example-overflow</scheme-name>
+
+         <front-scheme>
+            <local-scheme>
+               <scheme-ref>example-binary-backing-map</scheme-ref>
+            </local-scheme>
+         </front-scheme>
+
+         <back-scheme>
+            <external-scheme>
+               <scheme-ref>example-bdb</scheme-ref>
+            </external-scheme>
+         </back-scheme>
+      </overflow-scheme>
+
+      <!--
+      External caching scheme using Berkley DB.
+      -->
+      <external-scheme>
+         <scheme-name>example-bdb</scheme-name>
+
+         <bdb-store-manager>
+            <directory></directory>
+         </bdb-store-manager>
+
+         <high-units>0</high-units>
+      </external-scheme>
+
+      <!--
+      External caching scheme using memory-mapped files.
+      -->
+      <external-scheme>
+         <scheme-name>example-nio</scheme-name>
+
+         <nio-file-manager>
+            <initial-size>8MB</initial-size>
+            <maximum-size>512MB</maximum-size>
+            <directory></directory>
+         </nio-file-manager>
+
+         <high-units>0</high-units>
+      </external-scheme>
+
+      <!--
+      Invocation Service scheme.
+      -->
+      <invocation-scheme>
+         <scheme-name>example-invocation</scheme-name>
+         <service-name>InvocationService</service-name>
+
+         <autostart system-property="tangosol.coherence.invocation.autostart">true</autostart>
+      </invocation-scheme>
+
+      <!--
+      Proxy Service scheme that allows remote clients to connect to the
+      cluster over TCP/IP.
+      -->
+      <proxy-scheme>
+         <scheme-name>example-proxy</scheme-name>
+         <service-name>TcpProxyService</service-name>
+
+         <acceptor-config>
+            <tcp-acceptor>
+               <local-address>
+                  <address system-property="tangosol.coherence.extend.address">localhost</address>
+                  <port system-property="tangosol.coherence.extend.port">9099</port>
+               </local-address>
+            </tcp-acceptor>
+         </acceptor-config>
+
+         <autostart system-property="tangosol.coherence.extend.enabled">false</autostart>
+      </proxy-scheme>
+
+   </caching-schemes>
+</cache-config>
\ No newline at end of file



More information about the infinispan-commits mailing list