XSD namespaces and locations
-
Core namespace:
http://www.ehcache.org/v3
-
Location for 3.0:
http://www.ehcache.org/schema/ehcache-core-3.0.xsd
-
Location for 3.1:
http://www.ehcache.org/schema/ehcache-core-3.1.xsd
-
Location for 3.2:
http://www.ehcache.org/schema/ehcache-core-3.2.xsd
-
Location for 3.3:
http://www.ehcache.org/schema/ehcache-core-3.3.xsd
-
Location for 3.4:
http://www.ehcache.org/schema/ehcache-core-3.4.xsd
-
Location for 3.5:
http://www.ehcache.org/schema/ehcache-core-3.5.xsd
-
Location for 3.6:
http://www.ehcache.org/schema/ehcache-core-3.6.xsd
-
Location for 3.7:
http://www.ehcache.org/schema/ehcache-core-3.7.xsd
-
Location for 3.8:
http://www.ehcache.org/schema/ehcache-core-3.8.xsd
-
Location for 3.9:
http://www.ehcache.org/schema/ehcache-core-3.9.xsd
-
-
JSR-107 namespace:
http://www.ehcache.org/v3/jsr107
-
Location for 3.0:
http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd
-
Location for 3.1:
http://www.ehcache.org/schema/ehcache-107-ext-3.1.xsd
-
Location for 3.2:
http://www.ehcache.org/schema/ehcache-107-ext-3.2.xsd
-
Location for 3.3:
http://www.ehcache.org/schema/ehcache-107-ext-3.3.xsd
-
Location for 3.4:
http://www.ehcache.org/schema/ehcache-107-ext-3.4.xsd
-
Location for 3.5:
http://www.ehcache.org/schema/ehcache-107-ext-3.5.xsd
-
Location for 3.6:
http://www.ehcache.org/schema/ehcache-107-ext-3.6.xsd
-
Location for 3.7:
http://www.ehcache.org/schema/ehcache-107-ext-3.7.xsd
-
Location for 3.8:
http://www.ehcache.org/schema/ehcache-107-ext-3.8.xsd
-
Location for 3.9:
http://www.ehcache.org/schema/ehcache-107-ext-3.9.xsd
-
-
Transactions namespace:
http://www.ehcache.org/v3/tx
-
Location for 3.0:
http://www.ehcache.org/schema/ehcache-tx-ext-3.0.xsd
-
Location for 3.1:
http://www.ehcache.org/schema/ehcache-tx-ext-3.1.xsd
-
Location for 3.2:
http://www.ehcache.org/schema/ehcache-tx-ext-3.2.xsd
-
Location for 3.3:
http://www.ehcache.org/schema/ehcache-tx-ext-3.3.xsd
-
Location for 3.4:
http://www.ehcache.org/schema/ehcache-tx-ext-3.4.xsd
-
Location for 3.5:
http://www.ehcache.org/schema/ehcache-tx-ext-3.5.xsd
-
Location for 3.6:
http://www.ehcache.org/schema/ehcache-tx-ext-3.6.xsd
-
Location for 3.7:
http://www.ehcache.org/schema/ehcache-tx-ext-3.7.xsd
-
Location for 3.8:
http://www.ehcache.org/schema/ehcache-tx-ext-3.8.xsd
-
Location for 3.9:
http://www.ehcache.org/schema/ehcache-tx-ext-3.9.xsd
-
-
Clustering namespace:
http://www.ehcache.org/v3/clustered
-
Location for 3.1:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.1.xsd
-
Location for 3.2:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.2.xsd
-
Location for 3.3:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.3.xsd
-
Location for 3.4:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.4.xsd
-
Location for 3.5:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.5.xsd
-
Location for 3.6:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.6.xsd
-
Location for 3.7:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.7.xsd
-
Location for 3.8:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.8.xsd
-
Location for 3.9:
http://www.ehcache.org/schema/ehcache-clustered-ext-3.9.xsd
-
Usage example
<eh:config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:eh='http://www.ehcache.org/v3'
xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
xsi:schemaLocation="
http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.3.xsd
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.3.xsd">
</eh:config>
Core
<xs:schema version="1.0" xmlns:ehcache="http://www.ehcache.org/v3" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:annox="http://annox.dev.java.net" jaxb:extensionBindingPrefixes="annox"
elementFormDefault="qualified" targetNamespace="http://www.ehcache.org/v3">
<xs:annotation>
<xs:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="org.ehcache.xml.model"/>
</jaxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:element name="config" type="ehcache:config-type"/>
<xs:complexType name="config-type">
<xs:sequence>
<xs:element name="service" type="ehcache:service-type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation xml:lang="en">
Placeholder for services to be managed by the CacheManager and exposed to the Cache instances it manages.
Those services will also be lifecycled by the CacheManager.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default-serializers" type="ehcache:serializer-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
This element represents Serializers.
It is a collection of serializer tags that require a type and fully qualified class names of serializers
that are to be registered
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default-copiers" type="ehcache:copier-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
This element represents Copiers.
It is a collection of copier tags that require a type and fully qualified class names of copiers
that are to be registered
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="persistence" type="ehcache:persistence-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Location where data needs be stored on disk
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="thread-pools" type="ehcache:thread-pools-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
This element configures the sets of constrained threads used to run asynchronous tasks for the caches of this manager.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="event-dispatch" type="ehcache:thread-pool-reference-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
The element configures the default thread pool used for cache event dispatch.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="write-behind" type="ehcache:thread-pool-reference-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
The element configures the default thread pool used for write behind caches.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="heap-store" type="ehcache:sizeof-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
The element defines the sizing limits for the default SizeOfEngine.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="disk-store" type="ehcache:thread-pool-reference-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
The element configures the default thread pool used for writing to disk resources.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="cache" type="ehcache:cache-type">
<xs:annotation>
<xs:documentation xml:lang="en">
A cache definition the CacheManager will manage
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="cache-template" type="ehcache:cache-template-type">
<xs:annotation>
<xs:documentation xml:lang="en">
A cache template definition that can be reference in <cache> definitions using the 'uses-template'
attribute.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="service-type">
<xs:sequence>
<xs:element ref="ehcache:service-creation-configuration" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="service-creation-configuration" abstract="true">
<xs:annotation>
<xs:appinfo>
<jaxb:dom/>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:complexType name="persistence-type">
<xs:attribute name="directory" type="ehcache:stringWithProperties" use="required"/>
</xs:complexType>
<xs:complexType name="serializer-type">
<xs:sequence>
<xs:element name="serializer" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ehcache:fqcn-type">
<xs:attribute type="xs:string" name="type" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="copier-type">
<xs:sequence>
<xs:element name="copier" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ehcache:fqcn-type">
<xs:attribute type="xs:string" name="type" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="thread-pools-type">
<xs:sequence>
<xs:element name="thread-pool" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:attribute name="alias" use="required" type="xs:string"/>
<xs:attribute name="default" use="optional" type="xs:boolean" default="false"/>
<xs:attribute name="min-size" use="required" type="ehcache:propertyOrNonNegativeInteger"/>
<xs:attribute name="max-size" use="required" type="ehcache:propertyOrPositiveInteger"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="thread-pool-reference-type">
<xs:attribute name="thread-pool" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="sizeof-type">
<xs:sequence>
<xs:element name="max-object-graph-size" minOccurs="0" maxOccurs="1" default="1000">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:positiveInteger"/>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="max-object-size" minOccurs="0" maxOccurs="1" type="ehcache:memory-type" default="9223372036854775807"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="cache-type">
<xs:complexContent>
<xs:extension base="ehcache:base-cache-type">
<xs:attribute name="alias" use="required" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en">
The alias used to access this Cache from the CacheManager
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="uses-template" use="optional" type="xs:IDREF">
<xs:annotation>
<xs:documentation xml:lang="en">
The optional <cache-template> to use to source a default configuration from.
References the cache template's 'name' attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="cache-template-type">
<xs:complexContent>
<xs:extension base="ehcache:base-cache-type">
<xs:attribute name="name" type="xs:ID" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">
The name of this <cache-template> definition.
Used by cache element's 'uses-template' attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="base-cache-type" abstract="true">
<xs:sequence>
<xs:element name="key-type" type="ehcache:cache-entry-type" minOccurs="0" maxOccurs="1" default="java.lang.Object">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines the type for the keys <K> of the Cache<K, V>. Takes a fully qualified class name.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="value-type" type="ehcache:cache-entry-type" minOccurs="0" maxOccurs="1" default="java.lang.Object">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines the type for the values <V> of the Cache<K, V>. Takes a fully qualified class name.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="expiry" type="ehcache:expiry-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines expiry for the Cache.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="eviction-advisor" type="ehcache:fqcn-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name to a concrete type that implements
org.ehcache.config.EvictionAdvisor and has a public default no argument constructor.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="loader-writer" type="ehcache:cache-loader-writer-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Configures the Cache as fronting a system of record that it'll be kept in sync with.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="resilience" type="ehcache:fqcn-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Configures the resilience strategy used when the cache's underlying storage fails.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="listeners" type="ehcache:listeners-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Configures the listeners for the Cache.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element ref="ehcache:heap" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Shortcut for configuring a heap Cache.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="resources" type="ehcache:resources-type" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Configures the Cache resources.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="heap-store-settings" type="ehcache:sizeof-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
The element defines the sizing limits for the Cache's SizeOfEngine.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="disk-store-settings" type="ehcache:disk-store-settings-type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Configures advanced properties of the disk tier
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ehcache:service-configuration" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="service-configuration" abstract="true">
<xs:annotation>
<xs:appinfo>
<jaxb:dom/>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:complexType name="listeners-type">
<xs:sequence>
<xs:element name="listener" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="class" type="ehcache:fqcn-type" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name to a concrete type that implements
org.ehcache.spi.event.CacheEventListener and has a public
default no argument constructor.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="event-firing-mode" type="ehcache:event-firing-type" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Indicates which EventFiring firing mode to use
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="event-ordering-mode" type="ehcache:event-ordering-type" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
Indicates which EventOrdering ordering mode to use
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="events-to-fire-on" type="ehcache:event-type" minOccurs="1" maxOccurs="5">
<xs:annotation>
<xs:documentation xml:lang="en">
Indicates on which EventType an event has to be fired
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="dispatcher-thread-pool" type="xs:string" use="optional"/>
</xs:complexType>
<xs:complexType name="cache-loader-writer-type">
<xs:sequence>
<xs:element name="class" type="ehcache:fqcn-type" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name to a concrete type that implements
org.ehcache.spi.loaderwriter.CacheLoaderWriter and has a public
default no argument constructor.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="write-behind" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="batching">
<xs:complexType>
<xs:all minOccurs="1">
<xs:element name="max-write-delay" type="ehcache:time-type-with-prop-subst"/>
</xs:all>
<xs:attribute name="batch-size" type="ehcache:propertyOrPositiveInteger" use="required"/>
<xs:attribute name="coalesce" type="xs:boolean" default="false" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="non-batching">
<xs:complexType/>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="concurrency" type="ehcache:propertyOrPositiveInteger" default="1" use="optional"/>
<xs:attribute name="size" type="ehcache:propertyOrPositiveInteger" default="2147483647" use="optional"/>
<xs:attribute name="thread-pool" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="cache-entry-type">
<xs:simpleContent>
<xs:extension base="ehcache:fqcn-type">
<xs:attribute name="serializer" type="ehcache:fqcn-type">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name of the type's serializer class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="copier" type="ehcache:fqcn-type">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name of the type's copier class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="expiry-type">
<xs:choice>
<xs:element name="class" type="ehcache:fqcn-type">
<xs:annotation>
<xs:documentation xml:lang="en">
A fully qualified class name to a concrete type that implements
org.ehcache.expiry.ExpiryPolicy and has a public default no argument constructor.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tti" type="ehcache:time-type-with-prop-subst">
<xs:annotation>
<xs:documentation xml:lang="en">
Entries in the cache should expire if not accessed for the defined time.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ttl" type="ehcache:time-type-with-prop-subst">
<xs:annotation>
<xs:documentation xml:lang="en">
Entries in the cache should expire after the defined time.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="none">
<xs:annotation>
<xs:documentation xml:lang="en">
Entries in the cache should never expire.
</xs:documentation>
</xs:annotation>
<xs:complexType/>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name="time-type-with-prop-subst">
<xs:simpleContent>
<xs:extension base="ehcache:propertyOrPositiveInteger">
<xs:attribute name="unit" type="ehcache:time-unit" default="seconds">
<xs:annotation>
<xs:documentation xml:lang="en">
The time unit (see java.util.concurrent.TimeUnit) this value is expressed in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="memory-type">
<xs:simpleContent>
<xs:extension base="xs:positiveInteger">
<xs:attributeGroup ref="ehcache:memory-unit-attributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="memory-type-with-prop-subst">
<xs:simpleContent>
<xs:extension base="ehcache:propertyOrPositiveInteger">
<xs:attributeGroup ref="ehcache:memory-unit-attributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:attributeGroup name="memory-unit-attributes">
<xs:attribute name="unit" type="ehcache:memory-unit" default="B" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
The memory unit (see org.ehcache.config.units.MemoryUnit) this value is expressed in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="resource-type-with-prop-subst">
<xs:simpleContent>
<xs:extension base="ehcache:propertyOrPositiveInteger">
<xs:attribute name="unit" type="ehcache:resource-unit" default="entries" use="optional">
<xs:annotation>
<xs:documentation xml:lang="en">
The resource unit (see org.ehcache.config.ResourceUnit) this value is expressed in.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="persistable-memory-type-with-prop-subst">
<xs:complexContent>
<xs:extension base="ehcache:memory-type-with-prop-subst">
<xs:attribute name="persistent" type="xs:boolean" default="false" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="resource" abstract="true">
<xs:annotation>
<xs:appinfo>
<jaxb:dom/>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="heap" type="ehcache:resource-type-with-prop-subst" substitutionGroup="ehcache:resource">
<xs:annotation>
<xs:appinfo>
<jaxb:class/>
</xs:appinfo>
<xs:appinfo>
<annox:annotate>@java.lang.SuppressWarnings({"unchecked", "serial"})</annox:annotate>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="offheap" type="ehcache:memory-type-with-prop-subst" substitutionGroup="ehcache:resource">
<xs:annotation>
<xs:appinfo>
<jaxb:class/>
</xs:appinfo>
<xs:appinfo>
<annox:annotate>@java.lang.SuppressWarnings({"unchecked", "serial"})</annox:annotate>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="disk" type="ehcache:persistable-memory-type-with-prop-subst" substitutionGroup="ehcache:resource">
<xs:annotation>
<xs:appinfo>
<jaxb:class/>
</xs:appinfo>
<xs:appinfo>
<annox:annotate>@java.lang.SuppressWarnings({"unchecked", "serial"})</annox:annotate>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:complexType name="resources-type">
<xs:sequence>
<xs:element ref="ehcache:resource" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="disk-store-settings-type">
<xs:attribute name="thread-pool" type="xs:string" use="optional"/>
<xs:attribute name="writer-concurrency" type="ehcache:propertyOrPositiveInteger" use="optional" default="1"/>
<xs:attribute name="disk-segments" type="ehcache:propertyOrPositiveInteger" use="optional" default="16"/>
</xs:complexType>
<xs:simpleType name="time-unit">
<xs:restriction base="xs:string">
<xs:enumeration value="nanos"/>
<xs:enumeration value="micros"/>
<xs:enumeration value="millis"/>
<xs:enumeration value="seconds"/>
<xs:enumeration value="minutes"/>
<xs:enumeration value="hours"/>
<xs:enumeration value="days"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="memory-unit">
<xs:restriction base="xs:string">
<xs:enumeration value="B"/>
<xs:enumeration value="kB"/>
<xs:enumeration value="MB"/>
<xs:enumeration value="GB"/>
<xs:enumeration value="TB"/>
<xs:enumeration value="PB"/>
</xs:restriction>
</xs:simpleType>
<!-- Keeping the below explicit instead of union with the above to ease auto complete -->
<xs:simpleType name="resource-unit">
<xs:restriction base="xs:string">
<xs:enumeration value="entries"/>
<xs:enumeration value="B"/>
<xs:enumeration value="kB"/>
<xs:enumeration value="MB"/>
<xs:enumeration value="GB"/>
<xs:enumeration value="TB"/>
<xs:enumeration value="PB"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="event-firing-type">
<xs:restriction base="xs:string">
<xs:enumeration value="ASYNCHRONOUS" />
<xs:enumeration value="SYNCHRONOUS" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="event-ordering-type">
<xs:restriction base="xs:string">
<xs:enumeration value="UNORDERED" />
<xs:enumeration value="ORDERED" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="event-type">
<xs:restriction base="xs:string">
<xs:enumeration value="EVICTED" />
<xs:enumeration value="EXPIRED" />
<xs:enumeration value="REMOVED" />
<xs:enumeration value="CREATED" />
<xs:enumeration value="UPDATED" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fqcn-type">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="propertyOrString">
<xs:annotation>
<xs:appinfo>
<jaxb:javaType name="java.lang.String" parseMethod="org.ehcache.xml.JaxbParsers.parsePropertyOrString"/>
</xs:appinfo>
</xs:annotation>
<xs:union memberTypes="ehcache:propertyReference">
<xs:simpleType>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="propertyOrPositiveInteger">
<xs:annotation>
<xs:appinfo>
<jaxb:javaType name="java.math.BigInteger" parseMethod="org.ehcache.xml.JaxbParsers.parsePropertyOrPositiveInteger"/>
</xs:appinfo>
</xs:annotation>
<xs:union memberTypes="ehcache:propertyReference xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="propertyOrNonNegativeInteger">
<xs:annotation>
<xs:appinfo>
<jaxb:javaType name="java.math.BigInteger" parseMethod="org.ehcache.xml.JaxbParsers.parsePropertyOrNonNegativeInteger"/>
</xs:appinfo>
</xs:annotation>
<xs:union memberTypes="ehcache:propertyReference xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="stringWithProperties">
<xs:annotation>
<xs:appinfo>
<jaxb:javaType name="java.lang.String" parseMethod="org.ehcache.xml.JaxbParsers.parseStringWithProperties"/>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="propertyReference">
<xs:restriction base="xs:string">
<xs:pattern value="\s*$\{[^{}]+\}\s*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
JSR-107 extension
<xs:schema version="1.0"
xmlns:jsr107="http://www.ehcache.org/v3/jsr107"
xmlns:eh="http://www.ehcache.org/v3"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="http://www.ehcache.org/v3/jsr107">
<xs:import namespace="http://www.ehcache.org/v3"/>
<xs:element name="mbeans" type="jsr107:mbeans-type" substitutionGroup="eh:service-configuration"/>
<xs:element name="defaults" type="jsr107:defaults-type" substitutionGroup="eh:service-creation-configuration">
<xs:key name="default-template-ref">
<xs:selector xpath="cache-template"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
<xs:complexType name="defaults-type">
<xs:sequence>
<xs:element name="cache" type="jsr107:cache-type" minOccurs="0" maxOccurs="unbounded">
<xs:key name="template-ref">
<xs:selector xpath="cache-template"/>
<xs:field xpath="@name"/>
</xs:key>
</xs:element>
</xs:sequence>
<xs:attribute name="default-template" type="xs:IDREF" use="optional"/>
<xs:attribute name="jsr-107-compliant-atomics" type="xs:boolean" use="optional"/>
<xs:attribute name="enable-management" type="xs:boolean" use="optional"/>
<xs:attribute name="enable-statistics" type="xs:boolean" use="optional"/>
</xs:complexType>
<xs:complexType name="cache-type">
<xs:attribute name="name" type="xs:ID" use="required" />
<xs:attribute name="template" type="xs:IDREF" use="required" />
</xs:complexType>
<xs:complexType name="mbeans-type">
<xs:attribute name="enable-management" type="xs:boolean" use="optional"/>
<xs:attribute name="enable-statistics" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:schema>
XA transactions extension
<xs:schema version="1.0"
xmlns:tx="http://www.ehcache.org/v3/tx"
xmlns:eh="http://www.ehcache.org/v3"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://www.ehcache.org/v3/tx">
<xs:import namespace="http://www.ehcache.org/v3"/>
<xs:element name="xa-store" type="tx:xa-store-config-type" substitutionGroup="eh:service-configuration"/>
<xs:element name="jta-tm" type="tx:jta-tm-type" substitutionGroup="eh:service-creation-configuration"/>
<xs:complexType name="xa-store-config-type">
<xs:attribute name="unique-XAResource-id" type="eh:propertyOrString" use="required"/>
</xs:complexType>
<xs:complexType name="jta-tm-type">
<xs:attribute name="transaction-manager-lookup-class" type="eh:fqcn-type" use="required"/>
</xs:complexType>
</xs:schema>