Пример файла конфигурации приложения - 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>