My favorites | Sign in
Project Logo
             
Search
for
Updated Jan 10, 2008 by vmatters
SpringConfigXml  

This is an example of how to wire Broadway components using the Spring framework. This file shows couple of observed resources, a monitor and an Action component wired to create a file synchronizer. The Spring Timer section can be replace with your own Timer task if you don't want to have the Spring dependency at all.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	http://www.springframework.org/schema/lang
	http://www.springframework.org/schema/lang/spring-lang-2.0.xsd">

	<!-- ====================== Observed Resources ======================= -->
	<bean id="firstDir"
		class="org.broadway.demo.spring.ObservedDirectory">
		<property name="directoryName" value="./dir1" />
	</bean>
	<bean id="secondDir"
		class="org.broadway.demo.spring.ObservedDirectory">
		<property name="directoryName" value="./dir2" />
	</bean>

	<!-- ======================= Monitor Setup ========================== -->
	<bean id="monitor" class="org.broadway.monitor.BeanMonitor">
		<property name="monitorExpression">
			<value><![CDATA[context.resources.firstDir.directorySize != context.resources.secondDir.directorySize]]></value>
		</property>

		<property name="action" ref="groovyAction"/>
		<property name="resourceCollector">
			<bean
				class="org.broadway.monitor.MappedResourceCollector">
				<property name="resources">
					<map>
						<entry key="firstDir"  value-ref="firstDir" />
						<entry key="secondDir" value-ref="secondDir" />
					</map>
				</property>
			</bean>
		</property>
	</bean>


	<!-- ======================= Monitor Action ========================== -->
	<bean id="scriptedAction"
		class="org.broadway.monitor.ScriptedAction">
		<property name="scriptFileLocation" value="scripts/synchronizeDir.groovy" />
	</bean>

	<lang:groovy id="groovyAction" script-source="classpath:scripts/SyncAction.groovy"/>

	<!-- ===================== Spring Timer Boilerplate Stuff ==================== -->
	<bean id="timerFactory"
		class="org.springframework.scheduling.timer.TimerFactoryBean">
		<property name="scheduledTimerTasks">
			<list>
				<ref bean="scheduledTimerTask" />
			</list>
		</property>
	</bean>

	<bean id="scheduledTimerTask"
		class="org.springframework.scheduling.timer.ScheduledTimerTask">
		<property name="period" value="2000" />
		<property name="timerTask" ref="timer" />
	</bean>

	<bean id="timer"
		class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
		<property name="targetObject" ref="monitor" />
		<property name="targetMethod" value="scan" />
	</bean>


</beans>

Sign in to add a comment
Hosted by Google Code