blob: cf2ab4abcb3562354a9c9634e8c7d74458c6d707 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.terracotta.org/config"
xmlns="http://www.terracotta.org/config" version="4">
<xs:element name="tc-config">
<xs:complexType>
<xs:all>
<xs:element name="system" type="system" minOccurs="0">
<xs:annotation>
<xs:documentation>
The 'system' section contains configuration
data that affects the entire Terracotta
system as a whole; things like the configuration
mode go here.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="servers" type="servers" minOccurs="0">
<xs:annotation>
<xs:documentation>
This section defines the servers present
in your Terracotta system. You can omit
this section entirely, in which case it
behaves as if there's a single server
with all values set at their default.
You can include exactly one server entry
here (the common case), or, if you're
going to run multiple servers for
failover, you can include multiple
servers here.
If you include more than one server
here, note that each server will need to
know which configuration it should use
as it starts up. If you name your
servers according to the host that they
run on (and no host contains more than
one server), then they will find the
hostname themselves and work
automatically.
If you name your servers in any other
fashion (and, again, only if there is
more than one 'server' element present
here), then you will need to pass the
command-line option "-n <![CDATA[ <name>]]>"
to the start-tc-server script, passing
it the name of a server configuration
from this file.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="clients" type="client" minOccurs="0">
<xs:annotation>
<xs:documentation>
This section contains settings that affect
all clients that connect to the system.
Note that while these settings are applied
uniformly across all clients, this does not
prevent you from applying different settings
to various clients. There are two ways of
doing this:
Certain parameters ('logs', below) undergo
parameter expansion before being used by the
client. This allows you to use various
predefined substitutions (like '%h' for
host), or a general one (%(myprop) to use
the value of Java system property 'myprop'),
for these values; expansions are carried out
in each client's JVM independently.
For each client to have its own
configuration you can set 'tc.config' to the
configuration file. If the configuration
model is production then the 'application'
section for all of the clients comes from
the application section of the server's
config file.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="application" type="application" minOccurs="0">
<xs:annotation>
<xs:documentation>
This section contains items that affect the
core behavior of Terracotta as it relates to
your application. This data must be kept
consistent across clients and servers in
order for Terracotta to function properly,
and so the system will enforce this.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="class-expression">
<xs:restriction base="xs:token">
<xs:pattern value="(@[A-Za-z_0-9$\*\.]+ )*[@A-Za-z_0-9$\*\.]+\+?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="method-expression">
<xs:restriction base="xs:token">
<xs:pattern value="(@[A-Za-z_0-9$\*\.]+ )*([A-Za-z_0-9$\*\.\[\] \+]+ )[A-Za-z_0-9$\*\.\+]+(\([A-Za-z_0-9$,\*\. \[\]]*\))"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="field-expression">
<xs:restriction base="xs:token">
<xs:pattern value="(@[A-Za-z_0-9$\*\.]+ ){0,1}([A-Za-z_0-9$\*\.\[\] \+]){2,}"/>
</xs:restriction>
</xs:simpleType>
<!--
<xs:simpleType name="method-name-expression">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_0-9$\. \[\]]+(\([A-Za-z_0-9$,\. \[\]]*\))" />
</xs:restriction>
</xs:simpleType>
-->
<xs:simpleType name="web-application-name-expression">
<xs:restriction base="xs:token">
<xs:pattern value="[^\*]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lock-level">
<xs:restriction base="xs:token">
<xs:enumeration value="write" />
<xs:enumeration value="read" />
<xs:enumeration value="concurrent" />
<xs:enumeration value="synchronous-write" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="named-lock">
<xs:all>
<xs:element name="lock-name" type="java-identifier" />
<xs:element name="method-expression" type="method-expression" />
<xs:element name="lock-level" type="lock-level" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="autolock">
<xs:all>
<xs:element name="method-expression" type="method-expression" />
<xs:element name="lock-level" type="lock-level" minOccurs="0" />
</xs:all>
<xs:attribute name="auto-synchronized" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="locks">
<xs:sequence maxOccurs="unbounded">
<xs:element name="autolock" type="autolock" minOccurs="0" />
<xs:element name="named-lock" type="named-lock" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="root">
<xs:annotation>
<xs:documentation>
Declares a DSO root. A root can have a name that defaults to its fully
qualified field name.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="root-name" type="java-identifier" minOccurs="0" />
<xs:element name="field-name" type="qualified-field-name" maxOccurs="1" minOccurs="0"/>
<xs:element name="field-expression" type="field-expression" maxOccurs="1" minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="roots">
<xs:sequence>
<xs:element name="root" type="root" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="include">
<xs:all>
<xs:element name="class-expression" type="class-expression" />
<xs:element name="honor-transient" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="on-load" type="on-load" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="on-load">
<xs:choice>
<xs:element name="execute" type="xs:string" />
<xs:element name="method" type="method-name" />
</xs:choice>
</xs:complexType>
<xs:complexType name="instrumented-classes">
<xs:sequence maxOccurs="unbounded">
<xs:element name="include" type="include" minOccurs="0" />
<xs:element name="exclude" type="class-expression" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="distributed-methods">
<xs:sequence>
<xs:element name="method-expression" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="method-expression">
<xs:attribute name="run-on-all-nodes" type="xs:boolean" use="optional" default="true"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="web-applications">
<xs:sequence>
<xs:element name="web-application" type="web-application" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="web-application">
<xs:simpleContent>
<xs:extension base="web-application-name-expression">
<xs:attribute name="synchronous-write" type="xs:boolean" use="optional" default="false" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="instrumentation-logging">
<xs:all>
<xs:element name="class" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="hierarchy" type="xs:boolean" minOccurs="0" default="true" />
<xs:element name="locks" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="transient-root" type="xs:boolean" minOccurs="0" default="true" />
<xs:element name="roots" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="distributed-methods" type="xs:boolean" minOccurs="0" default="false" />
</xs:all>
</xs:complexType>
<xs:complexType name="runtime-logging">
<xs:all>
<xs:element name="non-portable-dump" type="xs:boolean" minOccurs="0" default="true">
<xs:annotation>
<xs:documentation xmlns="http://www.w3.org/1999/xhtml">
When an attempt is made to distribute a non-portable object, the object (and any objects
to which it refers) will be logged in the terracotta log file.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="lock-debug" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="field-change-debug" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="wait-notify-debug" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="distributed-method-debug" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="new-object-debug" type="xs:boolean" minOccurs="0" default="false" />
</xs:all>
</xs:complexType>
<xs:complexType name="additional-boot-jar-classes">
<xs:sequence>
<xs:element name="include" type="qualified-class-name" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="transient-fields">
<xs:sequence>
<xs:element name="field-name" type="qualified-field-name" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="runtime-output-options">
<xs:all>
<xs:element name="auto-lock-details" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="caller" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="full-stack" type="xs:boolean" minOccurs="0" default="false" />
</xs:all>
</xs:complexType>
<xs:complexType name="dso-client-debugging">
<xs:all>
<xs:element name="instrumentation-logging" type="instrumentation-logging" minOccurs="0" />
<xs:element name="runtime-logging" type="runtime-logging" minOccurs="0" />
<xs:element name="runtime-output-options" type="runtime-output-options" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="dso-client-data">
<xs:all>
<xs:element name="fault-count" type="non-negative-int" default="500" minOccurs="0" />
<xs:element name="debugging" type="dso-client-debugging" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="garbage-collection">
<xs:all>
<xs:element name="enabled" type="xs:boolean" minOccurs="0" default="true" />
<xs:element name="verbose" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="interval" type="positive-int" minOccurs="0" default="3600" />
</xs:all>
</xs:complexType>
<xs:simpleType name="persistence-mode">
<xs:restriction base="xs:token">
<xs:enumeration value="temporary-swap-only" />
<xs:enumeration value="permanent-store" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="persistence">
<xs:all>
<xs:element name="mode" type="persistence-mode" minOccurs="0" default="temporary-swap-only" />
</xs:all>
</xs:complexType>
<xs:complexType name="dso-server-data">
<xs:all>
<xs:element name="client-reconnect-window" type="positive-int" minOccurs="0" default="120" />
<xs:element name="persistence" type="persistence" minOccurs="0"/>
<xs:element name="garbage-collection" type="garbage-collection" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="module">
<xs:annotation>
<xs:documentation>
Identifies a module/version to use, this module must be located
in either a) the default repository shipped with Terracotta or
b) one of the repositories listed in the <![CDATA[<module>]]>
section.
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="version" type="xs:string" />
<xs:attribute name="group-id" type="xs:string" default="org.terracotta.modules" />
</xs:complexType>
<xs:complexType name="modules">
<xs:sequence maxOccurs="unbounded">
<xs:element name="repository" type="xs:anyURI" minOccurs="0" />
<xs:element name="module" type="module" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="dso-application">
<xs:all>
<xs:element name="instrumented-classes" type="instrumented-classes" minOccurs="0" />
<xs:element name="transient-fields" type="transient-fields" minOccurs="0" />
<xs:element name="locks" type="locks" minOccurs="0" />
<xs:element name="roots" type="roots" minOccurs="0" />
<xs:element name="distributed-methods" type="distributed-methods" minOccurs="0" />
<xs:element name="additional-boot-jar-classes" type="additional-boot-jar-classes" minOccurs="0" />
<xs:element name="web-applications" type="web-applications" minOccurs="0" />
<xs:element name="dso-reflection-enabled" type="xs:boolean" minOccurs="0" default="true"/>
</xs:all>
</xs:complexType>
<xs:complexType name="spring-application">
<xs:sequence>
<xs:element name="jee-application" type="spring-apps" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="spring-bean">
<xs:sequence>
<xs:element name="bean" type="non-distributed-fields" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="non-distributed-fields">
<xs:sequence>
<xs:element name="non-distributed-field" type="java-identifier" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="spring-app-contexts">
<xs:sequence>
<xs:element name="application-context" type="spring-app-context" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="spring-distributed-event">
<xs:sequence>
<xs:element name="distributed-event" type="non-blank-token" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="spring-app-context">
<xs:all>
<xs:element name="root-name" type="java-identifier" minOccurs="0"/>
<xs:element name="enable-location-info" type="xs:boolean" minOccurs="0"/>
<xs:element name="paths" type="spring-path" />
<xs:element name="distributed-events" type="spring-distributed-event" minOccurs="0" />
<xs:element name="beans" type="spring-bean" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="spring-path">
<xs:sequence>
<xs:element name="path" type="path" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="spring-apps">
<xs:all>
<xs:element name="fast-proxy" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="session-support" type="xs:boolean" minOccurs="0" default="false" />
<xs:element name="locks" type="locks" minOccurs="0" />
<xs:element name="instrumented-classes" type="instrumented-classes" minOccurs="0" />
<xs:element name="application-contexts" type="spring-app-contexts" minOccurs="0" />
<xs:element name="transient-fields" type="transient-fields" minOccurs="0" />
</xs:all>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="authentication">
<xs:all>
<xs:element name="password-file" type="path" minOccurs="0"
default="%(java.home)/lib/management/jmxremote.password" />
<xs:element name="access-file" type="path" minOccurs="0"
default="%(java.home)/lib/management/jmxremote.access" />
</xs:all>
</xs:complexType>
<xs:complexType name="ha">
<xs:all>
<xs:element name="mode" type="ha-mode" minOccurs="0" default="disk-based-active-passive" />
<xs:element name="networked-active-passive" type="networked-active-passive" minOccurs="0" />
</xs:all>
</xs:complexType>
<xs:complexType name="networked-active-passive">
<xs:all>
<xs:element name="election-time" type="positive-int" minOccurs="0" default="5" />
</xs:all>
</xs:complexType>
<xs:complexType name="server">
<xs:annotation>
<xs:documentation xmlns="http://www.w3.org/1999/xhtml">
Data specific to one of your servers.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="authentication" type="authentication" minOccurs="0">
<xs:annotation>
<xs:documentation xmlns="http://www.w3.org/1999/xhtml"> Turn on authentication for the Terracotta server. An
empty tag &lt;authentication/&gt; defaults to the standard Java JMX authentication mechanism referring
to password and access files in: $JAVA_HOME/jre/lib/management.
<ul>
<li>$JAVA_HOME/jre/lib/management/jmxremote.password</li>
<li>$JAVA_HOME/jre/lib/management/jmxremote.access</li>
</ul>
You must modify these files as such (if none exist create them):
<p>jmxremote.password</p>
add a line to the end of the file declaring your username and password followed by a caridge return:
<p>secretusername secretpassword</p>
<p>jmxremote.access</p>
add the following line (with a caridge return) to the end of your file:
<p>secretusername readwrite</p>
You must also:<br/>
$ chmod 500 jmxremote.password<br/>
$ chown &lt;user who will execute the tc-server&gt; jmxremote.password
<br/><br/>
NOTE: This will not work unless you're correctly running the Terracotta server with Java version >= 1.5
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="data" type="path" minOccurs="0"
default="data">
<xs:annotation>
<xs:documentation>
Where should the server store its persistent
data? (This includes stored object data for
DSO.) This value undergoes parameter
substitution before being used; this allows you
to use placeholders like '%h' (for the hostname)
or '%(com.mycompany.propname)' (to substitute in
the value of Java system property
'com.mycompany.propname'). Thus, a value of
'server-data-%h' would expand to
'server-data-artichoke' if running on host
'artichoke'.
If this is a relative path, then it is
interpreted relative to the current working
directory of the server (that is, the directory
you were in when you started the server). It is
thus recommended that you specify an absolute
path here.
Default: 'data'
This places the 'data' directory in the
directory you were in when you invoked
'start-tc-server'.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="logs" type="path" minOccurs="0"
default="logs">
<xs:annotation>
<xs:documentation>
In which directory should the server store its
log files? Again, this value undergoes parameter
substitution before being used; thus, a value
like 'server-logs-%h' would expand to
'server-logs-artichoke' if running on host
'artichoke'.
If this is a relative path, then it is
interpreted relative to the current working
directory of the server (that is, the directory
you were in when you started server). It is thus
recommended that you specify an absolute path
here.
Default: 'logs'
This places the 'logs' directory in the
directory you were in when you invoked
'start-tc-server'.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dso-port" type="port" minOccurs="0"
default="9510">
<xs:annotation>
<xs:documentation>
On what port should the DSO server listen for
connections from DSO clients? This can be any
port you like, but note that ports below 1024
typically require 'root' privileges to use on
Unix-style systems (Linux, Solaris).
Default:9510
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="jmx-port" type="port" minOccurs="0"
default="9520">
<xs:annotation>
<xs:documentation>
On what port should the server listen for
connections from the Terracotta administration
console? This can be any port you like, but note
that ports below 1024 typically require 'root'
privileges to use on Unix-style systems (Linux,
Solaris).
Default: 9520
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="l2-group-port" type="port" minOccurs="0" default="9530">
<xs:annotation>
<xs:documentation>
Port for server to server communication which must
be indicated when HA mode is networked-active-passive.
This can be any port you like, but note that ports
below 1024 typically require 'root' privileges to
use on Unix-style systems (Linux, Solaris).
Default: 9530
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dso" type="dso-server-data"
minOccurs="0">
<xs:annotation>
<xs:documentation>
Configuration data for DSO that's specific to
the DSO server.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="host" type="host" use="optional">
<xs:annotation>
<xs:documentation>
The host that the server runs on, expansion parameters
may be used in this attribute. Defaults to "%i" (the
machine IP address).
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="non-blank-token"
use="optional">
<xs:annotation>
<xs:documentation>
The symbolic name of the server, expansion parameters may
be used. Defaults to "host:dso-port".
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="client">
<xs:annotation>
<xs:documentation>
This section contains settings that affect all clients
that connect to the system.
Note that while these settings are applied uniformly
across all clients, this does not prevent you from
applying different settings to various clients. There
are two ways of doing this:
- Certain parameters ('logs', below) undergo parameter
expansion before being used by the client. This allows
you to use various predefined substitutions (like '%h'
for host), or a general one (%(myprop) to use the value
of Java system property 'myprop'), for these values;
expansions are carried out in each client's JVM
independently.
- For each client to have its own configuration you can
set 'tc.config' to the configuration file. If the
configuration model is production then the 'application'
section for all of the clients comes from the
application section of the server's config file.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="modules" type="modules"
minOccurs="0">
<xs:annotation>
<xs:documentation>
This section contains the list of modules to use in
the client.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="logs" type="path" minOccurs="0"
default="logs-%i">
<xs:annotation>
<xs:documentation>
Where should the client write its log files?
This value undergoes parameter substitution
before being used; thus, a value like
'client-logs-%h' would expand to
'client-logs-banana' if running on host
'banana'.
If this is a relative path, then it is
interpreted relative to the current working
directory of the client (that is, the directory
you were in when you started the program that
uses Terracotta services). It is thus
recommended that you specify an absolute path
here.
Default: 'logs-%i';
this places the logs in a directory relative to
the directory you were in when you invoked the
program that uses Terracotta services (your
client), and calls that directory, for example,
'logs-10.0.0.57' if the machine that the client
is on has assigned IP address 10.0.0.57.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dso" type="dso-client-data"
minOccurs="0">
<xs:annotation>
<xs:documentation>
This section contains data for Terracotta DSO
that's specific to the DSO client only.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="application">
<xs:annotation>
<xs:documentation>
This section contains items that affect the core
behavior of Terracotta as it relates to your
application. This data must be kept consistent across
clients and servers in order for Terracotta to function
properly, and so the system will enforce this; see the
comments for the 'configuration-model' switch, above,
for more details.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="dso" type="dso-application"
minOccurs="0">
<xs:annotation>
<xs:documentation>
This section controls how Terracotta DSO behaves
in your application.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="spring" type="spring-application"
minOccurs="0">
<xs:annotation>
<xs:documentation>
This section is a self-contained configuration
that controls how Terracotta for Spring behaves in
your application.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="servers">
<xs:annotation>
<xs:documentation>
This section defines the servers present in your
Terracotta system. You can omit this section entirely, in
which case it behaves as if there's a single server with
all values set at their default. You can include exactly
one server entry here (the common case), or, if you're
going to run multiple servers for failover, you can
include multiple servers here.
If you include more than one server here, note that each
server will need to know which configuration it should use
as it starts up. If you name your servers according to the
host that they run on (and no host contains more than one
server), then they will find the hostname themselves and
work automatically.
If you name your servers in any other fashion (and, again,
only if there is more than one 'server' element present
here), then you will need to pass the command-line option
"-n
<![CDATA[ <name>]]>
" to the start-tc-server script, passing it the name of a
server configuration from this file.
</xs:documentation>
</xs:annotation>
<xs:sequence maxOccurs="1">
<xs:sequence>
<xs:element name="server" type="server"
maxOccurs="unbounded" />
</xs:sequence>
<xs:element name="ha" type="ha" maxOccurs="1" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="configuration-model">
<xs:annotation>
<xs:documentation>
The configuration model: 'development' or 'production'.
The clients can each have their own configuration
file or all use the server's configuration file.
The server's configuration file is located at
http://localhost:9515/config
If the configuration model is production then the
'application' section for all of the clients comes
from the application section of the server's config
file.
If the configuration model is development then each
of the clients's 'application' section is determined
by their own configuration file.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="development" />
<xs:enumeration value="production" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="license-type">
<xs:annotation>
<xs:documentation>
What type of license is in use? This can be 'trial' or
'production', and does not affect the behavior of the
system other than ensuring that the license in use
matches this type. (This prevents you from accidentally
putting a trial license onto your production server and
then panicking thirty days later when that license
expires.)
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:enumeration value="none" />
<xs:enumeration value="trial" />
<xs:enumeration value="production" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="license">
<xs:all>
<xs:element name="location" type="path">
<xs:annotation>
<xs:documentation>
Where is the license file? Each server must have
access to this file (which may be a relative or
absolute path). This item can use parameter
substitution, which allows you to insert data
like '%h' and have it expand to the current
hostname; this allows flexibility in the case
where different servers have their license file
in different locations.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="type" type="license-type"
default="none">
<xs:annotation>
<xs:documentation>
What type of license is in use? This can be
'trial' or 'production', and does not affect the
behavior of the system other than ensuring that
the license in use matches this type. (This
prevents you from accidentally putting a trial
license onto your production server and then
panicking thirty days later when that license
expires.)
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="system">
<xs:annotation>
<xs:documentation>
The 'system' section contains configuration data that
affects the entire Terracotta system as a whole; things
like whether to activate DSO services go here.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="license" type="license" minOccurs="0">
<xs:annotation>
<xs:documentation>
The 'license' element requires a 'location' and
'type' to be specified. If you omit the
'license' element, Terracotta will run in a
limited 'initial' mode, which limits server
runtime and limits the maximum number of
simultaneously-connected clients.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="configuration-model"
type="configuration-model" minOccurs="0" default="development" />
</xs:all>
</xs:complexType>
<xs:simpleType name="ha-mode">
<xs:restriction base="xs:token">
<xs:enumeration value="networked-active-passive" />
<xs:enumeration value="disk-based-active-passive" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="non-blank-token">
<xs:restriction base="xs:token">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="path">
<xs:annotation>
<xs:documentation>
Several different predefined substitutions are available
for your use:
%h expands to the fully-qualified host name of the
machine running your application
%i expands to the IP adress of the machine running
your application
%H refers to the home directory of the user running
running your application
%n refers to the username of the user running
running your application
%o refers to the name of the operating system
running running your application
%a refers to the processor architecture of the
machine running running your application %v refers
to the version of the operating system running
running your application
%t refers to the temporary directory of the machine
running your application(on Linux or Solaris, e.g.,
/tmp)
%(property) refers to the java system property of
the JVM running on the machine(e.g. %(java.home) )
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fixed-string-unlimited">
<xs:restriction base="xs:token">
<xs:enumeration value="unlimited" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fixed-string-none">
<xs:restriction base="xs:token">
<xs:enumeration value="none" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="positive-int">
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="2147483647" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="non-negative-int">
<xs:restriction base="xs:nonNegativeInteger">
<xs:maxInclusive value="2147483647" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="positive-int-or-none">
<xs:union memberTypes="positive-int fixed-string-none" />
</xs:simpleType>
<xs:simpleType name="port">
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="0" />
<xs:maxInclusive value="65535" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="host">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<xs:minLength value="1" />
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="qualified-class-name">
<xs:restriction base="xs:token">
<xs:pattern
value="[A-Za-z_][A-Za-z_0-9$]*(\.[A-Za-z_][A-Za-z_0-9$]*)*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="class-name">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][A-Za-z_0-9$]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="qualified-field-name">
<xs:restriction base="xs:token">
<xs:pattern
value="[A-Za-z_][A-Za-z_0-9$]*(\.[A-Za-z_][A-Za-z_0-9$]*)+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="field-name">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][A-Za-z_0-9$]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="method-name">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][A-Za-z_0-9$]*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="qualified-method-name">
<xs:restriction base="xs:token">
<xs:pattern
value="[A-Za-z_][A-Za-z_0-9$]*(\.[A-Za-z_][A-Za-z_0-9$]*)+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="optionally-qualified-method-name">
<xs:restriction base="xs:token">
<xs:pattern
value="[A-Za-z_][A-Za-z_0-9$]*(\.[A-Za-z_][A-Za-z_0-9$]*)*" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="java-identifier">
<xs:restriction base="xs:token">
<xs:pattern value="[A-Za-z_][A-Za-z_0-9$]*" />
</xs:restriction>
</xs:simpleType>
<xs:element name="dso" type="dso-application">
<xs:annotation>
<xs:documentation>
Terracotta Plug-in configuration element
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>