Пример файла конфигурации приложения - cluster-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<avalanche name="cluster 1.0.0"
buildInfo="ru.app.demo.cluster.BuildInfo.properties"
version="1.0.0"
description="Демонстрационное кластерное WEB приложение">
<!-- Определение файлов локализации приложения -->
<locale name="ru.funsys.avalanche.cluster.LocaleStrings" />
<locale name="ru.funsys.avalanche.rs.LocaleStrings" />
<locale name="ru.app.demo.cluster.LocaleStrings" />
<!-- Доступ к БД -->
<!-- Параметры: -->
<!-- class - имя класса элемента конфигурации -->
<!-- name - имя, под которым этот элемент конфигурации будет известен другим -->
<!-- локальным элементам конфигурации приложения -->
<!-- logger - имя логгера (файла журнала), это имя должно присутствовать в -->
<!-- конфигурации log4j. По умолчанию: ROOT логгер -->
<!-- resource - полное JNDI имя источника данных, которое определяется в -->
<!-- конфигурации WEB сервера -->
<!-- description - описание назначения элемента конфигурации -->
<!-- function - роль функции, true - может быть использована в других секциях -->
<!-- <application> -->
<application class="ru.funsys.avalanche.sql.Database" name="database" description="Функция доступа к БД"
resource="java:/comp/env/jdbc/demo" function="true">
</application>
<!-- Кластер: Понятие кластер объединяет множество хостов. -->
<!-- Узел кластера: Узел кластера создается автоматически. Узлу кластера присваивается имя -->
<!-- хоста -->
<!-- Параметры кластера: -->
<!-- class - имя класса элемента конфигурации -->
<!-- name - имя кластера под которым этот элемент конфигурации будет -->
<!-- известен другим локальным элементам конфигурации. Разные узлы -->
<!-- кластера должны иметь одно и то же имя для их автоматического -->
<!-- объединения в один кластер. -->
<!-- logger - имя логгера (файла журнала), это имя должно присутствовать в -->
<!-- конфигурации log4j. По умолчанию: ROOT логгер -->
<!-- lockbackMode - эта опция используется сетевым кодом платформы как подсказка для -->
<!-- установки того, будут ли многоадресные данные передаваться -->
<!-- обратно в локальный сокет. По умолчанию: false -->
<!-- networkInterface - локальный адрес сетевого интерфейса, который будет использоваться -->
<!-- для открытия UDP сокета для приема данных многоадресной рассылки. -->
<!-- Если в узле (хосте) более 1 сетевого интерфейса или определено -->
<!-- более 1 IP адреса на одном интерфейсе, то требуется обязательно -->
<!-- определить этот параметр. Обязательно нужно явно указать значение -->
<!-- MTU у сетевого интерфейса (отключить режим auto) -->
<!-- multicast - IP адрес многоадресной рассылки. По умолчанию: 239.52.1.1 -->
<!-- multicastPort - UDP порт многоадресной рассылки. По умолчанию: 8081 -->
<!-- size - размер буфера приема пакетов по UDP сокету. По умолчанию: 4096 -->
<!-- TTL - устанавливает время жизни многоадресных пакетов (число "прыжков"),-->
<!-- отправляемых через MulticastSocket. Значение TTL должно -->
<!-- находиться в диапазоне 0 <= TTL <=255. По умолчанию: 1 -->
<!-- nodeUp - запускать или нет узел кластера при старте приложения. Если -->
<!-- указанно значение false, то узел кластера не запускается. -->
<!-- В дальнейшем узел кластера можно запустить средствами управления -->
<!-- кластера. По умолчанию: true -->
<!-- controlTimeout - таймаут контроля состояния узлов кластера в мс. -->
<!-- По умолчанию: 30000 -->
<!-- timeout - таймаут при запуске и остановке узла кластера в мс. Необходим для -->
<!-- ожидания завершения инициализации или освобождения используемых -->
<!-- в кластере других элементов конфигурации. По умолчанию: 2000 -->
<!-- description - описание назначения элемента конфигурации -->
<!-- -->
<!-- Адаптеры: определяют доступные локальные и удаленные элементы конфигурации ресурсам -->
<!-- кластера. В ресурсе кластера должно использоваться имя поля класса, -->
<!-- аналогичное имени адаптера -->
<!-- database - адаптер доступа к БД, используется при выполнении тестового запроса -->
<!-- -->
<!-- Группы: группа объединяет в себе множество ресурсов кластера. В кластере может быть -->
<!-- определено множество групп -->
<application class="ru.funsys.avalanche.cluster.Cluster"
name="cluster"
lockbackMode="false"
networkInterface="192.168.0.80"
description="Кластер планировщика заданий ВРП">
<!-- Параметры адаптера: -->
<!-- class - имя класса адаптера (элемента конфигурации) -->
<!-- name - имя адаптера, должно совпадать с именами полей в классах -->
<!-- реализации ресурсов -->
<!-- uri - имя локального или удаленного элемента конфигурации. Адресация -->
<!-- локального элемента указывается именем локального элемента. -->
<!-- Адресация удаленного элемента конфигурации указывается -->
<!-- составным именем "имя локального интерфейса"/"имя удаленного -->
<!-- элемента publish" -->
<!-- description - описание назначения элемента конфигурации -->
<adapter class="ru.funsys.avalanche.sql.Adapter"
name="database"
uri="database"
description="Адаптер доступа у БД" />
<!-- Группа ресурсов, которые выполняются только на одном узле -->
<!-- -->
<!-- Параметры группы: -->
<!-- class - имя класса группы, если не указана, то используется класс -->
<!-- по умолчанию -->
<!-- name - имя группы, на всех узлах должно быть указано одно и то же -->
<!-- имя. -->
<!-- single - признак запуска группы только на одном узле кластера. -->
<!-- По умолчанию: false -->
<!-- description - описание назначения элемента конфигурации -->
<!-- -->
<!-- Ресурсы группы: множество ресурсов группы. На всех узлах в одной и той же -->
<!-- группе должны быть определены одни и те же ресурсы. У каждого -->
<!-- ресурса группы могут быть свои индивидуальные параметры -->
<!-- конфигурации -->
<group name="single"
single="true"
description="Группа ресурсов кластера, выполняющихся только на одном узле">
<!-- Параметры ресурса кластера зависят от реализации. -->
<!-- В демонстрационном ресурсе кластера какие либо параметры не определены -->
<!-- class - имя класса планировщика заданий -->
<!-- name - имя планировщика заданий, на всех узлах должно быть -->
<!-- description - описание назначения элемента конфигурации -->
<!-- timeout - таймаут выполнения пока кластерного ресурса в мс. -->
<!-- По умолчанию: 2000 -->
<!-- sql - SQL запрос демонстрации работы с БД -->
<resource name="singleResource"
sql="select 'test' as test"
class="ru.app.demo.cluster.app.DemoResource"
description="Демонстрационный ресурс кластера">
</resource>
</group>
<!-- Группа ресурсов, которые выполняются на всех узлах -->
<!-- Описание параметров см. выше -->
<group name="all"
description="Группа ресурсов кластера, выполняющихся только на каждом узле">
<!-- Ресурс, который выполняются на всех узлах -->
<!-- Описание параметров см. выше -->
<resource name="allNodes"
timeout="30000"
sql="select 'test' as test"
class="ru.app.demo.cluster.app.DemoResource"
description="Демонстрационный ресурс кластера">
</resource>
</group>
</application>
<!-- Демонстрация выполнения кластерного ресурса вне кластера -->
<!-- Описание параметров см. выше -->
<application name="outCluster"
timeout="40000"
sql="select 'test' as test"
class="ru.app.demo.cluster.app.DemoResource"
description="Демонстрационный ресурс, выполняющийся вне кластера">
<adapter class="ru.funsys.avalanche.sql.Adapter"
name="database"
uri="database"
description="Адаптер доступа у БД" />
</application>
</avalanche>